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;
|