소스 검색

Merge pull request #20132 from ibrahn/fix-android-device-poll-thread

fixed branch on uninit and data race in editor android device polling
Rémi Verschelde 7 년 전
부모
커밋
26d3e31e05
1개의 변경된 파일6개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 3
      platform/android/export/export.cpp

+ 6 - 3
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() {