diff options
| author | Andrew Molloy <amolloy@gmail.com> | 2017-12-03 11:41:06 -0500 |
|---|---|---|
| committer | Andrew Molloy <amolloy@gmail.com> | 2017-12-03 11:41:06 -0500 |
| commit | 8354e89cf1e1cd8b8bb5458820e4e1714d6cc89a (patch) | |
| tree | ce4821d3336182c50a61191066b0435aa215a56c /Source | |
| parent | d306397bbc64b51e891f689252f77c0cfa31983b (diff) | |
Break out of the loop waiting for the SearchBT to be done in WiimoteScannerDarwin::FindWiimotes() when the object is destroyed. Allows the application to quit correctly when Continuous Scanning is enabled on macOS.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/HW/WiimoteReal/IOdarwin.h | 4 | ||||
| -rw-r--r-- | Source/Core/Core/HW/WiimoteReal/IOdarwin.mm | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/Source/Core/Core/HW/WiimoteReal/IOdarwin.h b/Source/Core/Core/HW/WiimoteReal/IOdarwin.h index 93a53dfe50..d15f85481d 100644 --- a/Source/Core/Core/HW/WiimoteReal/IOdarwin.h +++ b/Source/Core/Core/HW/WiimoteReal/IOdarwin.h @@ -13,10 +13,12 @@ class WiimoteScannerDarwin final : public WiimoteScannerBackend { public: WiimoteScannerDarwin() = default; - ~WiimoteScannerDarwin() override = default; + ~WiimoteScannerDarwin() override; bool IsReady() const override; void FindWiimotes(std::vector<Wiimote*>&, Wiimote*&) override; void Update() override {} // not needed +private: + bool stopScanning = false; }; } diff --git a/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm b/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm index f0743dc6d6..dfb077c54e 100644 --- a/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm +++ b/Source/Core/Core/HW/WiimoteReal/IOdarwin.mm @@ -21,6 +21,11 @@ namespace WiimoteReal { +WiimoteScannerDarwin::~WiimoteScannerDarwin() +{ + stopScanning = true; +} + void WiimoteScannerDarwin::FindWiimotes(std::vector<Wiimote*>& found_wiimotes, Wiimote*& found_board) { @@ -55,7 +60,7 @@ void WiimoteScannerDarwin::FindWiimotes(std::vector<Wiimote*>& found_wiimotes, do { CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, false); - } while (!sbt->done); + } while (!sbt->done && !stopScanning); int found_devices = [[bti foundDevices] count]; |
