diff --git a/include/wx/private/socket.h b/include/wx/private/socket.h index 973b764f7d..362aa61982 100644 --- a/include/wx/private/socket.h +++ b/include/wx/private/socket.h @@ -308,6 +308,9 @@ public: protected: wxSocketImpl(wxSocketBase& wxsocket); + // get the associated socket flags + wxSocketFlags GetSocketFlags() const { return m_wxsocket->GetFlags(); } + // true if we're a listening stream socket bool m_server; diff --git a/src/unix/sockunix.cpp b/src/unix/sockunix.cpp index 96638c0248..78542648ef 100644 --- a/src/unix/sockunix.cpp +++ b/src/unix/sockunix.cpp @@ -90,6 +90,11 @@ wxSocketError wxSocketImplUnix::GetLastError() const void wxSocketImplUnix::DoEnableEvents(int flags, bool enable) { + // No events for blocking sockets, they should be usable from the other + // threads and the events only work for the sockets used by the main one. + if ( GetSocketFlags() & wxSOCKET_BLOCK ) + return; + wxSocketManager * const manager = wxSocketManager::Get(); if (!manager) return;