fixed deadlock when calling wxPostEvent() from worker thread
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
#include "wx/app.h"
|
#include "wx/app.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "wx/thread.h"
|
||||||
#include "wx/timer.h"
|
#include "wx/timer.h"
|
||||||
#include "wx/private/socketevtdispatch.h"
|
#include "wx/private/socketevtdispatch.h"
|
||||||
#include "wx/dfb/private.h"
|
#include "wx/dfb/private.h"
|
||||||
@@ -88,7 +89,16 @@ bool wxEventLoop::Dispatch()
|
|||||||
// OnNextIteration() will be called frequently enough
|
// OnNextIteration() will be called frequently enough
|
||||||
const int TIMEOUT = 100;
|
const int TIMEOUT = 100;
|
||||||
|
|
||||||
if ( ms_buffer->WaitForEventWithTimeout(0, TIMEOUT) )
|
// release the GUI mutex so that other threads have a chance to post
|
||||||
|
// events:
|
||||||
|
wxMutexGuiLeave();
|
||||||
|
|
||||||
|
bool rv = ms_buffer->WaitForEventWithTimeout(0, TIMEOUT);
|
||||||
|
|
||||||
|
// and acquire it back before calling any event handlers:
|
||||||
|
wxMutexGuiEnter();
|
||||||
|
|
||||||
|
if ( rv )
|
||||||
{
|
{
|
||||||
switch ( ms_buffer->GetLastResult() )
|
switch ( ms_buffer->GetLastResult() )
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user