13
0

provide compile-time-enabled/disabled debugging of connections being made to PBD::Signal via PBD::SignalBase::set_debug_connection()

This commit is contained in:
Paul Davis 2014-09-11 12:00:35 -04:00
parent 5dd5bb7830
commit 56f4e1513e
2 changed files with 19 additions and 0 deletions

View File

@ -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 <iostream>
#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<Connection>) = 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<Connection>

View File

@ -286,6 +286,11 @@ def signal(f, n, v):
print("""
boost::shared_ptr<Connection> _connect (slot_function_type f)
{
#ifdef DEBUG_PBD_SIGNAL_CONNECTIONS
if (_debug_connection) {
PBD::stacktrace (std::cerr, 10);
}
#endif
boost::shared_ptr<Connection> c (new Connection (this));
Glib::Threads::Mutex::Lock lm (_mutex);
_slots[c] = f;