|
From: Frank M. H. <fm...@us...> - 2007-03-05 15:34:39
|
Update of /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv1733/thread_safe_signals Modified Files: connection.hpp shared_connection_block.hpp Log Message: Added shared_connection_block::block() to allow user to re-acquire block without creating a new shared_connection_block object. Index: shared_connection_block.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/shared_connection_block.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- shared_connection_block.hpp 2 Mar 2007 16:00:38 -0000 1.1 +++ shared_connection_block.hpp 5 Mar 2007 15:34:36 -0000 1.2 @@ -13,6 +13,7 @@ #include <boost/shared_ptr.hpp> #include <boost/thread_safe_signals/connection.hpp> +#include <boost/weak_ptr.hpp> #ifdef BOOST_HAS_ABI_HEADERS # include BOOST_ABI_PREFIX @@ -26,13 +27,23 @@ { public: shared_connection_block(connection &conn): - _blocker(conn.get_blocker()) - {} + _weakConnectionBody(conn._weakConnectionBody) + { + block(); + } + void block() + { + if(_blocker) return; + boost::shared_ptr<detail::ConnectionBodyBase> connectionBody(_weakConnectionBody.lock()); + if(connectionBody == 0) return; + _blocker = connectionBody->get_blocker(); + } void unblock() { _blocker.reset(); } private: + boost::weak_ptr<detail::ConnectionBodyBase> _weakConnectionBody; shared_ptr<void> _blocker; }; } Index: connection.hpp =================================================================== RCS file: /cvsroot/boost-sandbox/boost-sandbox/boost/thread_safe_signals/connection.hpp,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- connection.hpp 5 Mar 2007 15:10:55 -0000 1.24 +++ connection.hpp 5 Mar 2007 15:34:36 -0000 1.25 @@ -182,12 +182,6 @@ std::swap(_weakConnectionBody, other._weakConnectionBody); } private: - shared_ptr<void> get_blocker() - { - boost::shared_ptr<detail::ConnectionBodyBase> connectionBody(_weakConnectionBody.lock()); - if(connectionBody == 0) return shared_ptr<void>(); - return connectionBody->get_blocker(); - } boost::weak_ptr<detail::ConnectionBodyBase> _weakConnectionBody; }; |