X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/563cf28f2abb5f9e2ef3439b89b83b55408ec319..9cb80f3fa331228864ebc13188a0168da36a4998:/src/msw/app.cpp diff --git a/src/msw/app.cpp b/src/msw/app.cpp index f1e9f04165..324dd87457 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -128,10 +128,8 @@ struct ClassRegInfo } // the name of the registered class with and without CS_[HV]REDRAW styles - const wxString regname; - const wxString regnameNR; - - wxDECLARE_NO_ASSIGN_CLASS(ClassRegInfo); + wxString regname; + wxString regnameNR; }; namespace @@ -235,14 +233,20 @@ bool wxGUIAppTraits::DoMessageFromThreadWait() return evtLoop->Dispatch(); } -DWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread) +DWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread, int flags) { - // 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 ( flags == wxTHREAD_WAIT_BLOCK || + !wxIsMainThread() || + !wxEventLoop::GetActive() ) + { + // Simple blocking wait. return DoSimpleWaitForThread(hThread); + } return ::MsgWaitForMultipleObjects ( @@ -298,6 +302,8 @@ wxEventLoopBase* wxGUIAppTraits::CreateEventLoop() #ifndef __WXWINCE__ +#if wxUSE_DYNLIB_CLASS + #include namespace @@ -574,6 +580,20 @@ bool wxGUIAppTraits::WriteToStderr(const wxString& text) return s_consoleStderr.IsOkToUse() && s_consoleStderr.Write(text); } +#else // !wxUSE_DYNLIB_CLASS + +bool wxGUIAppTraits::CanUseStderr() +{ + return false; +} + +bool wxGUIAppTraits::WriteToStderr(const wxString& WXUNUSED(text)) +{ + return false; +} + +#endif // wxUSE_DYNLIB_CLASS/!wxUSE_DYNLIB_CLASS + #endif // !__WXWINCE__ // ===========================================================================