diff options
-rw-r--r-- | gtk2_ardour/ardour.menus | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 2 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_options.cc | 17 | ||||
-rw-r--r-- | libs/ardour/ardour/configuration_vars.h | 2 | ||||
-rw-r--r-- | libs/ardour/osc.cc | 17 |
6 files changed, 37 insertions, 4 deletions
diff --git a/gtk2_ardour/ardour.menus b/gtk2_ardour/ardour.menus index c826b40bc3..e7463553d2 100644 --- a/gtk2_ardour/ardour.menus +++ b/gtk2_ardour/ardour.menus @@ -342,6 +342,7 @@ <menuitem action='SendMMC'/> <menuitem action='UseMMC'/> <separator/> + <menuitem action='UseOSC'/> <menuitem action='StopPluginsWithTransport'/> <menuitem action='DoNotRunPluginsWhileRecording'/> <menuitem action='LatchedRecordEnable'/> diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 55c2a232e8..dc48856174 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -658,6 +658,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI void toggle_use_midi_control(); void toggle_send_mtc (); + void toggle_use_osc (); + void set_input_auto_connect (ARDOUR::AutoConnectOption); void set_output_auto_connect (ARDOUR::AutoConnectOption); void set_solo_model (ARDOUR::SoloModel); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 7fcbd3ed23..3fdcee5d6a 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -393,6 +393,8 @@ ARDOUR_UI::install_actions () act = ActionManager::register_toggle_action (option_actions, X_("UseMIDIcontrol"), _("Use MIDI control"), mem_fun (*this, &ARDOUR_UI::toggle_use_midi_control)); ActionManager::session_sensitive_actions.push_back (act); + act = ActionManager::register_toggle_action (option_actions, X_("UseOSC"), _("Use OSC"), mem_fun (*this, &ARDOUR_UI::toggle_use_osc)); + ActionManager::register_toggle_action (option_actions, X_("StopPluginsWithTransport"), _("Stop plugins with transport"), mem_fun (*this, &ARDOUR_UI::toggle_StopPluginsWithTransport)); ActionManager::register_toggle_action (option_actions, X_("VerifyRemoveLastCapture"), _("Verify remove last capture"), mem_fun (*this, &ARDOUR_UI::toggle_VerifyRemoveLastCapture)); ActionManager::register_toggle_action (option_actions, X_("StopRecordingOnXrun"), _("Stop recording on xrun"), mem_fun (*this, &ARDOUR_UI::toggle_StopRecordingOnXrun)); diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 8e87810ac4..a90e06bc61 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -24,6 +24,7 @@ #include <ardour/configuration.h> #include <ardour/session.h> +#include <ardour/osc.h> #include <ardour/audioengine.h> #include "ardour_ui.h" @@ -63,6 +64,12 @@ ARDOUR_UI::toggle_use_mmc () } void +ARDOUR_UI::toggle_use_osc () +{ + ActionManager::toggle_config_state ("options", "UseOSC", &Configuration::set_use_osc, &Configuration::get_use_osc); +} + +void ARDOUR_UI::toggle_use_midi_control () { ActionManager::toggle_config_state ("options", "UseMIDIcontrol", &Configuration::set_midi_control, &Configuration::get_midi_control); @@ -844,6 +851,16 @@ ARDOUR_UI::parameter_changed (const char* parameter_name) ActionManager::map_some_state ("options", "SendMMC", &Configuration::get_send_mmc); + } else if (PARAM_IS ("use-osc")) { + + if (Config->get_use_osc()) { + osc->start (); + } else { + osc->stop (); + } + + ActionManager::map_some_state ("options", "UseOSC", &Configuration::get_use_osc); + } else if (PARAM_IS ("mmc-control")) { ActionManager::map_some_state ("options", "UseMMC", &Configuration::get_mmc_control); } else if (PARAM_IS ("midi-feedback")) { diff --git a/libs/ardour/ardour/configuration_vars.h b/libs/ardour/ardour/configuration_vars.h index 1296ab0dad..674a9232b5 100644 --- a/libs/ardour/ardour/configuration_vars.h +++ b/libs/ardour/ardour/configuration_vars.h @@ -38,7 +38,7 @@ CONFIG_VARIABLE (HeaderFormat, native_file_header_format, "native-file-header-f /* OSC */ CONFIG_VARIABLE (uint32_t, osc_port, "osc-port", 3819) -CONFIG_VARIABLE (bool, use_osc, "use-osc", true) +CONFIG_VARIABLE (bool, use_osc, "use-osc", false) /* crossfades */ diff --git a/libs/ardour/osc.cc b/libs/ardour/osc.cc index bb87708f9e..d999386005 100644 --- a/libs/ardour/osc.cc +++ b/libs/ardour/osc.cc @@ -58,6 +58,11 @@ int OSC::start () { char tmpstr[255]; + + if (_osc_server) { + /* already started */ + return 0; + } for (int j=0; j < 20; ++j) { snprintf(tmpstr, sizeof(tmpstr), "%d", _port); @@ -108,16 +113,22 @@ OSC::start () int OSC::stop () { + if (_osc_server == 0) { + /* already stopped */ + return 0; + } + + // stop server thread + terminate_osc_thread(); + lo_server_free (_osc_server); + _osc_server = 0; if (!_osc_unix_socket_path.empty()) { // unlink it unlink(_osc_unix_socket_path.c_str()); } - // stop server thread - terminate_osc_thread(); - return 0; } |