Fix hangups when using sockets under OS X.
A socket event apparently doesn't count as a real event under OS X and our wxEventLoop::DispatchTimeout() doesn't return when it happens -- so we need to generate an artificial wake up event ourselves to make it do it and return control to the code in wxSocket::DoWait() in order for it to process the event. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -17,6 +17,8 @@
|
|||||||
#include "wx/unix/private/sockunix.h"
|
#include "wx/unix/private/sockunix.h"
|
||||||
#include "wx/apptrait.h"
|
#include "wx/apptrait.h"
|
||||||
|
|
||||||
|
#include "wx/osx/core/cfstring.h" // for wxMacWakeUp() only
|
||||||
|
|
||||||
#include <CoreFoundation/CoreFoundation.h>
|
#include <CoreFoundation/CoreFoundation.h>
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@@ -156,6 +158,13 @@ private:
|
|||||||
default:
|
default:
|
||||||
wxFAIL_MSG( "unexpected socket callback" );
|
wxFAIL_MSG( "unexpected socket callback" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// receiving a socket event does _not_ make ReceiveNextEvent() (or the
|
||||||
|
// equivalent NSApp:nextEventMatchingMask:untilDate:inMode:dequeue)
|
||||||
|
// return control, i.e. apparently it doesn't count as a real event, so
|
||||||
|
// we need to generate a wake up to return control to the code waiting
|
||||||
|
// for something to happen and process this socket event
|
||||||
|
wxMacWakeUp();
|
||||||
}
|
}
|
||||||
|
|
||||||
CFSocketRef m_socket;
|
CFSocketRef m_socket;
|
||||||
|
Reference in New Issue
Block a user