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:
Vadim Zeitlin
2009-08-16 23:14:07 +00:00
parent 05583a26e1
commit 17a5460272

View File

@@ -17,6 +17,8 @@
#include "wx/unix/private/sockunix.h"
#include "wx/apptrait.h"
#include "wx/osx/core/cfstring.h" // for wxMacWakeUp() only
#include <CoreFoundation/CoreFoundation.h>
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;