From: Vadim Zeitlin Date: Sun, 16 Aug 2009 23:14:07 +0000 (+0000) Subject: Fix hangups when using sockets under OS X. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/17a546027262c3a97792d22108c6f652cf8b4046?ds=inline 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 --- diff --git a/src/osx/core/sockosx.cpp b/src/osx/core/sockosx.cpp index d19c7ef901..6a5928bbb8 100644 --- a/src/osx/core/sockosx.cpp +++ b/src/osx/core/sockosx.cpp @@ -17,6 +17,8 @@ #include "wx/unix/private/sockunix.h" #include "wx/apptrait.h" +#include "wx/osx/core/cfstring.h" // for wxMacWakeUp() only + #include namespace @@ -156,6 +158,13 @@ private: default: 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;