diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-05-23 19:54:52 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-05-23 19:54:52 +0000 |
commit | 2fba6d0925307abd11be9d8f7a8d2722a2b6ccbd (patch) | |
tree | 485eed909963636b010d5f1e24527a6a4b377a42 /libs/surfaces/tranzport | |
parent | a222c19737fa2d3fce3971350c1a18906635e29a (diff) |
breakout control protocol code into LGPL library; fix panner buttons even more than nick did, plus some other bits and pieces
git-svn-id: svn://localhost/trunk/ardour2@522 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/tranzport')
-rw-r--r-- | libs/surfaces/tranzport/SConscript | 7 | ||||
-rw-r--r-- | libs/surfaces/tranzport/interface.cc | 9 | ||||
-rw-r--r-- | libs/surfaces/tranzport/tranzport_control_protocol.cc | 43 | ||||
-rw-r--r-- | libs/surfaces/tranzport/tranzport_control_protocol.h | 22 |
4 files changed, 40 insertions, 41 deletions
diff --git a/libs/surfaces/tranzport/SConscript b/libs/surfaces/tranzport/SConscript index 8c92831215..98ecf09d41 100644 --- a/libs/surfaces/tranzport/SConscript +++ b/libs/surfaces/tranzport/SConscript @@ -32,12 +32,13 @@ tranzport.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"") tranzport.Merge ([ libraries['ardour'], + libraries['ardour_cp'], libraries['sigc2'], libraries['pbd3'], libraries['midi++2'], - libraries['xml'], - libraries['usb'] - ]) + libraries['xml'], + libraries['usb'] + ]) libardour_tranzport = tranzport.SharedLibrary('ardour_tranzport', tranzport_files) diff --git a/libs/surfaces/tranzport/interface.cc b/libs/surfaces/tranzport/interface.cc index bcefd100c3..20f38dce08 100644 --- a/libs/surfaces/tranzport/interface.cc +++ b/libs/surfaces/tranzport/interface.cc @@ -1,4 +1,4 @@ -#include <ardour/control_protocol.h> +#include "control_protocol.h" #include "tranzport_control_protocol.h" @@ -24,12 +24,19 @@ delete_tranzport_protocol (ControlProtocolDescriptor* descriptor, ControlProtoco delete cp; } +bool +probe_tranzport_protocol (ControlProtocolDescriptor* descriptor) +{ + return TranzportControlProtocol::probe(); +} + static ControlProtocolDescriptor tranzport_descriptor = { name : "Tranzport", id : "uri://ardour.org/surfaces/tranzport:0", ptr : 0, module : 0, mandatory : 0, + probe : probe_tranzport_protocol, initialize : new_tranzport_protocol, destroy : delete_tranzport_protocol }; diff --git a/libs/surfaces/tranzport/tranzport_control_protocol.cc b/libs/surfaces/tranzport/tranzport_control_protocol.cc index 5a4c4fc385..61c10440ff 100644 --- a/libs/surfaces/tranzport/tranzport_control_protocol.cc +++ b/libs/surfaces/tranzport/tranzport_control_protocol.cc @@ -66,9 +66,7 @@ slider_position_to_gain (double pos) TranzportControlProtocol::TranzportControlProtocol (Session& s) - : ControlProtocol (s, X_("Tranzport")), - AbstractUI<TranzportRequest> (X_("Tranzport"), false) - + : ControlProtocol (s, X_("Tranzport")) { /* tranzport controls one track at a time */ @@ -106,6 +104,28 @@ TranzportControlProtocol::~TranzportControlProtocol () set_active (false); } +bool +TranzportControlProtocol::probe () +{ + struct usb_bus *bus; + struct usb_device *dev; + + usb_init(); + usb_find_busses(); + usb_find_devices(); + + for (bus = usb_busses; bus; bus = bus->next) { + + for(dev = bus->devices; dev; dev = dev->next) { + if (dev->descriptor.idVendor == VENDORID && dev->descriptor.idProduct == PRODUCTID) { + return true; + } + } + } + + return false; +} + int TranzportControlProtocol::set_active (bool yn) { @@ -559,7 +579,7 @@ TranzportControlProtocol::monitor_work () if ((err = pthread_setschedparam (pthread_self(), SCHED_FIFO, &rtparam)) != 0) { // do we care? not particularly. - info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), BaseUI::name(), strerror (errno)) << endmsg; + info << string_compose (_("%1: thread not running with realtime scheduling (%2)"), name(), strerror (errno)) << endmsg; } pthread_setcancelstate (PTHREAD_CANCEL_ENABLE, 0); @@ -1554,18 +1574,3 @@ TranzportControlProtocol::print (int row, int col, const char *text) } } -bool -TranzportControlProtocol::caller_is_ui_thread () -{ - return (pthread_self() == thread); -} - -void -TranzportControlProtocol::do_request (TranzportRequest* req) -{ - if (req->type == SetCurrentTrack) { - route_table[0] = req->track; - } - - return; -} diff --git a/libs/surfaces/tranzport/tranzport_control_protocol.h b/libs/surfaces/tranzport/tranzport_control_protocol.h index b24a94577a..0311140f8c 100644 --- a/libs/surfaces/tranzport/tranzport_control_protocol.h +++ b/libs/surfaces/tranzport/tranzport_control_protocol.h @@ -7,24 +7,12 @@ #include <pbd/lockmonitor.h> #include <pthread.h> #include <usb.h> -#include <ardour/control_protocol.h> -#include <ardour/types.h> -#include <pbd/abstract_ui.h> +#include <ardour/types.h> -extern BaseUI::RequestType LEDChange; -extern BaseUI::RequestType Print; -extern BaseUI::RequestType SetCurrentTrack; +#include "control_protocol.h" -struct TranzportRequest : public BaseUI::BaseRequestObject { - int led; - int row; - int col; - char* text; - ARDOUR::Route* track; -}; - -class TranzportControlProtocol : public ARDOUR::ControlProtocol, public AbstractUI<TranzportRequest> +class TranzportControlProtocol : public ARDOUR::ControlProtocol { public: TranzportControlProtocol (ARDOUR::Session&); @@ -32,7 +20,7 @@ class TranzportControlProtocol : public ARDOUR::ControlProtocol, public Abstract int set_active (bool yn); - bool caller_is_ui_thread(); + static bool probe (); private: static const int VENDORID = 0x165b; @@ -107,8 +95,6 @@ class TranzportControlProtocol : public ARDOUR::ControlProtocol, public Abstract DisplayMode display_mode; ARDOUR::gain_t gain_fraction; - void do_request (TranzportRequest*); - PBD::Lock update_lock; char current_screen[2][20]; char pending_screen[2][20]; |