From 2d302a8ac0a947a10ff427c60ad6d526a20fe9e0 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Tue, 28 Sep 2021 11:27:00 +1000 Subject: wasm: fix deadlock when thread calls exit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a secondary thread calls exit, do not exit the wasm runtime Change-Id: I922da47b70df868554d42ad03ef7393c58162b03 Fixes: QTBUG-96593 Reviewed-by: Morten Johan Sørvig --- src/corelib/kernel/qeventloop.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/corelib/kernel/qeventloop.cpp') diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp index 98caee3811..d58ab25218 100644 --- a/src/corelib/kernel/qeventloop.cpp +++ b/src/corelib/kernel/qeventloop.cpp @@ -50,6 +50,9 @@ #ifdef Q_OS_WASM #include +#if QT_CONFIG(thread) +#include +#endif #endif QT_BEGIN_NAMESPACE @@ -295,6 +298,9 @@ void QEventLoop::exit(int returnCode) // QEventLoop::exec() never returns in emscripten. We implement approximate behavior here. // QTBUG-70185 if (threadData->loopLevel == 1) { +#if QT_CONFIG(thread) + if (emscripten_is_main_browser_thread()) +#endif emscripten_force_exit(returnCode); } else { d->inExec = false; -- cgit v1.2.3