diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmintegration.cpp | 8 | ||||
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmscreen.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/platforms/wasm/qwasmscreen.h | 2 |
3 files changed, 6 insertions, 7 deletions
diff --git a/src/plugins/platforms/wasm/qwasmintegration.cpp b/src/plugins/platforms/wasm/qwasmintegration.cpp index c6bb7f98c98..b7e1a0ad28a 100644 --- a/src/plugins/platforms/wasm/qwasmintegration.cpp +++ b/src/plugins/platforms/wasm/qwasmintegration.cpp @@ -196,7 +196,8 @@ QWasmIntegration::~QWasmIntegration() delete m_drag; for (const auto &elementAndScreen : m_screens) - QWindowSystemInterface::handleScreenRemoved(elementAndScreen.second); + elementAndScreen.second->deleteScreen(); + m_screens.clear(); s_instance = nullptr; @@ -338,10 +339,7 @@ void QWasmIntegration::removeScreen(const emscripten::val &element) qWarning() << "Attempting to remove non-existing screen for element" << QWasmString::toQString(element["id"]);; return; } - QWasmScreen *exScreen = it->second; - m_screens.erase(it); - exScreen->destroy(); // clean up before deleting the screen - QWindowSystemInterface::handleScreenRemoved(exScreen); + it->second->deleteScreen(); } void QWasmIntegration::resizeScreen(const emscripten::val &element) diff --git a/src/plugins/platforms/wasm/qwasmscreen.cpp b/src/plugins/platforms/wasm/qwasmscreen.cpp index 357ee327fed..03c672b9ba2 100644 --- a/src/plugins/platforms/wasm/qwasmscreen.cpp +++ b/src/plugins/platforms/wasm/qwasmscreen.cpp @@ -131,9 +131,10 @@ QWasmScreen::~QWasmScreen() m_canvas.set(m_canvasResizeObserverCallbackContextPropertyName, emscripten::val(intptr_t(0))); } -void QWasmScreen::destroy() +void QWasmScreen::deleteScreen() { m_compositor->destroy(); + QWindowSystemInterface::handleScreenRemoved(this); } QWasmScreen *QWasmScreen::get(QPlatformScreen *screen) diff --git a/src/plugins/platforms/wasm/qwasmscreen.h b/src/plugins/platforms/wasm/qwasmscreen.h index 07f52f9fdcf..65efefdeefd 100644 --- a/src/plugins/platforms/wasm/qwasmscreen.h +++ b/src/plugins/platforms/wasm/qwasmscreen.h @@ -55,7 +55,7 @@ class QWasmScreen : public QObject, public QPlatformScreen public: QWasmScreen(const emscripten::val &containerOrCanvas); ~QWasmScreen(); - void destroy(); + void deleteScreen(); static QWasmScreen *get(QPlatformScreen *screen); static QWasmScreen *get(QScreen *screen); |
