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 |