summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorAndrew Molloy <amolloy@gmail.com>2017-12-03 11:41:06 -0500
committerAndrew Molloy <amolloy@gmail.com>2017-12-03 11:41:06 -0500
commit8354e89cf1e1cd8b8bb5458820e4e1714d6cc89a (patch)
treece4821d3336182c50a61191066b0435aa215a56c /Source
parentd306397bbc64b51e891f689252f77c0cfa31983b (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.h4
-rw-r--r--Source/Core/Core/HW/WiimoteReal/IOdarwin.mm7
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];