#include "wx/private/socket.h"
#include "wx/unix/private/sockunix.h"
#include "wx/apptrait.h"
+#include "wx/link.h"
+
+#include "wx/osx/core/cfstring.h" // for wxMacWakeUp() only
#include <CoreFoundation/CoreFoundation.h>
CFSocketInvalidate(m_socket);
CFRelease(m_source);
+ m_source = NULL;
+
CFRelease(m_socket);
+ m_socket = NULL;
}
// initialize the data associated with the given socket
if ( !m_source )
{
CFRelease(m_socket);
+ m_socket = NULL;
+
return false;
}
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;
}
} gs_OSXManagerSetter;
+// see the relative linker macro in socket.cpp
+wxFORCE_LINK_THIS_MODULE( osxsocket );
+
#endif // wxUSE_SOCKETS