diff options
Diffstat (limited to 'libs/pbd/pbd/signals.h')
-rw-r--r-- | libs/pbd/pbd/signals.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/pbd/pbd/signals.h b/libs/pbd/pbd/signals.h index 42727b7adc..df4c9cef29 100644 --- a/libs/pbd/pbd/signals.h +++ b/libs/pbd/pbd/signals.h @@ -78,7 +78,12 @@ protected: class LIBPBD_API Connection : public boost::enable_shared_from_this<Connection> { public: - Connection (SignalBase* b) : _signal (b) {} + Connection (SignalBase* b, PBD::EventLoop::InvalidationRecord* ir) : _signal (b), _invalidation_record (ir) + { + if (_invalidation_record) { + _invalidation_record->ref (); + } + } void disconnect () { @@ -89,15 +94,26 @@ public: } } + void disconnected () + { + if (_invalidation_record) { + _invalidation_record->unref (); + } + } + void signal_going_away () { Glib::Threads::Mutex::Lock lm (_mutex); + if (_invalidation_record) { + _invalidation_record->unref (); + } _signal = 0; } private: Glib::Threads::Mutex _mutex; SignalBase* _signal; + PBD::EventLoop::InvalidationRecord* _invalidation_record; }; template<typename R> |