|
From: Pierre-Luc B. <pie...@sa...> - 2009-07-14 15:18:27
|
Calling leave() makes our application to wait for 10 sec. This can be a
problem as a user might want to restart the application during that
10sec time frame. From eventloop.cpp, I see that:
int wait_min = 10000;
158
159 DefaultTimeouts::iterator ti;
160
161 _mutex_t.lock();
162
163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) {
164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min)
165 wait_min = (*ti)->interval();
166 }
167
168 _mutex_t.unlock();
169
170 poll (fds, nfd, wait_min);
>From what I get of this portion of code, it loops to find the
DefaultTimeout with the smallest time interval, then poll with that
value.
Is this meant to be used internally for dbus-c++ only or could we
add_timeout(Timeout::Internal *) without fear of breaking the eventloop
mechanism ?
Since:
while (_running) {
do_iteration();
}
in enter() (eventloop-integration.cpp) and:
void BusDispatcher::leave()
{
_running = false;
}
wouldn't it be better to think of another way to leave the event loop in
a more instantaneous manner ?
Pierre-Luc Bacon,
Savoir-Faire Linux
http://www.sflphone.org
|
|
From: Redouane S. <red...@fr...> - 2009-07-14 18:05:36
|
I already submitted a patch for that but it was for an old version of
libdbus-c++.
The way to fix this issue is to add a file descriptor (a pipe) to the file
descriptors we poll (fds).
Then when we call leave() function we write in the pipe and it'll unblock
the poll call.
Regards.
-----Message d'origine-----
De : Pierre-Luc Bacon [mailto:pie...@sa...]
Envoyé : mardi 14 juillet 2009 17:01
À : dbu...@li...
Objet : [dbus-cplusplus-devel] leave() timeout
Calling leave() makes our application to wait for 10 sec. This can be a
problem as a user might want to restart the application during that
10sec time frame. From eventloop.cpp, I see that:
int wait_min = 10000;
158
159 DefaultTimeouts::iterator ti;
160
161 _mutex_t.lock();
162
163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) {
164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min)
165 wait_min = (*ti)->interval();
166 }
167
168 _mutex_t.unlock();
169
170 poll (fds, nfd, wait_min);
>From what I get of this portion of code, it loops to find the
DefaultTimeout with the smallest time interval, then poll with that
value.
Is this meant to be used internally for dbus-c++ only or could we
add_timeout(Timeout::Internal *) without fear of breaking the eventloop
mechanism ?
Since:
while (_running) {
do_iteration();
}
in enter() (eventloop-integration.cpp) and:
void BusDispatcher::leave()
{
_running = false;
}
wouldn't it be better to think of another way to leave the event loop in
a more instantaneous manner ?
Pierre-Luc Bacon,
Savoir-Faire Linux
http://www.sflphone.org
----------------------------------------------------------------------------
--
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
dbus-cplusplus-devel mailing list
dbu...@li...
https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel
|
|
From: Pierre-Luc B. <pie...@sa...> - 2009-07-17 23:18:15
|
This solution was implemented and a new patch was made: https://sourceforge.net/tracker/?func=detail&aid=2823377&group_id=236997&atid=1101684 On Tue, 2009-07-14 at 20:17 +0200, Redouane SOUM wrote: > I already submitted a patch for that but it was for an old version of > libdbus-c++. > > The way to fix this issue is to add a file descriptor (a pipe) to the file > descriptors we poll (fds). > Then when we call leave() function we write in the pipe and it'll unblock > the poll call. > > Regards. > > > > -----Message d'origine----- > De : Pierre-Luc Bacon [mailto:pie...@sa...] > Envoyé : mardi 14 juillet 2009 17:01 > À : dbu...@li... > Objet : [dbus-cplusplus-devel] leave() timeout > > Calling leave() makes our application to wait for 10 sec. This can be a > problem as a user might want to restart the application during that > 10sec time frame. From eventloop.cpp, I see that: > > int wait_min = 10000; > 158 > 159 DefaultTimeouts::iterator ti; > 160 > 161 _mutex_t.lock(); > 162 > 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { > 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) > 165 wait_min = (*ti)->interval(); > 166 } > 167 > 168 _mutex_t.unlock(); > 169 > 170 poll (fds, nfd, wait_min); > > >From what I get of this portion of code, it loops to find the > DefaultTimeout with the smallest time interval, then poll with that > value. > > Is this meant to be used internally for dbus-c++ only or could we > add_timeout(Timeout::Internal *) without fear of breaking the eventloop > mechanism ? > > Since: > > while (_running) { > do_iteration(); > } > > in enter() (eventloop-integration.cpp) and: > > void BusDispatcher::leave() > { > _running = false; > } > > wouldn't it be better to think of another way to leave the event loop in > a more instantaneous manner ? > > Pierre-Luc Bacon, > Savoir-Faire Linux > http://www.sflphone.org > > > ---------------------------------------------------------------------------- > -- > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel |
|
From: Andreas V. <li...@br...> - 2009-09-24 20:30:25
|
Am Fri, 17 Jul 2009 18:50:45 -0400 schrieb Pierre-Luc Bacon: Hello, Sorry that I react so late. Now I had some time to spend. But the patch doesn't apply to FDO or gitorious branch any longer. Could you adopt it to the mainline? Then I would apply it as it looks good so far after a first review. regards Andreas > This solution was implemented and a new patch was made: > https://sourceforge.net/tracker/?func=detail&aid=2823377&group_id=236997&atid=1101684 > > On Tue, 2009-07-14 at 20:17 +0200, Redouane SOUM wrote: > > I already submitted a patch for that but it was for an old version > > of libdbus-c++. > > > > The way to fix this issue is to add a file descriptor (a pipe) to > > the file descriptors we poll (fds). > > Then when we call leave() function we write in the pipe and it'll > > unblock the poll call. > > > > Regards. > > > > > > > > -----Message d'origine----- > > De : Pierre-Luc Bacon > > [mailto:pie...@sa...] Envoyé : mardi 14 > > juillet 2009 17:01 À : dbu...@li... > > Objet : [dbus-cplusplus-devel] leave() timeout > > > > Calling leave() makes our application to wait for 10 sec. This can > > be a problem as a user might want to restart the application during > > that 10sec time frame. From eventloop.cpp, I see that: > > > > int wait_min = 10000; > > 158 > > 159 DefaultTimeouts::iterator ti; > > 160 > > 161 _mutex_t.lock(); > > 162 > > 163 for (ti = _timeouts.begin(); ti != _timeouts.end(); ++ti) { > > 164 if ( (*ti)->enabled() && (*ti)->interval() < wait_min) > > 165 wait_min = (*ti)->interval(); > > 166 } > > 167 > > 168 _mutex_t.unlock(); > > 169 > > 170 poll (fds, nfd, wait_min); > > > > >From what I get of this portion of code, it loops to find the > > DefaultTimeout with the smallest time interval, then poll with that > > value. > > > > Is this meant to be used internally for dbus-c++ only or could we > > add_timeout(Timeout::Internal *) without fear of breaking the > > eventloop mechanism ? > > > > Since: > > > > while (_running) { > > do_iteration(); > > } > > > > in enter() (eventloop-integration.cpp) and: > > > > void BusDispatcher::leave() > > { > > _running = false; > > } > > > > wouldn't it be better to think of another way to leave the event > > loop in a more instantaneous manner ? > > > > Pierre-Luc Bacon, > > Savoir-Faire Linux > > http://www.sflphone.org > > > > > > ---------------------------------------------------------------------------- > > -- > > Enter the BlackBerry Developer Challenge > > This is your chance to win up to $100,000 in prizes! For a limited > > time, vendors submitting new applications to BlackBerry App > > World(TM) will have the opportunity to enter the BlackBerry > > Developer Challenge. See full prize > > > > details at: http://p.sf.net/sfu/Challenge > > _______________________________________________ > > dbus-cplusplus-devel mailing list > > dbu...@li... > > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > > > > ------------------------------------------------------------------------------ > > Enter the BlackBerry Developer Challenge > > This is your chance to win up to $100,000 in prizes! For a limited > > time, vendors submitting new applications to BlackBerry App > > World(TM) will have the opportunity to enter the BlackBerry > > Developer Challenge. See full prize details at: > > http://p.sf.net/sfu/Challenge > > _______________________________________________ > > dbus-cplusplus-devel mailing list > > dbu...@li... > > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited > time, vendors submitting new applications to BlackBerry App World(TM) > will have the opportunity to enter the BlackBerry Developer > Challenge. See full prize details at: http://p.sf.net/sfu/Challenge > _______________________________________________ > dbus-cplusplus-devel mailing list > dbu...@li... > https://lists.sourceforge.net/lists/listinfo/dbus-cplusplus-devel |