--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name: gtk/gsockgtk.cpp
+// Purpose: implementation of wxGTK-specific socket event handling
+// Author: Guilhem Lavaux, Vadim Zeitlin
+// Created: 1999
+// RCS-ID: $Id$
+// Copyright: (c) 1999, 2007 wxWidgets dev team
+// Licence: wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_SOCKETS
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <gdk/gdk.h>
+#include <glib.h>
+
+#include "wx/private/socket.h"
+#include "wx/apptrait.h"
+
+extern "C" {
+static
+void wxSocket_GDK_Input(gpointer data,
+ gint WXUNUSED(source),
+ GdkInputCondition condition)
+{
+ wxSocketImpl const *socket = static_cast<wxSocketImpl *>(data);
+
+ if ( condition & GDK_INPUT_READ )
+ socket->Detected_Read();
+ if ( condition & GDK_INPUT_WRITE )
+ socket->Detected_Write();
+}
+}
+
+class GTKSocketManager : public wxSocketInputBasedManager
+{
+public:
+ virtual int AddInput(wxSocketImpl *socket, SocketDir d)
+ {
+ return gdk_input_add
+ (
+ socket->m_fd,
+ d == FD_OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
+ wxSocket_GDK_Input,
+ socket
+ );
+ }
+
+ virtual void RemoveInput(int fd)
+ {
+ gdk_input_remove(fd);
+ }
+};
+
+wxSocketManager *wxGUIAppTraits::GetSocketManager()
+{
+ static GTKSocketManager s_manager;
+ return &s_manager;
+}
+
+#endif // wxUSE_SOCKETS