Apply modified patch 1785299 to trunk and 2.8.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH@49205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -206,6 +206,9 @@ void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
|
|||||||
/* CFSocketInvalidate does CFRunLoopRemoveSource anyway */
|
/* CFSocketInvalidate does CFRunLoopRemoveSource anyway */
|
||||||
CFRunLoopRemoveSource(s_mainRunLoop, data->source, kCFRunLoopCommonModes);
|
CFRunLoopRemoveSource(s_mainRunLoop, data->source, kCFRunLoopCommonModes);
|
||||||
CFSocketInvalidate(data->socket);
|
CFSocketInvalidate(data->socket);
|
||||||
|
|
||||||
|
// CFSocketInvalidate has closed the socket so we want to make sure GSocket knows this
|
||||||
|
socket->m_fd = -1 /*INVALID_SOCKET*/;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_SOCKETS
|
#endif // wxUSE_SOCKETS
|
||||||
|
@@ -545,10 +545,17 @@ GSocket::GSocket()
|
|||||||
void GSocket::Close()
|
void GSocket::Close()
|
||||||
{
|
{
|
||||||
gs_gui_functions->Disable_Events(this);
|
gs_gui_functions->Disable_Events(this);
|
||||||
/* gsockosx.c calls CFSocketInvalidate which closes the socket for us */
|
|
||||||
#if !(defined(__DARWIN__) && (defined(__WXMAC__) || defined(__WXCOCOA__)))
|
/* When running on OS X, the gsockosx implementation of GSocketGUIFunctionsTable
|
||||||
close(m_fd);
|
will close the socket during Disable_Events. However, it will only do this
|
||||||
#endif
|
if it is being used. That is, it won't do it in a console program. To
|
||||||
|
ensure we get the right behavior, we have gsockosx set m_fd = INVALID_SOCKET
|
||||||
|
if it has closed the socket which indicates to us (at runtime, instead of
|
||||||
|
at compile time as this had been before) that the socket has already
|
||||||
|
been closed.
|
||||||
|
*/
|
||||||
|
if(m_fd != INVALID_SOCKET)
|
||||||
|
close(m_fd);
|
||||||
m_fd = INVALID_SOCKET;
|
m_fd = INVALID_SOCKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user