From dafcaec023d3c11a43e5c85d504f8919e7ee4cd9 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 21 Dec 2014 09:03:36 +0700 Subject: Limit Wiimote surface discovery to 5 connection attempts If you don't connect a Wiimote then the connection attempts were endless. --- libs/surfaces/wiimote/wiimote.cc | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/libs/surfaces/wiimote/wiimote.cc b/libs/surfaces/wiimote/wiimote.cc index 124cf6c349..aa36cdf300 100644 --- a/libs/surfaces/wiimote/wiimote.cc +++ b/libs/surfaces/wiimote/wiimote.cc @@ -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; } } -- cgit v1.2.3