X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=boost%2Fsignals2%2Ftrackable.hpp;h=dba001da459b451900c177845397a44468bccfef;hb=08c1e93fa36a49f49325a07fe91ff92c964c2b6c;hp=d6a60149a70dddb32f2e0fb699e262e81c949ba6;hpb=bb4dd8289b351fae6b55e303f189127a394a1edd;p=platform%2Fupstream%2Fboost.git diff --git a/boost/signals2/trackable.hpp b/boost/signals2/trackable.hpp index d6a6014..dba001d 100644 --- a/boost/signals2/trackable.hpp +++ b/boost/signals2/trackable.hpp @@ -24,11 +24,20 @@ namespace boost { namespace detail { class tracked_objects_visitor; + + // trackable_pointee is used to identify the tracked shared_ptr + // originating from the signals2::trackable class. These tracked + // shared_ptr are special in that we shouldn't bother to + // increment their use count during signal invocation, since + // they don't actually control the lifetime of the + // signals2::trackable object they are associated with. + class trackable_pointee + {}; } class trackable { protected: - trackable(): _tracked_ptr(static_cast(0)) {} - trackable(const trackable &): _tracked_ptr(static_cast(0)) {} + trackable(): _tracked_ptr(static_cast(0)) {} + trackable(const trackable &): _tracked_ptr(static_cast(0)) {} trackable& operator=(const trackable &) { return *this; @@ -36,12 +45,12 @@ namespace boost { ~trackable() {} private: friend class detail::tracked_objects_visitor; - const shared_ptr& get_shared_ptr() const + weak_ptr get_weak_ptr() const { return _tracked_ptr; } - shared_ptr _tracked_ptr; + shared_ptr _tracked_ptr; }; } // end namespace signals2 } // end namespace boost