diff options
author | Robin Gareus <robin@gareus.org> | 2019-05-25 16:48:48 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2019-05-25 16:49:19 +0200 |
commit | d28dc9ee0855b1b964f6bb49862f9d3d7cf9cff8 (patch) | |
tree | df6b1b939223c0880b7ffcd52adeb38fc64e26cf /libs/surfaces/contourdesign | |
parent | 3546a7291bc80efb16b06a08c05cbc75da4035d7 (diff) |
Shuttle Surface: request_factory and MSVC compatible struct
Diffstat (limited to 'libs/surfaces/contourdesign')
-rw-r--r-- | libs/surfaces/contourdesign/contourdesign.cc | 11 | ||||
-rw-r--r-- | libs/surfaces/contourdesign/contourdesign.h | 1 | ||||
-rw-r--r-- | libs/surfaces/contourdesign/interface.cc | 25 |
3 files changed, 28 insertions, 9 deletions
diff --git a/libs/surfaces/contourdesign/contourdesign.cc b/libs/surfaces/contourdesign/contourdesign.cc index 7694592e56..1b03e9869f 100644 --- a/libs/surfaces/contourdesign/contourdesign.cc +++ b/libs/surfaces/contourdesign/contourdesign.cc @@ -93,6 +93,17 @@ ContourDesignControlProtocol::probe () return true; } +void* +ContourDesignControlProtocol::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); +} + int ContourDesignControlProtocol::set_active (bool yn) { diff --git a/libs/surfaces/contourdesign/contourdesign.h b/libs/surfaces/contourdesign/contourdesign.h index 6c81c0a099..58244f3a6a 100644 --- a/libs/surfaces/contourdesign/contourdesign.h +++ b/libs/surfaces/contourdesign/contourdesign.h @@ -78,6 +78,7 @@ public: DeviceType device_type() const { return _device_type; } static bool probe (); + static void* request_factory (uint32_t); int set_active (bool yn); diff --git a/libs/surfaces/contourdesign/interface.cc b/libs/surfaces/contourdesign/interface.cc index b1eb379a4d..06adde30c4 100644 --- a/libs/surfaces/contourdesign/interface.cc +++ b/libs/surfaces/contourdesign/interface.cc @@ -50,16 +50,23 @@ probe_contourdesign_protocol (ControlProtocolDescriptor*) return ContourDesignControlProtocol::probe (); } +static void* +contourdesign_request_buffer_factory (uint32_t num_requests) +{ + return ContourDesignControlProtocol::request_factory (num_requests); +} + static ControlProtocolDescriptor contourdesign_descriptor = { - name : "ContourDesign", - id : "uri://ardour.org/surfaces/contourdesign:0", - ptr : 0, - module : 0, - mandatory : 0, - supports_feedback : false, - probe : probe_contourdesign_protocol, - initialize : new_contourdesign_protocol, - destroy : delete_contourdesign_protocol + /* name : */ "ContourDesign", + /* id : */ "uri://ardour.org/surfaces/contourdesign:0", + /* ptr : */ 0, + /* module : */ 0, + /* mandatory : */ 0, + /* supports_feedback : */ false, + /* probe : */ probe_contourdesign_protocol, + /* initialize : */ new_contourdesign_protocol, + /* destroy : */ delete_contourdesign_protocol, + /* request_buffer_factory : */ contourdesign_request_buffer_factory }; extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &contourdesign_descriptor; } |