diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2018-07-17 14:48:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-17 14:48:49 +0200 |
commit | 26d3e31e053784993d316580390bba3b3d9b52ff (patch) | |
tree | faa6dd93469d7adeb9c793cf03267c8cc7f8519e /platform/android | |
parent | f71ffa97248e29f1dd8ee5507d4430b08b456842 (diff) | |
parent | fe4265ad463e8fdf9bd1f8677d5e697b6ee090e0 (diff) |
Merge pull request #20132 from ibrahn/fix-android-device-poll-thread
fixed branch on uninit and data race in editor android device polling
Diffstat (limited to 'platform/android')
-rw-r--r-- | platform/android/export/export.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index c3ff157f99..c562a47b00 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -228,7 +228,7 @@ class EditorExportAndroid : public EditorExportPlatform { }; Vector<Device> devices; - bool devices_changed; + volatile bool devices_changed; Mutex *device_lock; Thread *device_thread; volatile bool quit_request; @@ -1154,7 +1154,10 @@ public: virtual bool poll_devices() { bool dc = devices_changed; - devices_changed = false; + if (dc) { + // don't clear unless we're reporting true, to avoid race + devices_changed = false; + } return dc; } @@ -1857,9 +1860,9 @@ public: run_icon->create_from_image(img); device_lock = Mutex::create(); - device_thread = Thread::create(_device_poll_thread, this); devices_changed = true; quit_request = false; + device_thread = Thread::create(_device_poll_thread, this); } ~EditorExportAndroid() { |