Cleanly separate GUI socket-related code from net library.
This fixes linking problems under Unix introduced by recent changes which fixed previous problems which were due to files not being linked in at all. In order to provide a clean separation between base, net and core libraries we now use the same wxSocketManager (wxSocketFDBasedManager), defined in net library for both console and GUI Unix applications and just use different FD IO manager for them: the latter can be defined in base and core libraries as it doesn't involve wxSocketImpl at all, only its base wxFDIOHandler class. At more detailed level, these changes required: 1. Adding the new wxFDIOManager class. 2. Refactoring the old (and now removed) wxSocketFDIOManager to use the same code as wxSocketFDIOManager. This involved: a) Adding handler and direction parameter to RemoveInput(). b) Storing the mask of registered events in wxFDIOHandler itself. c) Defining wxFDIOManagerUnix which works with wxFDIODispatcher. 3. Changing the traits classes in Unix ports to define GetFDIOManager() instead of GetSocketManager(). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
// Created: 1999
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) 1999, 2007 wxWidgets dev team
|
||||
// (c) 2009 Vadim Zeitlin
|
||||
// Licence: wxWindows licence
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -13,14 +14,11 @@
|
||||
|
||||
#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"
|
||||
#include "wx/private/fdiomanager.h"
|
||||
|
||||
extern "C" {
|
||||
static
|
||||
@@ -28,7 +26,7 @@ void wxSocket_GDK_Input(gpointer data,
|
||||
gint WXUNUSED(source),
|
||||
GdkInputCondition condition)
|
||||
{
|
||||
wxSocketImplUnix * const handler = static_cast<wxSocketImplUnix *>(data);
|
||||
wxFDIOHandler * const handler = static_cast<wxFDIOHandler *>(data);
|
||||
|
||||
if ( condition & GDK_INPUT_READ )
|
||||
{
|
||||
@@ -46,29 +44,30 @@ void wxSocket_GDK_Input(gpointer data,
|
||||
}
|
||||
}
|
||||
|
||||
class GTKSocketManager : public wxSocketInputBasedManager
|
||||
class GTKFDIOManager : public wxFDIOManager
|
||||
{
|
||||
public:
|
||||
virtual int AddInput(wxSocketImplUnix *handler, int fd, SocketDir d)
|
||||
virtual int AddInput(wxFDIOHandler *handler, int fd, Direction d)
|
||||
{
|
||||
return gdk_input_add
|
||||
(
|
||||
fd,
|
||||
d == FD_OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
|
||||
d == OUTPUT ? GDK_INPUT_WRITE : GDK_INPUT_READ,
|
||||
wxSocket_GDK_Input,
|
||||
handler
|
||||
);
|
||||
}
|
||||
|
||||
virtual void RemoveInput(int fd)
|
||||
virtual void
|
||||
RemoveInput(wxFDIOHandler* WXUNUSED(handler), int fd, Direction WXUNUSED(d))
|
||||
{
|
||||
gdk_input_remove(fd);
|
||||
}
|
||||
};
|
||||
|
||||
wxSocketManager *wxGUIAppTraits::GetSocketManager()
|
||||
wxFDIOManager *wxGUIAppTraits::GetFDIOManager()
|
||||
{
|
||||
static GTKSocketManager s_manager;
|
||||
static GTKFDIOManager s_manager;
|
||||
return &s_manager;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user