|
From: Frank M. H. <fm...@us...> - 2007-03-02 22:05:11
|
Update of /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv20359/boost/thread_safe_signals Modified Files: connection.hpp slot_base.hpp Log Message: Made slots throw bad_weak_ptr when called with expired tracked objects. Combiners now have to catch bad_weak_ptr exceptions thrown on slot iterator dereference. Tracking works automatically now for slots that call other slots. Index: slot_base.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/slot_base.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- slot_base.hpp 28 Feb 2007 16:19:41 -0000 1.2 +++ slot_base.hpp 2 Mar 2007 22:04:47 -0000 1.3 @@ -46,13 +46,10 @@ } bool expired() const { - try - { - lock(); - } - catch(const bad_weak_ptr &err) + tracked_container_type::const_iterator it; + for(it = tracked_objects().begin(); it != tracked_objects().end(); ++it) { - return true; + if(it->expired()) return true; } return false; } Index: connection.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/connection.hpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- connection.hpp 2 Mar 2007 16:00:38 -0000 1.22 +++ connection.hpp 2 Mar 2007 22:04:47 -0000 1.23 @@ -50,10 +50,7 @@ virtual void disconnect() = 0; void nolock_disconnect() { - if(_connected) - { - _connected = false; - } + _connected = false; } virtual bool connected() const = 0; virtual shared_ptr<void> get_blocker() = 0; |