From 56f4e1513e9bd3efa3afb9061a8252fbd38933ee Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 11 Sep 2014 12:00:35 -0400 Subject: provide compile-time-enabled/disabled debugging of connections being made to PBD::Signal via PBD::SignalBase::set_debug_connection() --- libs/pbd/pbd/signals.h | 14 ++++++++++++++ libs/pbd/pbd/signals.py | 5 +++++ 2 files changed, 19 insertions(+) (limited to 'libs/pbd') diff --git a/libs/pbd/pbd/signals.h b/libs/pbd/pbd/signals.h index 672dc66850..ef53770613 100644 --- a/libs/pbd/pbd/signals.h +++ b/libs/pbd/pbd/signals.h @@ -39,6 +39,13 @@ #include "pbd/libpbd_visibility.h" #include "pbd/event_loop.h" +#define DEBUG_PBD_SIGNAL_CONNECTIONS + +#ifdef DEBUG_PBD_SIGNAL_CONNECTIONS +#include "pbd/stacktrace.h" +#include +#endif + namespace PBD { class LIBPBD_API Connection; @@ -46,11 +53,18 @@ class LIBPBD_API Connection; class LIBPBD_API SignalBase { public: + SignalBase () : _debug_connection (false) {} virtual ~SignalBase () {} virtual void disconnect (boost::shared_ptr) = 0; +#ifdef DEBUG_PBD_SIGNAL_CONNECTIONS + void set_debug_connection (bool yn) { _debug_connection = yn; } +#endif protected: Glib::Threads::Mutex _mutex; +#ifdef DEBUG_PBD_SIGNAL_CONNECTIONS + bool _debug_connection; +#endif }; class LIBPBD_API Connection : public boost::enable_shared_from_this diff --git a/libs/pbd/pbd/signals.py b/libs/pbd/pbd/signals.py index 24640fca72..caf3128bfa 100644 --- a/libs/pbd/pbd/signals.py +++ b/libs/pbd/pbd/signals.py @@ -286,6 +286,11 @@ def signal(f, n, v): print(""" boost::shared_ptr _connect (slot_function_type f) { +#ifdef DEBUG_PBD_SIGNAL_CONNECTIONS + if (_debug_connection) { + PBD::stacktrace (std::cerr, 10); + } +#endif boost::shared_ptr c (new Connection (this)); Glib::Threads::Mutex::Lock lm (_mutex); _slots[c] = f; -- cgit v1.2.3