Limit Wiimote surface discovery to 5 connection attempts
authorTim Mayberry <mojofunk@gmail.com>
Sun, 21 Dec 2014 02:03:36 +0000 (09:03 +0700)
committerTim Mayberry <mojofunk@gmail.com>
Sun, 21 Dec 2014 05:53:00 +0000 (12:53 +0700)
If you don't connect a Wiimote then the connection attempts were
endless.

libs/surfaces/wiimote/wiimote.cc

index 124cf6c34975619eed1530a6ee168519852bffd2..aa36cdf30071f07aa03a544bcf09da946bfb7135 100644 (file)
@@ -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;
                }
        }