From 7d66cdccd0e78240fda99c122954b4381fa5a6b0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 27 Dec 2008 21:56:05 +0000 Subject: [PATCH] don't remove/add back the socket to the list of inputs monitored by the event loop all the time but just leave it there until the socket is destroyed; this should be beneficial from performance point of view (although hard to measure) and also makes the code simpler git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/unix/private/sockunix.h | 11 +---------- src/unix/sockunix.cpp | 26 -------------------------- 2 files changed, 1 insertion(+), 36 deletions(-) diff --git a/include/wx/unix/private/sockunix.h b/include/wx/unix/private/sockunix.h index 7a382c8ad3..11e512ec15 100644 --- a/include/wx/unix/private/sockunix.h +++ b/include/wx/unix/private/sockunix.h @@ -52,12 +52,7 @@ public: private: virtual void DoClose() { - wxSocketManager * const manager = wxSocketManager::Get(); - if ( manager ) - { - manager->Uninstall_Callback(this, wxSOCKET_INPUT); - manager->Uninstall_Callback(this, wxSOCKET_OUTPUT); - } + DisableEvents(); close(m_fd); } @@ -78,10 +73,6 @@ private: void DoEnableEvents(bool enable); - // enable or disable events for the given event - void EnableEvent(wxSocketNotify event); - void DisableEvent(wxSocketNotify event); - int Recv_Stream(void *buffer, int size); int Recv_Dgram(void *buffer, int size); int Send_Stream(const void *buffer, int size); diff --git a/src/unix/sockunix.cpp b/src/unix/sockunix.cpp index 3becca02a4..28aa7ed7db 100644 --- a/src/unix/sockunix.cpp +++ b/src/unix/sockunix.cpp @@ -493,9 +493,6 @@ int wxSocketImplUnix::Read(void *buffer, int size) return -1; } - /* Disable events during query of socket status */ - DisableEvent(wxSOCKET_INPUT); - /* Read the data */ if (m_stream) ret = Recv_Stream(buffer, size); @@ -525,9 +522,6 @@ int wxSocketImplUnix::Read(void *buffer, int size) m_error = wxSOCKET_IOERR; } - /* Enable events again now that we are done processing */ - EnableEvent(wxSOCKET_INPUT); - return ret; } @@ -557,15 +551,6 @@ int wxSocketImplUnix::Write(const void *buffer, int size) { m_error = wxSOCKET_IOERR; } - - /* Only reenable OUTPUT events after an error (just like WSAAsyncSelect - * in MSW). Once the first OUTPUT event is received, users can assume - * that the socket is writable until a read operation fails. Only then - * will further OUTPUT events be posted. - */ - EnableEvent(wxSOCKET_OUTPUT); - - return -1; } return ret; @@ -573,16 +558,6 @@ int wxSocketImplUnix::Write(const void *buffer, int size) /* Flags */ -void wxSocketImplUnix::EnableEvent(wxSocketNotify event) -{ - wxSocketManager::Get()->Install_Callback(this, event); -} - -void wxSocketImplUnix::DisableEvent(wxSocketNotify event) -{ - wxSocketManager::Get()->Uninstall_Callback(this, event); -} - int wxSocketImplUnix::Recv_Stream(void *buffer, int size) { int ret; @@ -690,7 +665,6 @@ int wxSocketImplUnix::Send_Dgram(const void *buffer, int size) void wxSocketImplUnix::OnStateChange(wxSocketNotify event) { - DisableEvent(event); NotifyOnStateChange(event); if ( event == wxSOCKET_LOST ) -- 2.47.2