From ffb649e4c63dc68b4a418896c8e2e0fa6faa77fb Mon Sep 17 00:00:00 2001 From: David Elliott Date: Wed, 14 Jan 2004 02:50:18 +0000 Subject: [PATCH] * In _GSocket_Get_Mac_Socket(), do not call CFSocketSetSocketFlags to turn off kCFSocketCloseOnInvalidate. Furthermore, kCFSocketAutomaticallyReenableWriteCallback wasn't part of default flags but had been erroneously included here. * Call CFSocketInvalidate() from _GSocket_Diable_Events instead of from _GSocket_GUI_Destroy_Socket. GSocket calls this from GSocket_close and so in combination with the above change and the most recent change to gsocket.c the CFSocket should now be invalidated and closed for all cases and not just planned shutdown. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/mac/carbon/gsockosx.c | 10 ++-------- src/mac/gsockosx.c | 10 ++-------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/src/mac/carbon/gsockosx.c b/src/mac/carbon/gsockosx.c index ba191edbde..614ed425c8 100644 --- a/src/mac/carbon/gsockosx.c +++ b/src/mac/carbon/gsockosx.c @@ -67,13 +67,6 @@ struct MacGSocketData* _GSocket_Get_Mac_Socket(GSocket *socket) ALL_CALLBACK_TYPES, Mac_Socket_Callback, &cont); 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; /* Keep the source and the socket around. */ @@ -110,7 +103,6 @@ void _GSocket_GUI_Destroy_Socket(GSocket *socket) struct MacGSocketData *data = (struct MacGSocketData*)(socket->m_gui_dependent); if (data) { - CFSocketInvalidate(data->socket); CFRelease(data->socket); free(data); } @@ -181,7 +173,9 @@ void _GSocket_Disable_Events(GSocket *socket) struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket); if (!data) return; + /* CFSocketInvalidate does CFRunLoopRemoveSource anyway */ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), data->source, kCFRunLoopCommonModes); + CFSocketInvalidate(data->socket); } #endif // wxUSE_SOCKETS diff --git a/src/mac/gsockosx.c b/src/mac/gsockosx.c index ba191edbde..614ed425c8 100644 --- a/src/mac/gsockosx.c +++ b/src/mac/gsockosx.c @@ -67,13 +67,6 @@ struct MacGSocketData* _GSocket_Get_Mac_Socket(GSocket *socket) ALL_CALLBACK_TYPES, Mac_Socket_Callback, &cont); 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; /* Keep the source and the socket around. */ @@ -110,7 +103,6 @@ void _GSocket_GUI_Destroy_Socket(GSocket *socket) struct MacGSocketData *data = (struct MacGSocketData*)(socket->m_gui_dependent); if (data) { - CFSocketInvalidate(data->socket); CFRelease(data->socket); free(data); } @@ -181,7 +173,9 @@ void _GSocket_Disable_Events(GSocket *socket) struct MacGSocketData* data = _GSocket_Get_Mac_Socket(socket); if (!data) return; + /* CFSocketInvalidate does CFRunLoopRemoveSource anyway */ CFRunLoopRemoveSource(CFRunLoopGetCurrent(), data->source, kCFRunLoopCommonModes); + CFSocketInvalidate(data->socket); } #endif // wxUSE_SOCKETS