diff options
Diffstat (limited to 'libs/surfaces/faderport')
-rw-r--r-- | libs/surfaces/faderport/faderport.cc | 19 | ||||
-rw-r--r-- | libs/surfaces/faderport/faderport.h | 3 | ||||
-rw-r--r-- | libs/surfaces/faderport/faderport_interface.cc | 9 |
3 files changed, 25 insertions, 6 deletions
diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 135943d34f..f10f70dce5 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -66,7 +66,7 @@ using namespace std; FaderPort::FaderPort (Session& s) : ControlProtocol (s, _("Faderport")) - , AbstractUI<FaderPortRequest> ("faderport") + , AbstractUI<FaderPortRequest> (name()) , gui (0) , connection_state (ConnectionState (0)) , _device_active (false) @@ -210,6 +210,17 @@ FaderPort::~FaderPort () tear_down_gui (); } +void* +FaderPort::request_factory (uint32_t num_requests) +{ + /* AbstractUI<T>::request_buffer_factory() is a template method only + instantiated in this source module. To provide something visible for + use in the interface/descriptor, we have this static method that is + template-free. + */ + return request_buffer_factory (num_requests); +} + void FaderPort::start_midi_handling () { @@ -267,10 +278,10 @@ FaderPort::thread_init () { struct sched_param rtparam; - pthread_set_name (X_("FaderPort")); + pthread_set_name (event_loop_name().c_str()); - PBD::notify_gui_about_thread_creation (X_("gui"), pthread_self(), X_("FaderPort"), 2048); - ARDOUR::SessionEvent::create_per_thread_pool (X_("FaderPort"), 128); + PBD::notify_event_loops_about_thread_creation (pthread_self(), event_loop_name(), 2048); + ARDOUR::SessionEvent::create_per_thread_pool (event_loop_name(), 128); memset (&rtparam, 0, sizeof (rtparam)); rtparam.sched_priority = 9; /* XXX should be relative to audio (JACK) thread */ diff --git a/libs/surfaces/faderport/faderport.h b/libs/surfaces/faderport/faderport.h index 6643e22369..025cf09e00 100644 --- a/libs/surfaces/faderport/faderport.h +++ b/libs/surfaces/faderport/faderport.h @@ -85,6 +85,7 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq there's no way to know if the device exists or not. */ static bool probe() { return true; } + static void* request_factory (uint32_t); XMLNode& get_state (); int set_state (const XMLNode&, int version); @@ -160,7 +161,7 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq std::string get_action (ButtonID, bool on_press, FaderPort::ButtonState = ButtonState (0)); std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles (); - + private: boost::shared_ptr<ARDOUR::Route> _current_route; boost::weak_ptr<ARDOUR::Route> pre_master_route; diff --git a/libs/surfaces/faderport/faderport_interface.cc b/libs/surfaces/faderport/faderport_interface.cc index dcfebff190..e7ea5af396 100644 --- a/libs/surfaces/faderport/faderport_interface.cc +++ b/libs/surfaces/faderport/faderport_interface.cc @@ -56,6 +56,12 @@ probe_faderport_midi_protocol (ControlProtocolDescriptor* /*descriptor*/) return FaderPort::probe (); } +static void* +faderport_request_buffer_factory (uint32_t num_requests) +{ + return FaderPort::request_factory (num_requests); +} + static ControlProtocolDescriptor faderport_midi_descriptor = { /*name : */ "Faderport", /*id : */ "uri://ardour.org/surfaces/faderport:0", @@ -65,7 +71,8 @@ static ControlProtocolDescriptor faderport_midi_descriptor = { /*supports_feedback : */ true, /*probe : */ probe_faderport_midi_protocol, /*initialize : */ new_faderport_midi_protocol, - /*destroy : */ delete_faderport_midi_protocol + /*destroy : */ delete_faderport_midi_protocol, + /*request_buffer_factory */ faderport_request_buffer_factory }; extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &faderport_midi_descriptor; } |