summaryrefslogtreecommitdiffstats
path: root/platform/web
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-02-07 11:06:23 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-02-07 11:06:23 +0100
commite89807514ea6fff2128615e6799b178de76ee7be (patch)
tree0225e8cd5727dc770f8a3854994abb36bd6dee3f /platform/web
parentc9c2b1263754e3bfb9025942645352f242670601 (diff)
parentea974e18777d60800ac6fe7e4aad6a65b786e693 (diff)
downloadredot-engine-e89807514ea6fff2128615e6799b178de76ee7be.tar.gz
Merge pull request #88043 from jsjtxietian/web-data-race
Fix data race regarding `server_quit` in `EditorExportPlatformWeb`
Diffstat (limited to 'platform/web')
-rw-r--r--platform/web/export/export_plugin.cpp4
-rw-r--r--platform/web/export/export_plugin.h2
2 files changed, 3 insertions, 3 deletions
diff --git a/platform/web/export/export_plugin.cpp b/platform/web/export/export_plugin.cpp
index d7e72612b4..e2967ee8b8 100644
--- a/platform/web/export/export_plugin.cpp
+++ b/platform/web/export/export_plugin.cpp
@@ -676,7 +676,7 @@ Ref<Texture2D> EditorExportPlatformWeb::get_run_icon() const {
void EditorExportPlatformWeb::_server_thread_poll(void *data) {
EditorExportPlatformWeb *ej = static_cast<EditorExportPlatformWeb *>(data);
- while (!ej->server_quit) {
+ while (!ej->server_quit.get()) {
OS::get_singleton()->delay_usec(6900);
{
MutexLock lock(ej->server_lock);
@@ -714,7 +714,7 @@ EditorExportPlatformWeb::~EditorExportPlatformWeb() {
if (server.is_valid()) {
server->stop();
}
- server_quit = true;
+ server_quit.set(true);
if (server_thread.is_started()) {
server_thread.wait_to_finish();
}
diff --git a/platform/web/export/export_plugin.h b/platform/web/export/export_plugin.h
index 98e3fe729e..c73d6d6794 100644
--- a/platform/web/export/export_plugin.h
+++ b/platform/web/export/export_plugin.h
@@ -52,7 +52,7 @@ class EditorExportPlatformWeb : public EditorExportPlatform {
int menu_options = 0;
Ref<EditorHTTPServer> server;
- bool server_quit = false;
+ SafeNumeric<bool> server_quit;
Mutex server_lock;
Thread server_thread;