X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a38b65ab35a40840d7799e8e67b781ca7474e505..09155be84e2240da3977cf3629c42d412177a570:/src/mac/carbon/gsockosx.c?ds=sidebyside diff --git a/src/mac/carbon/gsockosx.c b/src/mac/carbon/gsockosx.c index fd9703227c..614ed425c8 100644 --- a/src/mac/carbon/gsockosx.c +++ b/src/mac/carbon/gsockosx.c @@ -65,19 +65,9 @@ struct MacGSocketData* _GSocket_Get_Mac_Socket(GSocket *socket) CFSocketRef cf = CFSocketCreateWithNative(NULL, socket->m_fd, ALL_CALLBACK_TYPES, Mac_Socket_Callback, &cont); - /* Disable the callbacks until we are asked by GSocket to enable them. */ - CFSocketDisableCallBacks(cf, ALL_CALLBACK_TYPES); CFRunLoopSourceRef source = CFSocketCreateRunLoopSource(NULL, cf, 0); assert(source); - /* Turn off kCFSocketCloseOnInvalidate (NOTE: > 10.2 only!) */ - /* Another default flag that we don't turn on here is for DataCallBack and - also AcceptCallback (which overlap in bits) which we don't use anyway */ - /* FIXME: For < 10.2 compatibility fix GSocket to call a platform-dependent - function to close the socket so that we can just call invalidate and - avoid having to set any special flags at all. */ - CFSocketSetSocketFlags(cf, kCFSocketAutomaticallyReenableReadCallBack | kCFSocketAutomaticallyReenableWriteCallBack); socket->m_gui_dependent = (char*)data; - CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode); /* Keep the source and the socket around. */ data->source = source; @@ -113,9 +103,6 @@ void _GSocket_GUI_Destroy_Socket(GSocket *socket) struct MacGSocketData *data = (struct MacGSocketData*)(socket->m_gui_dependent); if (data) { - /* CFSocketInvalidate does this anyway, so perhaps get rid of this: */ - CFRunLoopRemoveSource(CFRunLoopGetCurrent(), data->source, kCFRunLoopCommonModes); - CFSocketInvalidate(data->socket); CFRelease(data->socket); free(data); } @@ -175,20 +162,20 @@ void _GSocket_Uninstall_Callback(GSocket *socket, GSocketEvent event) void _GSocket_Enable_Events(GSocket *socket) { - CFOptionFlags callBackTypes = kCFSocketReadCallBack | kCFSocketWriteCallBack; struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket); if (!data) return; - if(!socket->m_server) - callBackTypes |= kCFSocketConnectCallBack; - CFSocketEnableCallBacks(data->socket, callBackTypes); + CFRunLoopAddSource(CFRunLoopGetCurrent(), data->source, kCFRunLoopDefaultMode); } void _GSocket_Disable_Events(GSocket *socket) { struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket); if (!data) return; - CFSocketDisableCallBacks(data->socket, ALL_CALLBACK_TYPES); + + /* CFSocketInvalidate does CFRunLoopRemoveSource anyway */ + CFRunLoopRemoveSource(CFRunLoopGetCurrent(), data->source, kCFRunLoopCommonModes); + CFSocketInvalidate(data->socket); } #endif // wxUSE_SOCKETS