summaryrefslogtreecommitdiff
path: root/libs/pbd/pbd/signals.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/pbd/pbd/signals.h')
-rw-r--r--libs/pbd/pbd/signals.h18
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>