diff --git a/src/plugins/platforms/wasm/qwasmscreen.cpp b/src/plugins/platforms/wasm/qwasmscreen.cpp index ef1fb39f5b8..357ee327fed 100644 --- a/src/plugins/platforms/wasm/qwasmscreen.cpp +++ b/src/plugins/platforms/wasm/qwasmscreen.cpp @@ -119,13 +119,16 @@ QWasmScreen::QWasmScreen(const emscripten::val &containerOrCanvas) QWasmScreen::~QWasmScreen() { - emscripten::val specialHtmlTargets = emscripten::val::module_property("specialHTMLTargets"); + // Delete the compositor before removing the screen from specialHTMLTargets, + // since its destructor needs to look up the target when deregistering + // event handlers. + m_compositor = nullptr; + emscripten::val specialHtmlTargets = emscripten::val::module_property("specialHTMLTargets"); std::string id = std::string("!qtcanvas_") + std::to_string(uint32_t(this)); specialHtmlTargets.set(id, emscripten::val::undefined()); m_canvas.set(m_canvasResizeObserverCallbackContextPropertyName, emscripten::val(intptr_t(0))); - destroy(); } void QWasmScreen::destroy()