Use Unix' gsocketiohandler files for wxBase.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51055
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
<set var="BASE_OS2_SRC" hints="files">
src/common/fdiodispatcher.cpp
src/common/selectdispatcher.cpp
<set var="BASE_OS2_SRC" hints="files">
src/common/fdiodispatcher.cpp
src/common/selectdispatcher.cpp
+ src/common/gsocketiohandler.cpp
src/unix/appunix.cpp
src/unix/evtloopunix.cpp
src/unix/timerunx.cpp
src/unix/appunix.cpp
src/unix/evtloopunix.cpp
src/unix/timerunx.cpp
<set var="BASE_OS2_HDR" hints="files">
wx/private/fdiodispatcher.h
wx/private/selectdispatcher.h
<set var="BASE_OS2_HDR" hints="files">
wx/private/fdiodispatcher.h
wx/private/selectdispatcher.h
+ wx/private/gsocketiohandler.h
wx/unix/app.h
wx/os2/apptbase.h
wx/os2/apptrait.h
wx/unix/app.h
wx/os2/apptbase.h
wx/os2/apptrait.h
// Clean up message queue.
virtual void TerminateGui(unsigned long ulHab);
// Clean up message queue.
virtual void TerminateGui(unsigned long ulHab);
+#if wxUSE_SOCKETS
+ // returns the select()-based socket manager for console applications which
+ // is also used by some ports (wxX11, wxDFB) in the GUI build (hence it is
+ // here and not in wxConsoleAppTraits)
+ virtual GSocketManager *GetSocketManager();
+#endif
};
#endif // _WX_OS2_APPTBASE_H_
};
#endif // _WX_OS2_APPTBASE_H_
#ifdef __WXGTK__
virtual wxString GetDesktopEnvironment() const;
#endif
#ifdef __WXGTK__
virtual wxString GetDesktopEnvironment() const;
#endif
+#if wxUSE_SOCKETS
+ virtual GSocketManager *GetSocketManager();
+#endif
socket->Detected_Write();
}
socket->Detected_Write();
}
-void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket, GSocketEvent event)
+class PMSocketManager : public GSocketInputBasedManager
- int *m_id = (int *)(socket->m_gui_dependent);
- int c;
-
- if (socket->m_fd == -1)
- return;
-
- switch (event)
+public:
+ virtual int AddInput(GSocket *socket, SocketDir d)
- case GSOCK_LOST: /* fall-through */
- case GSOCK_INPUT: c = 0; break;
- case GSOCK_OUTPUT: c = 1; break;
- case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
- default: return;
- }
-
- if (m_id[c] != -1)
- wxTheApp->RemoveSocketHandler(m_id[c]);
- if (c == 0)
- {
- m_id[0] = wxTheApp->AddSocketHandler(socket->m_fd, wxSockReadMask,
- _GSocket_PM_Input, (void *)socket);
- }
- else
- {
- m_id[1] = wxTheApp->AddSocketHandler(socket->m_fd, wxSockWriteMask,
- _GSocket_PM_Output, (void *)socket);
+ if (d == FD_OUTPUT)
+ return wxTheApp->AddSocketHandler(socket->m_fd, wxSockWriteMask,
+ _GSocket_PM_Output, (void *)socket);
+ else
+ return wxTheApp->AddSocketHandler(socket->m_fd, wxSockReadMask,
+ _GSocket_PM_Input, (void *)socket);
-void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket, GSocketEvent event)
-{
- int *m_id = (int *)(socket->m_gui_dependent);
- int c;
- switch (event)
+ virtual void RemoveInput(int fd)
- case GSOCK_LOST: /* fall-through */
- case GSOCK_INPUT: c = 0; break;
- case GSOCK_OUTPUT: c = 1; break;
- case GSOCK_CONNECTION: c = ((socket->m_server) ? 0 : 1); break;
- default: return;
+ wxTheApp->RemoveSocketHandler(fd);
- if (m_id[c] != -1)
- wxTheApp->RemoveSocketHandler(m_id[c]);
-
- m_id[c] = -1;
-}
-void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
+GSocketManager *wxGUIAppTraits::GetSocketManager()
- Install_Callback(socket, GSOCK_INPUT);
- Install_Callback(socket, GSOCK_OUTPUT);
+ static GTKSocketManager s_manager;
+ return &s_manager;
-void GSocketGUIFunctionsTableConcrete::Disable_Events(GSocket *socket)
-{
- Uninstall_Callback(socket, GSOCK_INPUT);
- Uninstall_Callback(socket, GSOCK_OUTPUT);
-}
#else /* !wxUSE_SOCKETS */
#else /* !wxUSE_SOCKETS */