///////////////////////////////////////////////////////////////////////////////
-// Name: gtk/gsockgtk.cpp
+// Name: src/gtk/sockgtk.cpp
// Purpose: implementation of wxGTK-specific socket event handling
// Author: Guilhem Lavaux, Vadim Zeitlin
// Created: 1999
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#if wxUSE_SOCKETS
-
-#include <gdk/gdk.h>
-#include <glib.h>
+#if wxUSE_SOCKETS && defined(__UNIX__)
#include "wx/apptrait.h"
#include "wx/private/fdiomanager.h"
+#include <glib.h>
+
extern "C" {
-static
-void wxSocket_GDK_Input(gpointer data,
- gint WXUNUSED(source),
- GdkInputCondition condition)
+static gboolean wxSocket_Input(GIOChannel*, GIOCondition condition, gpointer data)
{
wxFDIOHandler * const handler = static_cast<wxFDIOHandler *>(data);
- if ( condition & GDK_INPUT_READ )
+ if (condition & G_IO_IN)
{
handler->OnReadWaiting();
// shouldn't call OnWriteWaiting() as the socket is now closed and it
// would assert
if ( !handler->IsOk() )
- return;
+ return true;
}
- if ( condition & GDK_INPUT_WRITE )
+ if (condition & G_IO_OUT)
handler->OnWriteWaiting();
+
+ return true;
}
}
public:
virtual int AddInput(wxFDIOHandler *handler, int fd, Direction d)
{
- return gdk_input_add
- (
- fd,
- d == OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
- wxSocket_GDK_Input,
- handler
- );
+ return g_io_add_watch(
+ g_io_channel_unix_new(fd),
+ d == OUTPUT ? G_IO_OUT : G_IO_IN,
+ wxSocket_Input,
+ handler);
}
virtual void
RemoveInput(wxFDIOHandler* WXUNUSED(handler), int fd, Direction WXUNUSED(d))
{
- gdk_input_remove(fd);
+ g_source_remove(fd);
}
};
return &s_manager;
}
-#endif // wxUSE_SOCKETS
+#endif // wxUSE_SOCKETS && __UNIX__