From ea570c07b6feef698f103a2876991f05f3ea1eb3 Mon Sep 17 00:00:00 2001 From: John Preston Date: Wed, 1 Sep 2021 19:08:07 +0300 Subject: [PATCH] Attempt to fix a crash in event loop nesting tracking. --- ui/platform/win/ui_window_win.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ui/platform/win/ui_window_win.cpp b/ui/platform/win/ui_window_win.cpp index 2c72ddb..130d63e 100644 --- a/ui/platform/win/ui_window_win.cpp +++ b/ui/platform/win/ui_window_win.cpp @@ -10,6 +10,7 @@ #include "ui/platform/win/ui_window_title_win.h" #include "base/platform/base_platform_info.h" #include "base/platform/win/base_windows_safe_library.h" +#include "base/integration.h" #include "base/debug_log.h" #include "styles/palette.h" @@ -150,15 +151,19 @@ bool WindowHelper::NativeFilter::nativeEventFilter( const QByteArray &eventType, void *message, long *result) { + auto filtered = false; const auto msg = static_cast(message); const auto i = _windowByHandle.find(msg->hwnd); - return (i != end(_windowByHandle)) - ? i->second->handleNativeEvent( - msg->message, - msg->wParam, - msg->lParam, - reinterpret_cast(result)) - : false; + if (i != end(_windowByHandle)) { + base::Integration::Instance().enterFromEventLoop([&] { + filtered = i->second->handleNativeEvent( + msg->message, + msg->wParam, + msg->lParam, + reinterpret_cast(result)); + }); + } + return filtered; } WindowHelper::WindowHelper(not_null window)