X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fwiimote%2Fwiimote.cc;h=df16bc05a5739aebb94d060ec2d9b08be8dbf9df;hb=1aab360b7d944350dea1f5ef81394229adb07c1e;hp=963bf90df7e686e2759ffbebb2cf4ac594c784d8;hpb=a1a3f6c8265264227ce19f731bf1863aff229a94;p=ardour.git diff --git a/libs/surfaces/wiimote/wiimote.cc b/libs/surfaces/wiimote/wiimote.cc index 963bf90df7..df16bc05a5 100644 --- a/libs/surfaces/wiimote/wiimote.cc +++ b/libs/surfaces/wiimote/wiimote.cc @@ -24,7 +24,7 @@ #include "pbd/error.h" #include "ardour/debug.h" #include "ardour/session.h" -#include "i18n.h" +#include "pbd/i18n.h" #include "wiimote.h" @@ -164,7 +164,7 @@ WiimoteControlProtocol::thread_init () pthread_set_name (X_("wiimote")); // allow to make requests to the GUI and RT thread(s) - PBD::notify_gui_about_thread_creation (X_("gui"), pthread_self (), X_("wiimote"), 2048); + PBD::notify_event_loops_about_thread_creation (pthread_self (), X_("wiimote"), 2048); BasicUI::register_thread ("wiimote"); // connect a Wiimote @@ -208,11 +208,10 @@ WiimoteControlProtocol::connect_idle () { DEBUG_TRACE (DEBUG::WiimoteControl, "WiimoteControlProtocol::connect_idle init\n"); - bool retry = true; + bool retry = false; if (connect_wiimote ()) { stop_wiimote_discovery (); - retry = false; } DEBUG_TRACE (DEBUG::WiimoteControl, "WiimoteControlProtocol::connect_idle done\n"); @@ -228,30 +227,29 @@ WiimoteControlProtocol::connect_wiimote () return true; } - bool success = true; + bool success = false; // if we don't have a Wiimote yet, try to discover it; if that // fails, wait for a short period of time and try again - if (!wiimote) { + for (int i = 0; i < 5; ++i) { cerr << "Wiimote: Not discovered yet, press 1+2 to connect" << endl; bdaddr_t bdaddr = {{ 0, 0, 0, 0, 0, 0 }}; wiimote = cwiid_open (&bdaddr, 0); callback_thread_registered = false; - if (!wiimote) { - success = false; - } else { + if (wiimote) { // a Wiimote was discovered cerr << "Wiimote: Connected successfully" << endl; // attach the WiimoteControlProtocol object to the Wiimote handle if (cwiid_set_data (wiimote, this)) { cerr << "Wiimote: Failed to attach control protocol" << endl; - success = false; + } else { + success = true; + // clear the last button state to start processing events cleanly + button_state = 0; + break; } - - // clear the last button state to start processing events cleanly - button_state = 0; } } @@ -449,7 +447,7 @@ wiimote_control_protocol_mesg_callback (cwiid_wiimote_t *wiimote, int mesg_count { DEBUG_TRACE (DEBUG::WiimoteControl, "WiimoteControlProtocol::mesg_callback init\n"); - WiimoteControlProtocol *protocol = (WiimoteControlProtocol *)cwiid_get_data (wiimote); + WiimoteControlProtocol *protocol = reinterpret_cast (const_cast(cwiid_get_data (wiimote))); if (protocol) { protocol->wiimote_callback (mesg_count, mesg); @@ -457,3 +455,15 @@ wiimote_control_protocol_mesg_callback (cwiid_wiimote_t *wiimote, int mesg_count DEBUG_TRACE (DEBUG::WiimoteControl, "WiimoteControlProtocol::mesg_callback done\n"); } + + +void* +WiimoteControlProtocol::request_factory (uint32_t num_requests) +{ + /* AbstractUI::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); +}