diff --git a/mixer/configure b/mixer/configure index cbe4b48..4aa8a84 100755 --- a/mixer/configure +++ b/mixer/configure @@ -21,7 +21,6 @@ require_command FLUID lib/fltk/fluid/fluid require_package JACK 0.103.0 jack require_package lrdf 0.4.0 lrdf require_package liblo 0.23 liblo -require_package sigcpp 2.0.0 sigc++-2.0 suggest_package XPM 2.0.0 xpm test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later" diff --git a/mixer/src/Module.C b/mixer/src/Module.C index ec64049..aadbd4f 100644 --- a/mixer/src/Module.C +++ b/mixer/src/Module.C @@ -254,9 +254,9 @@ Module::Port::generate_osc_path () } void -Module::Port::handle_signal_connection_state_changed ( OSC::Signal * ) +Module::Port::handle_signal_connection_state_changed ( OSC::Signal *, void *o ) { - module()->redraw(); + ((Module::Port*)o)->module()->redraw(); } void @@ -286,8 +286,8 @@ Module::Port::change_osc_path ( char *path ) 0.0, 1.0, scaled_default, &Module::Port::osc_control_change_cv, this ); - _scaled_signal->signal_connection_state_changed.connect( - sigc::mem_fun( this, &Module::Port::handle_signal_connection_state_changed ) ); + + _scaled_signal->connection_state_callback( handle_signal_connection_state_changed, this ); _unscaled_signal = mixer->osc_endpoint->add_signal( unscaled_path, OSC::Signal::Input, diff --git a/mixer/src/Module.H b/mixer/src/Module.H index 51e24ca..109e558 100644 --- a/mixer/src/Module.H +++ b/mixer/src/Module.H @@ -259,7 +259,7 @@ public: OSC::Signal *_scaled_signal; OSC::Signal *_unscaled_signal; - void handle_signal_connection_state_changed ( OSC::Signal *s ); + static void handle_signal_connection_state_changed ( OSC::Signal *, void *o ); }; void bbox ( int &X, int &Y, int &W, int &H ) diff --git a/nonlib/OSC/Endpoint.C b/nonlib/OSC/Endpoint.C index 2e5123a..8020502 100644 --- a/nonlib/OSC/Endpoint.C +++ b/nonlib/OSC/Endpoint.C @@ -306,7 +306,7 @@ namespace OSC DMESSAGE( "Peer %s has disconnected from signal %s", p->name, ps->path() ); - s->signal_connection_state_changed( s ); + s->_connection_state_callback( s, s->_connection_state_userdata ); return 0; } @@ -358,7 +358,7 @@ namespace OSC /* make a record of it ourselves */ ps->_outgoing.push_back( s ); - s->signal_connection_state_changed( s ); + s->_connection_state_callback( s, s->_connection_state_userdata ); /* return 0; */ /* } */ @@ -872,7 +872,7 @@ namespace OSC p->_scanning = false; DMESSAGE( "Done scanning %s", p->name ); - ep->signal_peer_scan_complete(); + ep->_peer_scan_complete_callback(ep->_peer_scan_complete_userdata); } else if ( argc == 7 && p->_scanning ) { diff --git a/nonlib/OSC/Endpoint.H b/nonlib/OSC/Endpoint.H index 655fcda..7cb030a 100644 --- a/nonlib/OSC/Endpoint.H +++ b/nonlib/OSC/Endpoint.H @@ -25,8 +25,6 @@ #include #include -#include - namespace OSC { class OSC_Value @@ -163,6 +161,9 @@ namespace OSC void *_user_data; Parameter_Limits _parameter_limits; + void (*_connection_state_callback)(OSC::Signal *, void*); + void *_connection_state_userdata; + public: Signal ( const char *path, Direction dir ) @@ -175,7 +176,11 @@ namespace OSC _peer = NULL; } - sigc::signal signal_connection_state_changed; + void connection_state_callback ( void(*_cb)(OSC::Signal *, void*), void *userdata) + { + _connection_state_callback = _cb; + _connection_state_userdata = userdata; + } ~Signal ( ); @@ -278,6 +283,9 @@ namespace OSC void del_signal ( Signal *signal ); void send_signal_rename_notifications( Signal *s ); + void (*_peer_scan_complete_callback)(void*); + void *_peer_scan_complete_userdata; + public: void list_peer_signals ( void (*callback) (const char *, const OSC::Signal *, void * ), void *v ); @@ -355,7 +363,12 @@ namespace OSC // can be used to point back to owning object. void *owner; - sigc::signal signal_peer_scan_complete; + void peer_scan_complete_callback ( void(*_cb)(void*), void *userdata) + { + _peer_scan_complete_callback = _cb; + _peer_scan_complete_userdata = userdata; + } + friend Signal::~Signal(); friend void Signal::rename ( const char *name ); diff --git a/nonlib/configure b/nonlib/configure index 212f6f2..3a74ea6 100755 --- a/nonlib/configure +++ b/nonlib/configure @@ -17,7 +17,6 @@ require_command ar ar require_command makedepend makedepend require_package JACK 0.103.0 jack require_package liblo 0.23 liblo -require_package sigcpp 2.0.0 sigc++-2.0 test_version `version_of liblo` 0.26 || warn "Version $(version_of liblo) of liblo is slow to create servers. Consider upgrading to 0.26 or later" diff --git a/timeline/configure b/timeline/configure index 398b5be..a0653fe 100755 --- a/timeline/configure +++ b/timeline/configure @@ -28,7 +28,6 @@ require_command FLUID lib/fltk/fluid/fluid require_package JACK 0.103.0 jack require_package sndfile 1.0.17 sndfile require_package liblo 0.23 liblo -require_package sigcpp 2.0.0 sigc++-2.0 suggest_package XPM 2.0.0 xpm if ! hostname_resolvable diff --git a/timeline/src/Timeline.C b/timeline/src/Timeline.C index 94ca8c1..eea4b25 100644 --- a/timeline/src/Timeline.C +++ b/timeline/src/Timeline.C @@ -1620,7 +1620,7 @@ Timeline::init_osc ( const char *osc_port ) /* poll so we can keep OSC handlers running in the GUI thread and avoid extra sync */ Fl::add_timeout( OSC_INTERVAL, &Timeline::check_osc, this ); - osc->signal_peer_scan_complete.connect( sigc::mem_fun( this, &Timeline::connect_osc ) ); + osc->peer_scan_complete_callback( &Timeline::handle_peer_scan_complete, this ); if ( ! osc_thread ) { @@ -1676,6 +1676,12 @@ Timeline::reply_to_finger ( lo_message msg ) lo_address_free( reply ); } +void +Timeline::handle_peer_scan_complete ( void *o ) +{ + ((Timeline*)o)->connect_osc(); +} + void Timeline::connect_osc ( void ) { diff --git a/timeline/src/Timeline.H b/timeline/src/Timeline.H index 33fbdb2..707a222 100644 --- a/timeline/src/Timeline.H +++ b/timeline/src/Timeline.H @@ -122,6 +122,8 @@ class Timeline : public Fl_Single_Window, public RWLock std::list _tempomap; + static void handle_peer_scan_complete ( void * v ); + public: OSC::Endpoint *osc;