diff options
author | Len Ovens <len@ovenwerks.net> | 2016-10-28 13:45:30 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2016-10-28 13:45:30 -0700 |
commit | 4eb2da491f2d7da25e676d5ed640b2d830320fee (patch) | |
tree | 9858b1f36554a6b2cd59587f712ae66d21ab44d4 /libs/surfaces | |
parent | 8de0788f7b7ac489d24199beeb13029c94a2019e (diff) |
OSC: simplify Global feedback (remove repetitive code)
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/osc/osc_global_observer.cc | 39 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_global_observer.h | 9 |
2 files changed, 21 insertions, 27 deletions
diff --git a/libs/surfaces/osc/osc_global_observer.cc b/libs/surfaces/osc/osc_global_observer.cc index f4f383471d..69ab2b3a1a 100644 --- a/libs/surfaces/osc/osc_global_observer.cc +++ b/libs/surfaces/osc/osc_global_observer.cc @@ -115,8 +115,8 @@ OSCGlobalObserver::OSCGlobalObserver (Session& s, lo_address a, uint32_t gm, std send_record_state_changed (); // session feedback - session->StateSaved.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::send_session_saved, this, _1), OSC::instance()); - send_session_saved (session->snap_name()); + session->StateSaved.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::text_message, this, X_("/session_name"), _1), OSC::instance()); + text_message (X_("/session_name"), session->snap_name()); session->SoloActive.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::solo_active, this, _1), OSC::instance()); solo_active (session->soloing() || session->listening()); @@ -154,10 +154,7 @@ OSCGlobalObserver::tick () os << ':'; os << setw(2) << setfill('0') << timecode.frames; - lo_message msg = lo_message_new (); - lo_message_add_string (msg, os.str().c_str()); - lo_send_message (addr, "/position/smpte", msg); - lo_message_free (msg); + text_message ("/position/smpte", os.str()); } if (feedback[5]) { // Bar beat enabled Timecode::BBT_Time bbt_time; @@ -173,10 +170,7 @@ OSCGlobalObserver::tick () os << '|'; os << setw(4) << setfill('0') << bbt_time.ticks; - lo_message msg = lo_message_new (); - lo_message_add_string (msg, os.str().c_str()); - lo_send_message (addr, "/position/bbt", msg); - lo_message_free (msg); + text_message ("/position/bbt", os.str()); } if (feedback[11]) { // minutes/seconds enabled framepos_t left = now_frame; @@ -198,18 +192,12 @@ OSCGlobalObserver::tick () os << '.'; os << setw(3) << setfill('0') << millisecs; - lo_message msg = lo_message_new (); - lo_message_add_string (msg, os.str().c_str()); - lo_send_message (addr, "/position/time", msg); - lo_message_free (msg); + text_message ("/position/time", os.str()); } if (feedback[10]) { // samples ostringstream os; os << now_frame; - lo_message msg = lo_message_new (); - lo_message_add_string (msg, os.str().c_str()); - lo_send_message (addr, "/position/samples", msg); - lo_message_free (msg); + text_message ("/position/samples", os.str()); } _last_frame = now_frame; } @@ -363,20 +351,21 @@ OSCGlobalObserver::send_record_state_changed () } void -OSCGlobalObserver::send_session_saved (std::string name) +OSCGlobalObserver::solo_active (bool active) { lo_message msg = lo_message_new (); - lo_message_add_string (msg, name.c_str()); - lo_send_message (addr, "/session_name", msg); + lo_message_add_float (msg, (float) active); + lo_send_message (addr, "/cancel_all_solos", msg); lo_message_free (msg); - } void -OSCGlobalObserver::solo_active (bool active) +OSCGlobalObserver::text_message (string path, std::string text) { lo_message msg = lo_message_new (); - lo_message_add_float (msg, (float) active); - lo_send_message (addr, "/cancel_all_solos", msg); + + lo_message_add_string (msg, text.c_str()); + + lo_send_message (addr, path.c_str(), msg); lo_message_free (msg); } diff --git a/libs/surfaces/osc/osc_global_observer.h b/libs/surfaces/osc/osc_global_observer.h index 845b9b981e..38613caf0f 100644 --- a/libs/surfaces/osc/osc_global_observer.h +++ b/libs/surfaces/osc/osc_global_observer.h @@ -44,6 +44,11 @@ class OSCGlobalObserver PBD::ScopedConnectionList strip_connections; PBD::ScopedConnectionList session_connections; + enum STRIP { + Master, + Monitor, + }; + lo_address addr; std::string path; @@ -57,10 +62,10 @@ class OSCGlobalObserver void send_change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable); void send_gain_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable); void send_trim_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable); - void send_transport_state_changed(void); + void send_transport_state_changed (void); void send_record_state_changed (void); - void send_session_saved (std::string name); void solo_active (bool active); + void text_message (std::string path, std::string text); }; #endif /* __osc_oscglobalobserver_h__ */ |