From ef0fdf3914bf957feeadbac5a77505fc98d65e9b Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 26 Oct 2010 15:11:06 +0000 Subject: [PATCH 1/1] Don't dispatch messages while waiting in worker thread in wxMSW. We only want to continue dispatching messages while waiting for another thread to terminate if we are waiting in the main thread. Closes #12618. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/app.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 81261ce15f..6f93301d0a 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -235,11 +235,12 @@ bool wxGUIAppTraits::DoMessageFromThreadWait() DWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread) { - // if we don't have a running event loop, we shouldn't wait for the - // messages as we never remove them from the message queue and so we enter - // an infinite loop as MsgWaitForMultipleObjects() keeps returning - // WAIT_OBJECT_0 + 1 - if ( !wxEventLoop::GetActive() ) + // We only ever dispatch messages from the main thread and, additionally, + // even from the main thread we shouldn't wait for the message if we don't + // have a running event loop as we would never remove them from the message + // queue then and so we would enter an infinite loop as + // MsgWaitForMultipleObjects() keeps returning WAIT_OBJECT_0 + 1. + if ( !wxIsMainThread() || !wxEventLoop::GetActive() ) return DoSimpleWaitForThread(hThread); return ::MsgWaitForMultipleObjects -- 2.45.2