From 22b6de6a70900550b5411f14fffc9d48adbbf222 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Sun, 16 Sep 2007 14:29:42 +0000
Subject: [PATCH] more fixes for using wxSocket in console applications (patch
 1756260)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 Makefile.in                      | 226 ++++++++++++++++++-------------
 build/bakefiles/files.bkl        |   5 +-
 build/msw/makefile.bcc           |  72 ++++++----
 build/msw/makefile.gcc           |  72 ++++++----
 build/msw/makefile.vc            |  72 ++++++----
 build/msw/makefile.wat           |  72 ++++++----
 build/msw/wx_core.dsp            |  12 +-
 build/msw/wx_net.dsp             |   4 +
 docs/changes.txt                 |   3 +-
 include/wx/mac/carbon/gsockmac.h |   2 +
 include/wx/msw/gsockmsw.h        |   2 +
 include/wx/unix/gsockunx.h       |  10 ++
 src/common/combocmn.cpp          |   1 +
 src/common/fdiodispatcher.cpp    |   2 +-
 src/common/gsocketiohandler.cpp  |   1 +
 src/common/selectdispatcher.cpp  |  15 +-
 src/common/socket.cpp            |  12 +-
 src/msw/evtloop.cpp              |   2 +-
 src/msw/gsocket.cpp              |  28 +---
 src/unix/epolldispatcher.cpp     |  10 +-
 src/unix/gsocket.cpp             | 104 +++++++-------
 21 files changed, 428 insertions(+), 299 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index f13172159d..07c136b26e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -718,6 +718,7 @@ ALL_BASE_SOURCES =  \
 	src/common/xtistrm.cpp \
 	src/common/zipstrm.cpp \
 	src/common/zstream.cpp \
+	src/common/gsocketiohandler.cpp \
 	src/common/fdiodispatcher.cpp \
 	src/common/selectdispatcher.cpp \
 	src/unix/appunix.cpp \
@@ -799,6 +800,7 @@ ALL_BASE_SOURCES =  \
 	src/common/url.cpp \
 	src/unix/gsocket.cpp \
 	src/msw/gsocket.cpp \
+	src/msw/gsockmsw.cpp \
 	src/msw/urlmsw.cpp \
 	$(NET_WINCE_SRC) \
 	src/xml/xml.cpp \
@@ -3484,6 +3486,7 @@ COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS =  \
 	monodll_utilsexc.o
 @COND_PLATFORM_OS2_1@__BASE_PLATFORM_SRC_OBJECTS = $(COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS)
 COND_PLATFORM_UNIX_1___BASE_PLATFORM_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3521,6 +3524,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS =  \
 @COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS)
 @COND_TOOLKIT_WINCE@__BASE_WINCE_SRC_OBJECTS = monodll_time.o
 COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3541,6 +3545,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS =  \
 	monodll_utilsexc_base.o
 @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS)
 COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3561,6 +3566,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS =  \
 	monodll_utilsexc_base.o
 @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS)
 COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3602,6 +3608,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS =  \
 	monodll_timerunx.o
 @COND_TOOLKIT_MAC@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS)
 COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3622,6 +3629,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS =  \
 	monodll_utilsexc_base.o
 @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS)
 COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS =  \
+	monodll_gsocketiohandler.o \
 	monodll_fdiodispatcher.o \
 	monodll_selectdispatcher.o \
 	monodll_appunix.o \
@@ -3655,9 +3663,12 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS =  \
 @COND_PLATFORM_MACOS_1@__NET_PLATFORM_SRC_OBJECTS = monodll_gsocket.o
 @COND_PLATFORM_OS2_1@__NET_PLATFORM_SRC_OBJECTS = monodll_gsocket.o
 @COND_PLATFORM_UNIX_1@__NET_PLATFORM_SRC_OBJECTS = monodll_gsocket.o
-@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS = \
-@COND_PLATFORM_WIN32_1@	monodll_gsocket.o monodll_urlmsw.o \
-@COND_PLATFORM_WIN32_1@	$(__NET_WINCE_SRC_OBJECTS)
+COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS =  \
+	monodll_gsocket.o \
+	monodll_gsockmsw.o \
+	monodll_urlmsw.o \
+	$(__NET_WINCE_SRC_OBJECTS)
+@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS = $(COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS)
 @COND_TOOLKIT_WINCE@__NET_WINCE_SRC_OBJECTS = monodll_net.o
 COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS =  \
 	$(__CORE_SRC_OBJECTS) \
@@ -4080,7 +4091,6 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS =  \
 @COND_TOOLKIT_COCOA@	monodll_gsockosx.o monodll_hid.o monodll_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS =  \
 	monodll_fontmgrcmn.o \
-	monodll_gsocketiohandler.o \
 	monodll_caret.o \
 	monodll_colour.o \
 	monodll_icon.o \
@@ -4260,7 +4270,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS =  \
 	monodll_gdiobj.o \
 	monodll_gdiplus.o \
 	monodll_graphics.o \
-	monodll_gsockmsw.o \
 	monodll_icon.o \
 	monodll_imaglist.o \
 	monodll_minifram.o \
@@ -4312,7 +4321,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS =  \
 	monodll_gdiobj.o \
 	monodll_gdiplus.o \
 	monodll_graphics.o \
-	monodll_gsockmsw.o \
 	monodll_icon.o \
 	monodll_imaglist.o \
 	monodll_minifram.o \
@@ -4342,7 +4350,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS =  \
 	monodll_fontutil.o \
 	monodll_utilsx11.o \
 	monodll_displayx11.o \
-	monodll_gsocketiohandler.o \
 	monodll_icon.o \
 	monodll_timer.o \
 	monodll_app.o \
@@ -4911,7 +4918,6 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS =  \
 @COND_TOOLKIT_COCOA@	monodll_gsockosx.o monodll_hid.o monodll_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_1 =  \
 	monodll_fontmgrcmn.o \
-	monodll_gsocketiohandler.o \
 	monodll_caret.o \
 	monodll_colour.o \
 	monodll_icon.o \
@@ -5091,7 +5097,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_1 =  \
 	monodll_gdiobj.o \
 	monodll_gdiplus.o \
 	monodll_graphics.o \
-	monodll_gsockmsw.o \
 	monodll_icon.o \
 	monodll_imaglist.o \
 	monodll_minifram.o \
@@ -5143,7 +5148,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_1 =  \
 	monodll_gdiobj.o \
 	monodll_gdiplus.o \
 	monodll_graphics.o \
-	monodll_gsockmsw.o \
 	monodll_icon.o \
 	monodll_imaglist.o \
 	monodll_minifram.o \
@@ -5173,7 +5177,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_1 =  \
 	monodll_fontutil.o \
 	monodll_utilsx11.o \
 	monodll_displayx11.o \
-	monodll_gsocketiohandler.o \
 	monodll_icon.o \
 	monodll_timer.o \
 	monodll_app.o \
@@ -5332,6 +5335,7 @@ COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_1 =  \
 	monolib_utilsexc.o
 @COND_PLATFORM_OS2_1@__BASE_PLATFORM_SRC_OBJECTS_1 = $(COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_1)
 COND_PLATFORM_UNIX_1___BASE_PLATFORM_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5369,6 +5373,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1 =  \
 @COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_1 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_1)
 @COND_TOOLKIT_WINCE@__BASE_WINCE_SRC_OBJECTS_1 = monolib_time.o
 COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5389,6 +5394,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_1 =  \
 	monolib_utilsexc_base.o
 @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_1)
 COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5409,6 +5415,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1 =  \
 	monolib_utilsexc_base.o
 @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_1)
 COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5450,6 +5457,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_1 =  \
 	monolib_timerunx.o
 @COND_TOOLKIT_MAC@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_1)
 COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5470,6 +5478,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_1 =  \
 	monolib_utilsexc_base.o
 @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_1 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_1)
 COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_1 =  \
+	monolib_gsocketiohandler.o \
 	monolib_fdiodispatcher.o \
 	monolib_selectdispatcher.o \
 	monolib_appunix.o \
@@ -5503,9 +5512,12 @@ COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_1 =  \
 @COND_PLATFORM_MACOS_1@__NET_PLATFORM_SRC_OBJECTS_1 = monolib_gsocket.o
 @COND_PLATFORM_OS2_1@__NET_PLATFORM_SRC_OBJECTS_1 = monolib_gsocket.o
 @COND_PLATFORM_UNIX_1@__NET_PLATFORM_SRC_OBJECTS_1 = monolib_gsocket.o
-@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_1 \
-@COND_PLATFORM_WIN32_1@	= monolib_gsocket.o monolib_urlmsw.o \
-@COND_PLATFORM_WIN32_1@	$(__NET_WINCE_SRC_OBJECTS_1)
+COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_1 =  \
+	monolib_gsocket.o \
+	monolib_gsockmsw.o \
+	monolib_urlmsw.o \
+	$(__NET_WINCE_SRC_OBJECTS_1)
+@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_1 = $(COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_1)
 @COND_TOOLKIT_WINCE@__NET_WINCE_SRC_OBJECTS_1 = monolib_net.o
 COND_USE_GUI_1___MONOLIB_GUI_SRC_OBJECTS_1 =  \
 	$(__CORE_SRC_OBJECTS_1) \
@@ -5928,7 +5940,6 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_1 =  \
 @COND_TOOLKIT_COCOA@	monolib_gsockosx.o monolib_hid.o monolib_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_2 =  \
 	monolib_fontmgrcmn.o \
-	monolib_gsocketiohandler.o \
 	monolib_caret.o \
 	monolib_colour.o \
 	monolib_icon.o \
@@ -6109,7 +6120,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_2 =  \
 	monolib_gdiobj.o \
 	monolib_gdiplus.o \
 	monolib_graphics.o \
-	monolib_gsockmsw.o \
 	monolib_icon.o \
 	monolib_imaglist.o \
 	monolib_minifram.o \
@@ -6161,7 +6171,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_2 =  \
 	monolib_gdiobj.o \
 	monolib_gdiplus.o \
 	monolib_graphics.o \
-	monolib_gsockmsw.o \
 	monolib_icon.o \
 	monolib_imaglist.o \
 	monolib_minifram.o \
@@ -6191,7 +6200,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_2 =  \
 	monolib_fontutil.o \
 	monolib_utilsx11.o \
 	monolib_displayx11.o \
-	monolib_gsocketiohandler.o \
 	monolib_icon.o \
 	monolib_timer.o \
 	monolib_app.o \
@@ -6760,7 +6768,6 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_1 =  \
 @COND_TOOLKIT_COCOA@	monolib_gsockosx.o monolib_hid.o monolib_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_3 =  \
 	monolib_fontmgrcmn.o \
-	monolib_gsocketiohandler.o \
 	monolib_caret.o \
 	monolib_colour.o \
 	monolib_icon.o \
@@ -6941,7 +6948,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_3 =  \
 	monolib_gdiobj.o \
 	monolib_gdiplus.o \
 	monolib_graphics.o \
-	monolib_gsockmsw.o \
 	monolib_icon.o \
 	monolib_imaglist.o \
 	monolib_minifram.o \
@@ -6993,7 +6999,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_3 =  \
 	monolib_gdiobj.o \
 	monolib_gdiplus.o \
 	monolib_graphics.o \
-	monolib_gsockmsw.o \
 	monolib_icon.o \
 	monolib_imaglist.o \
 	monolib_minifram.o \
@@ -7023,7 +7028,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_3 =  \
 	monolib_fontutil.o \
 	monolib_utilsx11.o \
 	monolib_displayx11.o \
-	monolib_gsocketiohandler.o \
 	monolib_icon.o \
 	monolib_timer.o \
 	monolib_app.o \
@@ -7217,6 +7221,7 @@ COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_2 =  \
 	basedll_utilsexc.o
 @COND_PLATFORM_OS2_1@__BASE_PLATFORM_SRC_OBJECTS_2 = $(COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_2)
 COND_PLATFORM_UNIX_1___BASE_PLATFORM_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7254,6 +7259,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2 =  \
 @COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_2 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_2)
 @COND_TOOLKIT_WINCE@__BASE_WINCE_SRC_OBJECTS_2 = basedll_time.o
 COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7274,6 +7280,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_2 =  \
 	basedll_utilsexc_base.o
 @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_2)
 COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7294,6 +7301,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2 =  \
 	basedll_utilsexc_base.o
 @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_2)
 COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7335,6 +7343,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_2 =  \
 	basedll_timerunx.o
 @COND_TOOLKIT_MAC@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_2)
 COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7355,6 +7364,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_2 =  \
 	basedll_utilsexc_base.o
 @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_2 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_2)
 COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_2 =  \
+	basedll_gsocketiohandler.o \
 	basedll_fdiodispatcher.o \
 	basedll_selectdispatcher.o \
 	basedll_appunix.o \
@@ -7430,6 +7440,7 @@ COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_3 =  \
 	baselib_utilsexc.o
 @COND_PLATFORM_OS2_1@__BASE_PLATFORM_SRC_OBJECTS_3 = $(COND_PLATFORM_OS2_1___BASE_PLATFORM_SRC_OBJECTS_3)
 COND_PLATFORM_UNIX_1___BASE_PLATFORM_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7467,6 +7478,7 @@ COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3 =  \
 @COND_PLATFORM_WIN32_1@__BASE_PLATFORM_SRC_OBJECTS_3 = $(COND_PLATFORM_WIN32_1___BASE_PLATFORM_SRC_OBJECTS_3)
 @COND_TOOLKIT_WINCE@__BASE_WINCE_SRC_OBJECTS_3 = baselib_time.o
 COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7487,6 +7499,7 @@ COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_3 =  \
 	baselib_utilsexc_base.o
 @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS_3)
 COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7507,6 +7520,7 @@ COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3 =  \
 	baselib_utilsexc_base.o
 @COND_TOOLKIT_COCOA@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS_3)
 COND_TOOLKIT_GTK___BASE_MACOSX_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7548,6 +7562,7 @@ COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_3 =  \
 	baselib_timerunx.o
 @COND_TOOLKIT_MAC@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_MAC___BASE_MACOSX_SRC_OBJECTS_3)
 COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7568,6 +7583,7 @@ COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_3 =  \
 	baselib_utilsexc_base.o
 @COND_TOOLKIT_MOTIF@__BASE_MACOSX_SRC_OBJECTS_3 = $(COND_TOOLKIT_MOTIF___BASE_MACOSX_SRC_OBJECTS_3)
 COND_TOOLKIT_X11___BASE_MACOSX_SRC_OBJECTS_3 =  \
+	baselib_gsocketiohandler.o \
 	baselib_fdiodispatcher.o \
 	baselib_selectdispatcher.o \
 	baselib_appunix.o \
@@ -7653,9 +7669,12 @@ COND_USE_SOSYMLINKS_1___netdll___so_symlinks_uninst_cmd = rm -f \
 @COND_PLATFORM_MACOS_1@__NET_PLATFORM_SRC_OBJECTS_2 = netdll_gsocket.o
 @COND_PLATFORM_OS2_1@__NET_PLATFORM_SRC_OBJECTS_2 = netdll_gsocket.o
 @COND_PLATFORM_UNIX_1@__NET_PLATFORM_SRC_OBJECTS_2 = netdll_gsocket.o
-@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_2 \
-@COND_PLATFORM_WIN32_1@	= netdll_gsocket.o netdll_urlmsw.o \
-@COND_PLATFORM_WIN32_1@	$(__NET_WINCE_SRC_OBJECTS_2)
+COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_2 =  \
+	netdll_gsocket.o \
+	netdll_gsockmsw.o \
+	netdll_urlmsw.o \
+	$(__NET_WINCE_SRC_OBJECTS_2)
+@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_2 = $(COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_2)
 @COND_TOOLKIT_WINCE@__NET_WINCE_SRC_OBJECTS_2 = netdll_net.o
 COND_MONOLITHIC_0_SHARED_0___netlib___depname = \
 	$(LIBDIRNAME)/$(LIBPREFIX)wx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_net-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT)
@@ -7671,9 +7690,12 @@ COND_MONOLITHIC_0_SHARED_0___netlib___depname = \
 @COND_PLATFORM_MACOS_1@__NET_PLATFORM_SRC_OBJECTS_3 = netlib_gsocket.o
 @COND_PLATFORM_OS2_1@__NET_PLATFORM_SRC_OBJECTS_3 = netlib_gsocket.o
 @COND_PLATFORM_UNIX_1@__NET_PLATFORM_SRC_OBJECTS_3 = netlib_gsocket.o
-@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_3 \
-@COND_PLATFORM_WIN32_1@	= netlib_gsocket.o netlib_urlmsw.o \
-@COND_PLATFORM_WIN32_1@	$(__NET_WINCE_SRC_OBJECTS_3)
+COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_3 =  \
+	netlib_gsocket.o \
+	netlib_gsockmsw.o \
+	netlib_urlmsw.o \
+	$(__NET_WINCE_SRC_OBJECTS_3)
+@COND_PLATFORM_WIN32_1@__NET_PLATFORM_SRC_OBJECTS_3 = $(COND_PLATFORM_WIN32_1___NET_PLATFORM_SRC_OBJECTS_3)
 @COND_TOOLKIT_WINCE@__NET_WINCE_SRC_OBJECTS_3 = netlib_net.o
 @COND_SHARED_1@____wxnet_namedll_DEP = $(__netdll___depname)
 @COND_SHARED_0@____wxnet_namelib_DEP = $(__netlib___depname)
@@ -8051,7 +8073,6 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_2 =  \
 @COND_TOOLKIT_COCOA@	coredll_gsockosx.o coredll_hid.o coredll_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_4 =  \
 	coredll_fontmgrcmn.o \
-	coredll_gsocketiohandler.o \
 	coredll_caret.o \
 	coredll_colour.o \
 	coredll_icon.o \
@@ -8232,7 +8253,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_4 =  \
 	coredll_gdiobj.o \
 	coredll_gdiplus.o \
 	coredll_graphics.o \
-	coredll_gsockmsw.o \
 	coredll_icon.o \
 	coredll_imaglist.o \
 	coredll_minifram.o \
@@ -8284,7 +8304,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_4 =  \
 	coredll_gdiobj.o \
 	coredll_gdiplus.o \
 	coredll_graphics.o \
-	coredll_gsockmsw.o \
 	coredll_icon.o \
 	coredll_imaglist.o \
 	coredll_minifram.o \
@@ -8314,7 +8333,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_4 =  \
 	coredll_fontutil.o \
 	coredll_utilsx11.o \
 	coredll_displayx11.o \
-	coredll_gsocketiohandler.o \
 	coredll_icon.o \
 	coredll_timer.o \
 	coredll_app.o \
@@ -8883,7 +8901,6 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_2 =  \
 @COND_TOOLKIT_COCOA@	coredll_gsockosx.o coredll_hid.o coredll_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_5 =  \
 	coredll_fontmgrcmn.o \
-	coredll_gsocketiohandler.o \
 	coredll_caret.o \
 	coredll_colour.o \
 	coredll_icon.o \
@@ -9064,7 +9081,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_5 =  \
 	coredll_gdiobj.o \
 	coredll_gdiplus.o \
 	coredll_graphics.o \
-	coredll_gsockmsw.o \
 	coredll_icon.o \
 	coredll_imaglist.o \
 	coredll_minifram.o \
@@ -9116,7 +9132,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_5 =  \
 	coredll_gdiobj.o \
 	coredll_gdiplus.o \
 	coredll_graphics.o \
-	coredll_gsockmsw.o \
 	coredll_icon.o \
 	coredll_imaglist.o \
 	coredll_minifram.o \
@@ -9146,7 +9161,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_5 =  \
 	coredll_fontutil.o \
 	coredll_utilsx11.o \
 	coredll_displayx11.o \
-	coredll_gsocketiohandler.o \
 	coredll_icon.o \
 	coredll_timer.o \
 	coredll_app.o \
@@ -9510,7 +9524,6 @@ COND_USE_GUI_1_WXUNIV_1___CORE_SRC_OBJECTS_3 =  \
 @COND_TOOLKIT_COCOA@	corelib_gsockosx.o corelib_hid.o corelib_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_6 =  \
 	corelib_fontmgrcmn.o \
-	corelib_gsocketiohandler.o \
 	corelib_caret.o \
 	corelib_colour.o \
 	corelib_icon.o \
@@ -9691,7 +9704,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_6 =  \
 	corelib_gdiobj.o \
 	corelib_gdiplus.o \
 	corelib_graphics.o \
-	corelib_gsockmsw.o \
 	corelib_icon.o \
 	corelib_imaglist.o \
 	corelib_minifram.o \
@@ -9743,7 +9755,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_6 =  \
 	corelib_gdiobj.o \
 	corelib_gdiplus.o \
 	corelib_graphics.o \
-	corelib_gsockmsw.o \
 	corelib_icon.o \
 	corelib_imaglist.o \
 	corelib_minifram.o \
@@ -9773,7 +9784,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_6 =  \
 	corelib_fontutil.o \
 	corelib_utilsx11.o \
 	corelib_displayx11.o \
-	corelib_gsocketiohandler.o \
 	corelib_icon.o \
 	corelib_timer.o \
 	corelib_app.o \
@@ -10342,7 +10352,6 @@ COND_TOOLKIT_WINCE___GUI_SRC_OBJECTS_3 =  \
 @COND_TOOLKIT_COCOA@	corelib_gsockosx.o corelib_hid.o corelib_utilsexc_cf.o
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_7 =  \
 	corelib_fontmgrcmn.o \
-	corelib_gsocketiohandler.o \
 	corelib_caret.o \
 	corelib_colour.o \
 	corelib_icon.o \
@@ -10523,7 +10532,6 @@ COND_TOOLKIT_MSW___LOWLEVEL_SRC_OBJECTS_7 =  \
 	corelib_gdiobj.o \
 	corelib_gdiplus.o \
 	corelib_graphics.o \
-	corelib_gsockmsw.o \
 	corelib_icon.o \
 	corelib_imaglist.o \
 	corelib_minifram.o \
@@ -10575,7 +10583,6 @@ COND_TOOLKIT_WINCE___LOWLEVEL_SRC_OBJECTS_7 =  \
 	corelib_gdiobj.o \
 	corelib_gdiplus.o \
 	corelib_graphics.o \
-	corelib_gsockmsw.o \
 	corelib_icon.o \
 	corelib_imaglist.o \
 	corelib_minifram.o \
@@ -10605,7 +10612,6 @@ COND_TOOLKIT_X11___LOWLEVEL_SRC_OBJECTS_7 =  \
 	corelib_fontutil.o \
 	corelib_utilsx11.o \
 	corelib_displayx11.o \
-	corelib_gsocketiohandler.o \
 	corelib_icon.o \
 	corelib_timer.o \
 	corelib_app.o \
@@ -13819,6 +13825,9 @@ monodll_socket.o: $(srcdir)/src/common/socket.cpp $(MONODLL_ODEP)
 monodll_url.o: $(srcdir)/src/common/url.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/url.cpp
 
+monodll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONODLL_ODEP)
+	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
+
 monodll_urlmsw.o: $(srcdir)/src/msw/urlmsw.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/urlmsw.cpp
 
@@ -14341,6 +14350,24 @@ monodll_xtixml.o: $(srcdir)/src/common/xtixml.cpp $(MONODLL_ODEP)
 monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/sound_sdl.cpp
 
+@COND_PLATFORM_UNIX_1@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
 @COND_PLATFORM_UNIX_1@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
 @COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
 
@@ -15883,12 +15910,6 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monodll_graphics.o: $(srcdir)/src/mac/carbon/graphics.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/carbon/graphics.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@monodll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
 @COND_TOOLKIT_MSW_USE_GUI_1@monodll_dropsrc.o: $(srcdir)/src/msw/ole/dropsrc.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/ole/dropsrc.cpp
 
@@ -15991,12 +16012,6 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@monodll_utilsexc_cf.o: $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp
 
-@COND_TOOLKIT_X11_USE_GUI_1@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@monodll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@monodll_nanox.o: $(srcdir)/src/x11/nanox.c $(MONODLL_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@	$(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/x11/nanox.c
 
@@ -18157,6 +18172,9 @@ monolib_socket.o: $(srcdir)/src/common/socket.cpp $(MONOLIB_ODEP)
 monolib_url.o: $(srcdir)/src/common/url.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/url.cpp
 
+monolib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONOLIB_ODEP)
+	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
+
 monolib_urlmsw.o: $(srcdir)/src/msw/urlmsw.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/urlmsw.cpp
 
@@ -18679,6 +18697,24 @@ monolib_xtixml.o: $(srcdir)/src/common/xtixml.cpp $(MONOLIB_ODEP)
 monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/sound_sdl.cpp
 
+@COND_PLATFORM_UNIX_1@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
 @COND_PLATFORM_UNIX_1@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
 @COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
 
@@ -20221,12 +20257,6 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@monolib_graphics.o: $(srcdir)/src/mac/carbon/graphics.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/carbon/graphics.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@monolib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
 @COND_TOOLKIT_MSW_USE_GUI_1@monolib_dropsrc.o: $(srcdir)/src/msw/ole/dropsrc.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/ole/dropsrc.cpp
 
@@ -20329,12 +20359,6 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@monolib_utilsexc_cf.o: $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp
 
-@COND_TOOLKIT_X11_USE_GUI_1@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@monolib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@monolib_nanox.o: $(srcdir)/src/x11/nanox.c $(MONOLIB_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@	$(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/x11/nanox.c
 
@@ -22474,6 +22498,24 @@ basedll_volume.o: $(srcdir)/src/msw/volume.cpp $(BASEDLL_ODEP)
 basedll_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(BASEDLL_ODEP)
 	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/mac/carbon/uma.cpp
 
+@COND_PLATFORM_UNIX_1@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
 @COND_PLATFORM_UNIX_1@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
 @COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
 
@@ -23242,6 +23284,24 @@ baselib_volume.o: $(srcdir)/src/msw/volume.cpp $(BASELIB_ODEP)
 baselib_uma.o: $(srcdir)/src/mac/carbon/uma.cpp $(BASELIB_ODEP)
 	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/mac/carbon/uma.cpp
 
+@COND_PLATFORM_UNIX_1@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
+
 @COND_PLATFORM_UNIX_1@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
 @COND_PLATFORM_UNIX_1@	$(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
 
@@ -23731,6 +23791,9 @@ netdll_socket.o: $(srcdir)/src/common/socket.cpp $(NETDLL_ODEP)
 netdll_url.o: $(srcdir)/src/common/url.cpp $(NETDLL_ODEP)
 	$(CXXC) -c -o $@ $(NETDLL_CXXFLAGS) $(srcdir)/src/common/url.cpp
 
+netdll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(NETDLL_ODEP)
+	$(CXXC) -c -o $@ $(NETDLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
+
 netdll_urlmsw.o: $(srcdir)/src/msw/urlmsw.cpp $(NETDLL_ODEP)
 	$(CXXC) -c -o $@ $(NETDLL_CXXFLAGS) $(srcdir)/src/msw/urlmsw.cpp
 
@@ -23782,6 +23845,9 @@ netlib_socket.o: $(srcdir)/src/common/socket.cpp $(NETLIB_ODEP)
 netlib_url.o: $(srcdir)/src/common/url.cpp $(NETLIB_ODEP)
 	$(CXXC) -c -o $@ $(NETLIB_CXXFLAGS) $(srcdir)/src/common/url.cpp
 
+netlib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(NETLIB_ODEP)
+	$(CXXC) -c -o $@ $(NETLIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
+
 netlib_urlmsw.o: $(srcdir)/src/msw/urlmsw.cpp $(NETLIB_ODEP)
 	$(CXXC) -c -o $@ $(NETLIB_CXXFLAGS) $(srcdir)/src/msw/urlmsw.cpp
 
@@ -25105,12 +25171,6 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@coredll_graphics.o: $(srcdir)/src/mac/carbon/graphics.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/mac/carbon/graphics.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@coredll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@coredll_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
 @COND_TOOLKIT_MSW_USE_GUI_1@coredll_dropsrc.o: $(srcdir)/src/msw/ole/dropsrc.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/ole/dropsrc.cpp
 
@@ -25213,12 +25273,6 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@coredll_utilsexc_cf.o: $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp
 
-@COND_TOOLKIT_X11_USE_GUI_1@coredll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@coredll_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@coredll_nanox.o: $(srcdir)/src/x11/nanox.c $(COREDLL_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@	$(CCC) -c -o $@ $(COREDLL_CFLAGS) $(srcdir)/src/x11/nanox.c
 
@@ -28069,12 +28123,6 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@corelib_graphics.o: $(srcdir)/src/mac/carbon/graphics.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MAC_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/mac/carbon/graphics.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@corelib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@corelib_gsockmsw.o: $(srcdir)/src/msw/gsockmsw.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/gsockmsw.cpp
-
 @COND_TOOLKIT_MSW_USE_GUI_1@corelib_dropsrc.o: $(srcdir)/src/msw/ole/dropsrc.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MSW_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/ole/dropsrc.cpp
 
@@ -28177,12 +28225,6 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@corelib_utilsexc_cf.o: $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_COCOA_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/mac/corefoundation/utilsexc_cf.cpp
 
-@COND_TOOLKIT_X11_USE_GUI_1@corelib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@corelib_gsocketiohandler.o: $(srcdir)/src/common/gsocketiohandler.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/gsocketiohandler.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@corelib_nanox.o: $(srcdir)/src/x11/nanox.c $(CORELIB_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@	$(CCC) -c -o $@ $(CORELIB_CFLAGS) $(srcdir)/src/x11/nanox.c
 
diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl
index 8df9b50d5d..10b428c15d 100644
--- a/build/bakefiles/files.bkl
+++ b/build/bakefiles/files.bkl
@@ -54,6 +54,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 <!--                               UNIX                                     -->
 <!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
 <set var="BASE_UNIX_SRC" hints="files">
+    src/common/gsocketiohandler.cpp
     src/common/fdiodispatcher.cpp
     src/common/selectdispatcher.cpp
     src/unix/appunix.cpp
@@ -538,6 +539,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 
 <set var="NET_WIN32_SRC" hints="files">
     src/msw/gsocket.cpp
+    src/msw/gsockmsw.cpp
     src/msw/urlmsw.cpp
 </set>
 <set var="NET_WIN32_HDR" hints="files">
@@ -1451,7 +1453,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 
 <set var="X11_LOWLEVEL_SRC" hints="files">
     $(XWIN_LOWLEVEL_SRC)
-    src/common/gsocketiohandler.cpp
     src/generic/icon.cpp
     src/generic/timer.cpp
     src/x11/app.cpp
@@ -1546,7 +1547,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     src/msw/gdiobj.cpp
     src/msw/gdiplus.cpp
     src/msw/graphics.cpp
-    src/msw/gsockmsw.cpp
     src/msw/icon.cpp
     src/msw/imaglist.cpp
     src/msw/minifram.cpp
@@ -1868,7 +1868,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 
 <set var="DFB_LOWLEVEL_SRC" hints="files">
     src/common/fontmgrcmn.cpp
-    src/common/gsocketiohandler.cpp
     src/generic/caret.cpp
     src/generic/colour.cpp
     src/generic/icon.cpp
diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc
index 51e4f54c4a..15b029851e 100644
--- a/build/msw/makefile.bcc
+++ b/build/msw/makefile.bcc
@@ -405,6 +405,7 @@ MONODLL_OBJECTS =  \
 	$(OBJS)\monodll_socket.obj \
 	$(OBJS)\monodll_url.obj \
 	$(OBJS)\monodll_gsocket.obj \
+	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_urlmsw.obj \
 	$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
 	$(OBJS)\monodll_xml.obj \
@@ -541,6 +542,7 @@ MONOLIB_OBJECTS =  \
 	$(OBJS)\monolib_socket.obj \
 	$(OBJS)\monolib_url.obj \
 	$(OBJS)\monolib_gsocket.obj \
+	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_urlmsw.obj \
 	$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
 	$(OBJS)\monolib_xml.obj \
@@ -802,6 +804,7 @@ NETDLL_OBJECTS =  \
 	$(OBJS)\netdll_socket.obj \
 	$(OBJS)\netdll_url.obj \
 	$(OBJS)\netdll_gsocket.obj \
+	$(OBJS)\netdll_gsockmsw.obj \
 	$(OBJS)\netdll_urlmsw.obj
 NETLIB_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
 	$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
@@ -824,6 +827,7 @@ NETLIB_OBJECTS =  \
 	$(OBJS)\netlib_socket.obj \
 	$(OBJS)\netlib_url.obj \
 	$(OBJS)\netlib_gsocket.obj \
+	$(OBJS)\netlib_gsockmsw.obj \
 	$(OBJS)\netlib_urlmsw.obj
 COREDLL_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
 	$(__OPTIMIZEFLAG) $(__THREADSFLAG) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
@@ -1527,7 +1531,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.obj \
 	$(OBJS)\monodll_gdiplus.obj \
 	$(OBJS)\monodll_graphics.obj \
-	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_icon.obj \
 	$(OBJS)\monodll_imaglist.obj \
 	$(OBJS)\monodll_minifram.obj \
@@ -1609,6 +1612,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_btncmn.obj \
+	$(OBJS)\monodll_cairo.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
 	$(OBJS)\monodll_clrpickercmn.obj \
@@ -1751,7 +1755,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.obj \
 	$(OBJS)\monodll_gdiplus.obj \
 	$(OBJS)\monodll_graphics.obj \
-	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_icon.obj \
 	$(OBJS)\monodll_imaglist.obj \
 	$(OBJS)\monodll_minifram.obj \
@@ -1836,6 +1839,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_btncmn.obj \
+	$(OBJS)\monodll_cairo.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
 	$(OBJS)\monodll_clrpickercmn.obj \
@@ -2159,7 +2163,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.obj \
 	$(OBJS)\monolib_gdiplus.obj \
 	$(OBJS)\monolib_graphics.obj \
-	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_icon.obj \
 	$(OBJS)\monolib_imaglist.obj \
 	$(OBJS)\monolib_minifram.obj \
@@ -2241,6 +2244,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_btncmn.obj \
+	$(OBJS)\monolib_cairo.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
 	$(OBJS)\monolib_clrpickercmn.obj \
@@ -2383,7 +2387,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.obj \
 	$(OBJS)\monolib_gdiplus.obj \
 	$(OBJS)\monolib_graphics.obj \
-	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_icon.obj \
 	$(OBJS)\monolib_imaglist.obj \
 	$(OBJS)\monolib_minifram.obj \
@@ -2468,6 +2471,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_btncmn.obj \
+	$(OBJS)\monolib_cairo.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
 	$(OBJS)\monolib_clrpickercmn.obj \
@@ -2703,7 +2707,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.obj \
 	$(OBJS)\coredll_gdiplus.obj \
 	$(OBJS)\coredll_graphics.obj \
-	$(OBJS)\coredll_gsockmsw.obj \
 	$(OBJS)\coredll_icon.obj \
 	$(OBJS)\coredll_imaglist.obj \
 	$(OBJS)\coredll_minifram.obj \
@@ -2785,6 +2788,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_btncmn.obj \
+	$(OBJS)\coredll_cairo.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
 	$(OBJS)\coredll_clrpickercmn.obj \
@@ -2927,7 +2931,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.obj \
 	$(OBJS)\coredll_gdiplus.obj \
 	$(OBJS)\coredll_graphics.obj \
-	$(OBJS)\coredll_gsockmsw.obj \
 	$(OBJS)\coredll_icon.obj \
 	$(OBJS)\coredll_imaglist.obj \
 	$(OBJS)\coredll_minifram.obj \
@@ -3012,6 +3015,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_btncmn.obj \
+	$(OBJS)\coredll_cairo.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
 	$(OBJS)\coredll_clrpickercmn.obj \
@@ -3158,7 +3162,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.obj \
 	$(OBJS)\corelib_gdiplus.obj \
 	$(OBJS)\corelib_graphics.obj \
-	$(OBJS)\corelib_gsockmsw.obj \
 	$(OBJS)\corelib_icon.obj \
 	$(OBJS)\corelib_imaglist.obj \
 	$(OBJS)\corelib_minifram.obj \
@@ -3240,6 +3243,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_btncmn.obj \
+	$(OBJS)\corelib_cairo.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
 	$(OBJS)\corelib_clrpickercmn.obj \
@@ -3382,7 +3386,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.obj \
 	$(OBJS)\corelib_gdiplus.obj \
 	$(OBJS)\corelib_graphics.obj \
-	$(OBJS)\corelib_gsockmsw.obj \
 	$(OBJS)\corelib_icon.obj \
 	$(OBJS)\corelib_imaglist.obj \
 	$(OBJS)\corelib_minifram.obj \
@@ -3467,6 +3470,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_btncmn.obj \
+	$(OBJS)\corelib_cairo.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
 	$(OBJS)\corelib_clrpickercmn.obj \
@@ -5520,6 +5524,9 @@ $(OBJS)\monodll_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
@@ -6117,11 +6124,6 @@ $(OBJS)\monodll_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -6542,6 +6544,11 @@ $(OBJS)\monodll_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -7591,6 +7598,9 @@ $(OBJS)\monolib_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -8188,11 +8198,6 @@ $(OBJS)\monolib_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -8613,6 +8618,11 @@ $(OBJS)\monolib_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -9971,6 +9981,9 @@ $(OBJS)\netdll_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
 
+$(OBJS)\netdll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
+
 $(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(NETDLL_CXXFLAGS) $**
 
@@ -10010,6 +10023,9 @@ $(OBJS)\netlib_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
 
+$(OBJS)\netlib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
+
 $(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) -q -c -P -o$@ $(NETLIB_CXXFLAGS) $**
 
@@ -10304,11 +10320,6 @@ $(OBJS)\coredll_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -10729,6 +10740,11 @@ $(OBJS)\coredll_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -11592,11 +11608,6 @@ $(OBJS)\corelib_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -12017,6 +12028,11 @@ $(OBJS)\corelib_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc
index 8b708f727b..b1eafbe6a9 100644
--- a/build/msw/makefile.gcc
+++ b/build/msw/makefile.gcc
@@ -389,6 +389,7 @@ MONODLL_OBJECTS =  \
 	$(OBJS)\monodll_socket.o \
 	$(OBJS)\monodll_url.o \
 	$(OBJS)\monodll_gsocket.o \
+	$(OBJS)\monodll_gsockmsw.o \
 	$(OBJS)\monodll_urlmsw.o \
 	$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
 	$(OBJS)\monodll_xml.o \
@@ -526,6 +527,7 @@ MONOLIB_OBJECTS =  \
 	$(OBJS)\monolib_socket.o \
 	$(OBJS)\monolib_url.o \
 	$(OBJS)\monolib_gsocket.o \
+	$(OBJS)\monolib_gsockmsw.o \
 	$(OBJS)\monolib_urlmsw.o \
 	$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
 	$(OBJS)\monolib_xml.o \
@@ -791,6 +793,7 @@ NETDLL_OBJECTS =  \
 	$(OBJS)\netdll_socket.o \
 	$(OBJS)\netdll_url.o \
 	$(OBJS)\netdll_gsocket.o \
+	$(OBJS)\netdll_gsockmsw.o \
 	$(OBJS)\netdll_urlmsw.o
 NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) $(GCCFLAGS) \
 	-DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
@@ -813,6 +816,7 @@ NETLIB_OBJECTS =  \
 	$(OBJS)\netlib_socket.o \
 	$(OBJS)\netlib_url.o \
 	$(OBJS)\netlib_gsocket.o \
+	$(OBJS)\netlib_gsockmsw.o \
 	$(OBJS)\netlib_urlmsw.o
 COREDLL_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
 	$(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
@@ -1545,7 +1549,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.o \
 	$(OBJS)\monodll_gdiplus.o \
 	$(OBJS)\monodll_graphics.o \
-	$(OBJS)\monodll_gsockmsw.o \
 	$(OBJS)\monodll_icon.o \
 	$(OBJS)\monodll_imaglist.o \
 	$(OBJS)\monodll_minifram.o \
@@ -1627,6 +1630,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.o \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_btncmn.o \
+	$(OBJS)\monodll_cairo.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
 	$(OBJS)\monodll_clrpickercmn.o \
@@ -1771,7 +1775,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.o \
 	$(OBJS)\monodll_gdiplus.o \
 	$(OBJS)\monodll_graphics.o \
-	$(OBJS)\monodll_gsockmsw.o \
 	$(OBJS)\monodll_icon.o \
 	$(OBJS)\monodll_imaglist.o \
 	$(OBJS)\monodll_minifram.o \
@@ -1856,6 +1859,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.o \
 	$(OBJS)\monodll_bookctrl.o \
 	$(OBJS)\monodll_btncmn.o \
+	$(OBJS)\monodll_cairo.o \
 	$(OBJS)\monodll_choiccmn.o \
 	$(OBJS)\monodll_clipcmn.o \
 	$(OBJS)\monodll_clrpickercmn.o \
@@ -2183,7 +2187,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.o \
 	$(OBJS)\monolib_gdiplus.o \
 	$(OBJS)\monolib_graphics.o \
-	$(OBJS)\monolib_gsockmsw.o \
 	$(OBJS)\monolib_icon.o \
 	$(OBJS)\monolib_imaglist.o \
 	$(OBJS)\monolib_minifram.o \
@@ -2265,6 +2268,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.o \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_btncmn.o \
+	$(OBJS)\monolib_cairo.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
 	$(OBJS)\monolib_clrpickercmn.o \
@@ -2409,7 +2413,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.o \
 	$(OBJS)\monolib_gdiplus.o \
 	$(OBJS)\monolib_graphics.o \
-	$(OBJS)\monolib_gsockmsw.o \
 	$(OBJS)\monolib_icon.o \
 	$(OBJS)\monolib_imaglist.o \
 	$(OBJS)\monolib_minifram.o \
@@ -2494,6 +2497,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.o \
 	$(OBJS)\monolib_bookctrl.o \
 	$(OBJS)\monolib_btncmn.o \
+	$(OBJS)\monolib_cairo.o \
 	$(OBJS)\monolib_choiccmn.o \
 	$(OBJS)\monolib_clipcmn.o \
 	$(OBJS)\monolib_clrpickercmn.o \
@@ -2743,7 +2747,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.o \
 	$(OBJS)\coredll_gdiplus.o \
 	$(OBJS)\coredll_graphics.o \
-	$(OBJS)\coredll_gsockmsw.o \
 	$(OBJS)\coredll_icon.o \
 	$(OBJS)\coredll_imaglist.o \
 	$(OBJS)\coredll_minifram.o \
@@ -2825,6 +2828,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.o \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_btncmn.o \
+	$(OBJS)\coredll_cairo.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
 	$(OBJS)\coredll_clrpickercmn.o \
@@ -2969,7 +2973,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.o \
 	$(OBJS)\coredll_gdiplus.o \
 	$(OBJS)\coredll_graphics.o \
-	$(OBJS)\coredll_gsockmsw.o \
 	$(OBJS)\coredll_icon.o \
 	$(OBJS)\coredll_imaglist.o \
 	$(OBJS)\coredll_minifram.o \
@@ -3054,6 +3057,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.o \
 	$(OBJS)\coredll_bookctrl.o \
 	$(OBJS)\coredll_btncmn.o \
+	$(OBJS)\coredll_cairo.o \
 	$(OBJS)\coredll_choiccmn.o \
 	$(OBJS)\coredll_clipcmn.o \
 	$(OBJS)\coredll_clrpickercmn.o \
@@ -3206,7 +3210,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.o \
 	$(OBJS)\corelib_gdiplus.o \
 	$(OBJS)\corelib_graphics.o \
-	$(OBJS)\corelib_gsockmsw.o \
 	$(OBJS)\corelib_icon.o \
 	$(OBJS)\corelib_imaglist.o \
 	$(OBJS)\corelib_minifram.o \
@@ -3288,6 +3291,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.o \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_btncmn.o \
+	$(OBJS)\corelib_cairo.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
 	$(OBJS)\corelib_clrpickercmn.o \
@@ -3432,7 +3436,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.o \
 	$(OBJS)\corelib_gdiplus.o \
 	$(OBJS)\corelib_graphics.o \
-	$(OBJS)\corelib_gsockmsw.o \
 	$(OBJS)\corelib_icon.o \
 	$(OBJS)\corelib_imaglist.o \
 	$(OBJS)\corelib_minifram.o \
@@ -3517,6 +3520,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.o \
 	$(OBJS)\corelib_bookctrl.o \
 	$(OBJS)\corelib_btncmn.o \
+	$(OBJS)\corelib_cairo.o \
 	$(OBJS)\corelib_choiccmn.o \
 	$(OBJS)\corelib_clipcmn.o \
 	$(OBJS)\corelib_clrpickercmn.o \
@@ -5689,6 +5693,9 @@ $(OBJS)\monodll_url.o: ../../src/common/url.cpp
 $(OBJS)\monodll_gsocket.o: ../../src/msw/gsocket.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -6286,11 +6293,6 @@ $(OBJS)\monodll_graphics.o: ../../src/msw/graphics.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monodll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
-	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_icon.o: ../../src/msw/icon.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -6811,6 +6813,11 @@ $(OBJS)\monodll_btncmn.o: ../../src/common/btncmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monodll_cairo.o: ../../src/common/cairo.cpp
+	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_choiccmn.o: ../../src/common/choiccmn.cpp
 	$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -7860,6 +7867,9 @@ $(OBJS)\monolib_url.o: ../../src/common/url.cpp
 $(OBJS)\monolib_gsocket.o: ../../src/msw/gsocket.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -8457,11 +8467,6 @@ $(OBJS)\monolib_graphics.o: ../../src/msw/graphics.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monolib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
-	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_icon.o: ../../src/msw/icon.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -8982,6 +8987,11 @@ $(OBJS)\monolib_btncmn.o: ../../src/common/btncmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\monolib_cairo.o: ../../src/common/cairo.cpp
+	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_choiccmn.o: ../../src/common/choiccmn.cpp
 	$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10340,6 +10350,9 @@ $(OBJS)\netdll_url.o: ../../src/common/url.cpp
 $(OBJS)\netdll_gsocket.o: ../../src/msw/gsocket.cpp
 	$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\netdll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
+	$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\netdll_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(NETDLL_CXXFLAGS) $(CPPDEPS) $<
 
@@ -10379,6 +10392,9 @@ $(OBJS)\netlib_url.o: ../../src/common/url.cpp
 $(OBJS)\netlib_gsocket.o: ../../src/msw/gsocket.cpp
 	$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\netlib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
+	$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\netlib_urlmsw.o: ../../src/msw/urlmsw.cpp
 	$(CXX) -c -o $@ $(NETLIB_CXXFLAGS) $(CPPDEPS) $<
 
@@ -10673,11 +10689,6 @@ $(OBJS)\coredll_graphics.o: ../../src/msw/graphics.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\coredll_gsockmsw.o: ../../src/msw/gsockmsw.cpp
-	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_icon.o: ../../src/msw/icon.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -11198,6 +11209,11 @@ $(OBJS)\coredll_btncmn.o: ../../src/common/btncmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\coredll_cairo.o: ../../src/common/cairo.cpp
+	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_choiccmn.o: ../../src/common/choiccmn.cpp
 	$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -12061,11 +12077,6 @@ $(OBJS)\corelib_graphics.o: ../../src/msw/graphics.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\corelib_gsockmsw.o: ../../src/msw/gsockmsw.cpp
-	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_icon.o: ../../src/msw/icon.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -12586,6 +12597,11 @@ $(OBJS)\corelib_btncmn.o: ../../src/common/btncmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
+ifeq ($(USE_GUI),1)
+$(OBJS)\corelib_cairo.o: ../../src/common/cairo.cpp
+	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+endif
+
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_choiccmn.o: ../../src/common/choiccmn.cpp
 	$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc
index 3672e9a4fa..15a59fdc62 100644
--- a/build/msw/makefile.vc
+++ b/build/msw/makefile.vc
@@ -407,6 +407,7 @@ MONODLL_OBJECTS =  \
 	$(OBJS)\monodll_socket.obj \
 	$(OBJS)\monodll_url.obj \
 	$(OBJS)\monodll_gsocket.obj \
+	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_urlmsw.obj \
 	$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) \
 	$(OBJS)\monodll_xml.obj \
@@ -548,6 +549,7 @@ MONOLIB_OBJECTS =  \
 	$(OBJS)\monolib_socket.obj \
 	$(OBJS)\monolib_url.obj \
 	$(OBJS)\monolib_gsocket.obj \
+	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_urlmsw.obj \
 	$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) \
 	$(OBJS)\monolib_xml.obj \
@@ -824,6 +826,7 @@ NETDLL_OBJECTS =  \
 	$(OBJS)\netdll_socket.obj \
 	$(OBJS)\netdll_url.obj \
 	$(OBJS)\netdll_gsocket.obj \
+	$(OBJS)\netdll_gsockmsw.obj \
 	$(OBJS)\netdll_urlmsw.obj
 NETLIB_CXXFLAGS = /M$(__RUNTIME_LIBS_167)$(__DEBUGRUNTIME) /DWIN32 \
 	$(__DEBUGINFO) \
@@ -849,6 +852,7 @@ NETLIB_OBJECTS =  \
 	$(OBJS)\netlib_socket.obj \
 	$(OBJS)\netlib_url.obj \
 	$(OBJS)\netlib_gsocket.obj \
+	$(OBJS)\netlib_gsockmsw.obj \
 	$(OBJS)\netlib_urlmsw.obj
 COREDLL_CXXFLAGS = /M$(__RUNTIME_LIBS_181)$(__DEBUGRUNTIME) /DWIN32 \
 	$(__DEBUGINFO) \
@@ -1715,7 +1719,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.obj \
 	$(OBJS)\monodll_gdiplus.obj \
 	$(OBJS)\monodll_graphics.obj \
-	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_icon.obj \
 	$(OBJS)\monodll_imaglist.obj \
 	$(OBJS)\monodll_minifram.obj \
@@ -1797,6 +1800,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_btncmn.obj \
+	$(OBJS)\monodll_cairo.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
 	$(OBJS)\monodll_clrpickercmn.obj \
@@ -1939,7 +1943,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_gdiobj.obj \
 	$(OBJS)\monodll_gdiplus.obj \
 	$(OBJS)\monodll_graphics.obj \
-	$(OBJS)\monodll_gsockmsw.obj \
 	$(OBJS)\monodll_icon.obj \
 	$(OBJS)\monodll_imaglist.obj \
 	$(OBJS)\monodll_minifram.obj \
@@ -2024,6 +2027,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  \
 	$(OBJS)\monodll_bmpbase.obj \
 	$(OBJS)\monodll_bookctrl.obj \
 	$(OBJS)\monodll_btncmn.obj \
+	$(OBJS)\monodll_cairo.obj \
 	$(OBJS)\monodll_choiccmn.obj \
 	$(OBJS)\monodll_clipcmn.obj \
 	$(OBJS)\monodll_clrpickercmn.obj \
@@ -2353,7 +2357,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.obj \
 	$(OBJS)\monolib_gdiplus.obj \
 	$(OBJS)\monolib_graphics.obj \
-	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_icon.obj \
 	$(OBJS)\monolib_imaglist.obj \
 	$(OBJS)\monolib_minifram.obj \
@@ -2435,6 +2438,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_btncmn.obj \
+	$(OBJS)\monolib_cairo.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
 	$(OBJS)\monolib_clrpickercmn.obj \
@@ -2577,7 +2581,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_gdiobj.obj \
 	$(OBJS)\monolib_gdiplus.obj \
 	$(OBJS)\monolib_graphics.obj \
-	$(OBJS)\monolib_gsockmsw.obj \
 	$(OBJS)\monolib_icon.obj \
 	$(OBJS)\monolib_imaglist.obj \
 	$(OBJS)\monolib_minifram.obj \
@@ -2662,6 +2665,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  \
 	$(OBJS)\monolib_bmpbase.obj \
 	$(OBJS)\monolib_bookctrl.obj \
 	$(OBJS)\monolib_btncmn.obj \
+	$(OBJS)\monolib_cairo.obj \
 	$(OBJS)\monolib_choiccmn.obj \
 	$(OBJS)\monolib_clipcmn.obj \
 	$(OBJS)\monolib_clrpickercmn.obj \
@@ -2927,7 +2931,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.obj \
 	$(OBJS)\coredll_gdiplus.obj \
 	$(OBJS)\coredll_graphics.obj \
-	$(OBJS)\coredll_gsockmsw.obj \
 	$(OBJS)\coredll_icon.obj \
 	$(OBJS)\coredll_imaglist.obj \
 	$(OBJS)\coredll_minifram.obj \
@@ -3009,6 +3012,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_btncmn.obj \
+	$(OBJS)\coredll_cairo.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
 	$(OBJS)\coredll_clrpickercmn.obj \
@@ -3151,7 +3155,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_gdiobj.obj \
 	$(OBJS)\coredll_gdiplus.obj \
 	$(OBJS)\coredll_graphics.obj \
-	$(OBJS)\coredll_gsockmsw.obj \
 	$(OBJS)\coredll_icon.obj \
 	$(OBJS)\coredll_imaglist.obj \
 	$(OBJS)\coredll_minifram.obj \
@@ -3236,6 +3239,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  \
 	$(OBJS)\coredll_bmpbase.obj \
 	$(OBJS)\coredll_bookctrl.obj \
 	$(OBJS)\coredll_btncmn.obj \
+	$(OBJS)\coredll_cairo.obj \
 	$(OBJS)\coredll_choiccmn.obj \
 	$(OBJS)\coredll_clipcmn.obj \
 	$(OBJS)\coredll_clrpickercmn.obj \
@@ -3388,7 +3392,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.obj \
 	$(OBJS)\corelib_gdiplus.obj \
 	$(OBJS)\corelib_graphics.obj \
-	$(OBJS)\corelib_gsockmsw.obj \
 	$(OBJS)\corelib_icon.obj \
 	$(OBJS)\corelib_imaglist.obj \
 	$(OBJS)\corelib_minifram.obj \
@@ -3470,6 +3473,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_btncmn.obj \
+	$(OBJS)\corelib_cairo.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
 	$(OBJS)\corelib_clrpickercmn.obj \
@@ -3612,7 +3616,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_gdiobj.obj \
 	$(OBJS)\corelib_gdiplus.obj \
 	$(OBJS)\corelib_graphics.obj \
-	$(OBJS)\corelib_gsockmsw.obj \
 	$(OBJS)\corelib_icon.obj \
 	$(OBJS)\corelib_imaglist.obj \
 	$(OBJS)\corelib_minifram.obj \
@@ -3697,6 +3700,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  \
 	$(OBJS)\corelib_bmpbase.obj \
 	$(OBJS)\corelib_bookctrl.obj \
 	$(OBJS)\corelib_btncmn.obj \
+	$(OBJS)\corelib_cairo.obj \
 	$(OBJS)\corelib_choiccmn.obj \
 	$(OBJS)\corelib_clipcmn.obj \
 	$(OBJS)\corelib_clrpickercmn.obj \
@@ -5882,6 +5886,9 @@ $(OBJS)\monodll_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\monodll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
@@ -6479,11 +6486,6 @@ $(OBJS)\monodll_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -6904,6 +6906,11 @@ $(OBJS)\monodll_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monodll_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -7953,6 +7960,9 @@ $(OBJS)\monolib_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\monolib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
@@ -8550,11 +8560,6 @@ $(OBJS)\monolib_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -8975,6 +8980,11 @@ $(OBJS)\monolib_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\monolib_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -10333,6 +10343,9 @@ $(OBJS)\netdll_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\netdll_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
 
+$(OBJS)\netdll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
+
 $(OBJS)\netdll_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(NETDLL_CXXFLAGS) $**
 
@@ -10372,6 +10385,9 @@ $(OBJS)\netlib_url.obj: ..\..\src\common\url.cpp
 $(OBJS)\netlib_gsocket.obj: ..\..\src\msw\gsocket.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
 
+$(OBJS)\netlib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
+
 $(OBJS)\netlib_urlmsw.obj: ..\..\src\msw\urlmsw.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(NETLIB_CXXFLAGS) $**
 
@@ -10666,11 +10682,6 @@ $(OBJS)\coredll_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -11091,6 +11102,11 @@ $(OBJS)\coredll_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\coredll_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -11954,11 +11970,6 @@ $(OBJS)\corelib_graphics.obj: ..\..\src\msw\graphics.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_gsockmsw.obj: ..\..\src\msw\gsockmsw.cpp
-	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_icon.obj: ..\..\src\msw\icon.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -12379,6 +12390,11 @@ $(OBJS)\corelib_btncmn.obj: ..\..\src\common\btncmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
+!if "$(USE_GUI)" == "1"
+$(OBJS)\corelib_cairo.obj: ..\..\src\common\cairo.cpp
+	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+!endif
+
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_choiccmn.obj: ..\..\src\common\choiccmn.cpp
 	$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat
index 69323eb379..368e32542d 100644
--- a/build/msw/makefile.wat
+++ b/build/msw/makefile.wat
@@ -237,7 +237,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_gdiobj.obj &
 	$(OBJS)\monodll_gdiplus.obj &
 	$(OBJS)\monodll_graphics.obj &
-	$(OBJS)\monodll_gsockmsw.obj &
 	$(OBJS)\monodll_icon.obj &
 	$(OBJS)\monodll_imaglist.obj &
 	$(OBJS)\monodll_minifram.obj &
@@ -319,6 +318,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_bmpbase.obj &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_btncmn.obj &
+	$(OBJS)\monodll_cairo.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
 	$(OBJS)\monodll_clrpickercmn.obj &
@@ -463,7 +463,6 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_gdiobj.obj &
 	$(OBJS)\monodll_gdiplus.obj &
 	$(OBJS)\monodll_graphics.obj &
-	$(OBJS)\monodll_gsockmsw.obj &
 	$(OBJS)\monodll_icon.obj &
 	$(OBJS)\monodll_imaglist.obj &
 	$(OBJS)\monodll_minifram.obj &
@@ -548,6 +547,7 @@ ____CORE_SRC_FILENAMES_OBJECTS =  &
 	$(OBJS)\monodll_bmpbase.obj &
 	$(OBJS)\monodll_bookctrl.obj &
 	$(OBJS)\monodll_btncmn.obj &
+	$(OBJS)\monodll_cairo.obj &
 	$(OBJS)\monodll_choiccmn.obj &
 	$(OBJS)\monodll_clipcmn.obj &
 	$(OBJS)\monodll_clrpickercmn.obj &
@@ -880,7 +880,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_gdiobj.obj &
 	$(OBJS)\monolib_gdiplus.obj &
 	$(OBJS)\monolib_graphics.obj &
-	$(OBJS)\monolib_gsockmsw.obj &
 	$(OBJS)\monolib_icon.obj &
 	$(OBJS)\monolib_imaglist.obj &
 	$(OBJS)\monolib_minifram.obj &
@@ -962,6 +961,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_bmpbase.obj &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_btncmn.obj &
+	$(OBJS)\monolib_cairo.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
 	$(OBJS)\monolib_clrpickercmn.obj &
@@ -1106,7 +1106,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_gdiobj.obj &
 	$(OBJS)\monolib_gdiplus.obj &
 	$(OBJS)\monolib_graphics.obj &
-	$(OBJS)\monolib_gsockmsw.obj &
 	$(OBJS)\monolib_icon.obj &
 	$(OBJS)\monolib_imaglist.obj &
 	$(OBJS)\monolib_minifram.obj &
@@ -1191,6 +1190,7 @@ ____CORE_SRC_FILENAMES_1_OBJECTS =  &
 	$(OBJS)\monolib_bmpbase.obj &
 	$(OBJS)\monolib_bookctrl.obj &
 	$(OBJS)\monolib_btncmn.obj &
+	$(OBJS)\monolib_cairo.obj &
 	$(OBJS)\monolib_choiccmn.obj &
 	$(OBJS)\monolib_clipcmn.obj &
 	$(OBJS)\monolib_clrpickercmn.obj &
@@ -1451,7 +1451,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_gdiobj.obj &
 	$(OBJS)\coredll_gdiplus.obj &
 	$(OBJS)\coredll_graphics.obj &
-	$(OBJS)\coredll_gsockmsw.obj &
 	$(OBJS)\coredll_icon.obj &
 	$(OBJS)\coredll_imaglist.obj &
 	$(OBJS)\coredll_minifram.obj &
@@ -1533,6 +1532,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_bmpbase.obj &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_btncmn.obj &
+	$(OBJS)\coredll_cairo.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
 	$(OBJS)\coredll_clrpickercmn.obj &
@@ -1677,7 +1677,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_gdiobj.obj &
 	$(OBJS)\coredll_gdiplus.obj &
 	$(OBJS)\coredll_graphics.obj &
-	$(OBJS)\coredll_gsockmsw.obj &
 	$(OBJS)\coredll_icon.obj &
 	$(OBJS)\coredll_imaglist.obj &
 	$(OBJS)\coredll_minifram.obj &
@@ -1762,6 +1761,7 @@ ____CORE_SRC_FILENAMES_2_OBJECTS =  &
 	$(OBJS)\coredll_bmpbase.obj &
 	$(OBJS)\coredll_bookctrl.obj &
 	$(OBJS)\coredll_btncmn.obj &
+	$(OBJS)\coredll_cairo.obj &
 	$(OBJS)\coredll_choiccmn.obj &
 	$(OBJS)\coredll_clipcmn.obj &
 	$(OBJS)\coredll_clrpickercmn.obj &
@@ -1916,7 +1916,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_gdiobj.obj &
 	$(OBJS)\corelib_gdiplus.obj &
 	$(OBJS)\corelib_graphics.obj &
-	$(OBJS)\corelib_gsockmsw.obj &
 	$(OBJS)\corelib_icon.obj &
 	$(OBJS)\corelib_imaglist.obj &
 	$(OBJS)\corelib_minifram.obj &
@@ -1998,6 +1997,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_bmpbase.obj &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_btncmn.obj &
+	$(OBJS)\corelib_cairo.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
 	$(OBJS)\corelib_clrpickercmn.obj &
@@ -2142,7 +2142,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_gdiobj.obj &
 	$(OBJS)\corelib_gdiplus.obj &
 	$(OBJS)\corelib_graphics.obj &
-	$(OBJS)\corelib_gsockmsw.obj &
 	$(OBJS)\corelib_icon.obj &
 	$(OBJS)\corelib_imaglist.obj &
 	$(OBJS)\corelib_minifram.obj &
@@ -2227,6 +2226,7 @@ ____CORE_SRC_FILENAMES_3_OBJECTS =  &
 	$(OBJS)\corelib_bmpbase.obj &
 	$(OBJS)\corelib_bookctrl.obj &
 	$(OBJS)\corelib_btncmn.obj &
+	$(OBJS)\corelib_cairo.obj &
 	$(OBJS)\corelib_choiccmn.obj &
 	$(OBJS)\corelib_clipcmn.obj &
 	$(OBJS)\corelib_clrpickercmn.obj &
@@ -3337,6 +3337,7 @@ MONODLL_OBJECTS =  &
 	$(OBJS)\monodll_socket.obj &
 	$(OBJS)\monodll_url.obj &
 	$(OBJS)\monodll_gsocket.obj &
+	$(OBJS)\monodll_gsockmsw.obj &
 	$(OBJS)\monodll_urlmsw.obj &
 	$(____MONOLIB_GUI_SRC_FILENAMES_OBJECTS) &
 	$(OBJS)\monodll_xml.obj &
@@ -3473,6 +3474,7 @@ MONOLIB_OBJECTS =  &
 	$(OBJS)\monolib_socket.obj &
 	$(OBJS)\monolib_url.obj &
 	$(OBJS)\monolib_gsocket.obj &
+	$(OBJS)\monolib_gsockmsw.obj &
 	$(OBJS)\monolib_urlmsw.obj &
 	$(____MONOLIB_GUI_SRC_FILENAMES_1_OBJECTS) &
 	$(OBJS)\monolib_xml.obj &
@@ -3736,6 +3738,7 @@ NETDLL_OBJECTS =  &
 	$(OBJS)\netdll_socket.obj &
 	$(OBJS)\netdll_url.obj &
 	$(OBJS)\netdll_gsocket.obj &
+	$(OBJS)\netdll_gsockmsw.obj &
 	$(OBJS)\netdll_urlmsw.obj
 NETLIB_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
 	$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
@@ -3758,6 +3761,7 @@ NETLIB_OBJECTS =  &
 	$(OBJS)\netlib_socket.obj &
 	$(OBJS)\netlib_url.obj &
 	$(OBJS)\netlib_gsocket.obj &
+	$(OBJS)\netlib_gsockmsw.obj &
 	$(OBJS)\netlib_urlmsw.obj
 COREDLL_CXXFLAGS = -bd $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
 	$(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
@@ -5951,6 +5955,9 @@ $(OBJS)\monodll_url.obj :  .AUTODEPEND ..\..\src\common\url.cpp
 $(OBJS)\monodll_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
@@ -6548,11 +6555,6 @@ $(OBJS)\monodll_graphics.obj :  .AUTODEPEND ..\..\src\msw\graphics.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monodll_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monodll_icon.obj :  .AUTODEPEND ..\..\src\msw\icon.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -7073,6 +7075,11 @@ $(OBJS)\monodll_btncmn.obj :  .AUTODEPEND ..\..\src\common\btncmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monodll_cairo.obj :  .AUTODEPEND ..\..\src\common\cairo.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monodll_choiccmn.obj :  .AUTODEPEND ..\..\src\common\choiccmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -8122,6 +8129,9 @@ $(OBJS)\monolib_url.obj :  .AUTODEPEND ..\..\src\common\url.cpp
 $(OBJS)\monolib_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
@@ -8719,11 +8729,6 @@ $(OBJS)\monolib_graphics.obj :  .AUTODEPEND ..\..\src\msw\graphics.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monolib_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monolib_icon.obj :  .AUTODEPEND ..\..\src\msw\icon.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -9244,6 +9249,11 @@ $(OBJS)\monolib_btncmn.obj :  .AUTODEPEND ..\..\src\common\btncmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\monolib_cairo.obj :  .AUTODEPEND ..\..\src\common\cairo.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\monolib_choiccmn.obj :  .AUTODEPEND ..\..\src\common\choiccmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -10602,6 +10612,9 @@ $(OBJS)\netdll_url.obj :  .AUTODEPEND ..\..\src\common\url.cpp
 $(OBJS)\netdll_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
 
+$(OBJS)\netdll_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
+
 $(OBJS)\netdll_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(NETDLL_CXXFLAGS) $<
 
@@ -10641,6 +10654,9 @@ $(OBJS)\netlib_url.obj :  .AUTODEPEND ..\..\src\common\url.cpp
 $(OBJS)\netlib_gsocket.obj :  .AUTODEPEND ..\..\src\msw\gsocket.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
 
+$(OBJS)\netlib_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
+
 $(OBJS)\netlib_urlmsw.obj :  .AUTODEPEND ..\..\src\msw\urlmsw.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(NETLIB_CXXFLAGS) $<
 
@@ -10935,11 +10951,6 @@ $(OBJS)\coredll_graphics.obj :  .AUTODEPEND ..\..\src\msw\graphics.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\coredll_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\coredll_icon.obj :  .AUTODEPEND ..\..\src\msw\icon.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -11460,6 +11471,11 @@ $(OBJS)\coredll_btncmn.obj :  .AUTODEPEND ..\..\src\common\btncmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\coredll_cairo.obj :  .AUTODEPEND ..\..\src\common\cairo.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\coredll_choiccmn.obj :  .AUTODEPEND ..\..\src\common\choiccmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -12323,11 +12339,6 @@ $(OBJS)\corelib_graphics.obj :  .AUTODEPEND ..\..\src\msw\graphics.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\corelib_gsockmsw.obj :  .AUTODEPEND ..\..\src\msw\gsockmsw.cpp
-	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\corelib_icon.obj :  .AUTODEPEND ..\..\src\msw\icon.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -12848,6 +12859,11 @@ $(OBJS)\corelib_btncmn.obj :  .AUTODEPEND ..\..\src\common\btncmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
+!ifeq USE_GUI 1
+$(OBJS)\corelib_cairo.obj :  .AUTODEPEND ..\..\src\common\cairo.cpp
+	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+!endif
+
 !ifeq USE_GUI 1
 $(OBJS)\corelib_choiccmn.obj :  .AUTODEPEND ..\..\src\common\choiccmn.cpp
 	$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
diff --git a/build/msw/wx_core.dsp b/build/msw/wx_core.dsp
index b652951e8c..bf0480a76d 100644
--- a/build/msw/wx_core.dsp
+++ b/build/msw/wx_core.dsp
@@ -488,6 +488,10 @@ SOURCE=..\..\src\common\btncmn.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\cairo.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\choiccmn.cpp
 # End Source File
 # Begin Source File
@@ -2163,10 +2167,6 @@ SOURCE=..\..\src\msw\graphics.cpp
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\src\msw\gsockmsw.cpp
-# End Source File
-# Begin Source File
-
 SOURCE=..\..\src\msw\helpchm.cpp
 # End Source File
 # Begin Source File
@@ -8717,6 +8717,10 @@ SOURCE=..\..\include\wx\button.h
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\include\wx\cairo.h
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\include\wx\calctrl.h
 # End Source File
 # Begin Source File
diff --git a/build/msw/wx_net.dsp b/build/msw/wx_net.dsp
index bed2a90ba5..de4faa2bc6 100644
--- a/build/msw/wx_net.dsp
+++ b/build/msw/wx_net.dsp
@@ -506,6 +506,10 @@ SOURCE=..\..\src\msw\gsocket.cpp
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\msw\gsockmsw.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\msw\urlmsw.cpp
 # End Source File
 # Begin Source File
diff --git a/docs/changes.txt b/docs/changes.txt
index eda95227fb..6ae566da88 100644
--- a/docs/changes.txt
+++ b/docs/changes.txt
@@ -138,6 +138,8 @@ Major new features in this release
 
 All:
 
+- Added support for using wxEventLoop, timers and sockets in console
+  applications (Lukasz Michalski).
 - Added support for user-defined types to wxConfig (Marcin Wojdyr).
 - Added wxJoin() and wxSplit() functions (Francesco Montorsi).
 - Added wxMutex::LockTimeout() (Aleksandr Napylov).
@@ -146,7 +148,6 @@ All:
 - Added wxEXEC_BLOCK flag (Hank Schultz).
 - Add support for wxStream-derived classes to wxRTTI (Stas Sergeev).
 - Added wxStreamBuffer::Truncate() (Stas Sergeev).
-- Allow using  wxEventLoop in console applications (Lukasz Michalski).
 - Added functions for Base64 en/decoding (Charles Reimers).
 - Added support for binary data to wxConfig (Charles Reimers).
 - Added functions for atomically inc/decrementing integers (Armel Asselin).
diff --git a/include/wx/mac/carbon/gsockmac.h b/include/wx/mac/carbon/gsockmac.h
index de035d0d40..556e3ea52f 100644
--- a/include/wx/mac/carbon/gsockmac.h
+++ b/include/wx/mac/carbon/gsockmac.h
@@ -50,6 +50,8 @@ public:
     GAddress *GetPeer();
     GSocketError SetServer();
     GSocket *WaitConnection();
+    // not used under Mac
+    void Notify(bool WXUNUSED(enable)) { }
     bool SetReusable() { return false; }
     GSocketError SetNonOriented();
     GSocketError Connect(GSocketStream stream);
diff --git a/include/wx/msw/gsockmsw.h b/include/wx/msw/gsockmsw.h
index a32589d602..720a156b52 100644
--- a/include/wx/msw/gsockmsw.h
+++ b/include/wx/msw/gsockmsw.h
@@ -62,6 +62,8 @@ public:
   GAddress *GetPeer();
   GSocketError SetServer();
   GSocket *WaitConnection();
+  // not used under MSW
+  void Notify(bool WXUNUSED(enable)) { }
   bool SetReusable();
   bool SetBroadcast();
   bool DontDoBind();
diff --git a/include/wx/unix/gsockunx.h b/include/wx/unix/gsockunx.h
index a01f6013d2..a09e74cfd2 100644
--- a/include/wx/unix/gsockunx.h
+++ b/include/wx/unix/gsockunx.h
@@ -25,6 +25,8 @@ class wxGSocketIOHandler;
 #include "gsocket.h"
 #endif
 
+#include "wx/private/gsocketiohandler.h"
+
 class GSocketGUIFunctionsTableConcrete : public GSocketGUIFunctionsTable
 {
 public:
@@ -70,9 +72,14 @@ public:
     GSocketError GetSockOpt(int level, int optname, void *optval, int *optlen);
     GSocketError SetSockOpt(int level, int optname,
         const void *optval, int optlen);
+    // enable or disable notifications
+    void Notify(bool enable);
     virtual void Detected_Read();
     virtual void Detected_Write();
 protected:
+    //enable or disable event callback using gsocket gui callback table
+    void EnableEvents(bool flag = true);
+    void DisableEvents() { EnableEvents(false); }
     void Enable(GSocketEvent event);
     void Disable(GSocketEvent event);
     GSocketError Input_Timeout();
@@ -100,6 +107,9 @@ public:
   bool m_dobind;
   unsigned long m_timeout;
 
+  // true if socket should fire events (use GUI GSocketFunctionsTable)
+  bool m_use_events;
+
   /* Callbacks */
   GSocketEventFlags m_detected;
   GSocketCallback m_cbacks[GSOCK_MAX_EVENT];
diff --git a/src/common/combocmn.cpp b/src/common/combocmn.cpp
index ef60292f51..bf94d2253b 100644
--- a/src/common/combocmn.cpp
+++ b/src/common/combocmn.cpp
@@ -2249,6 +2249,7 @@ void wxComboCtrlBase::SetValueWithEvent(const wxString& value, bool withEvent)
             m_ignoreEvtText++;
 
         m_text->SetValue(value);
+
         if ( !(m_iFlags & wxCC_NO_TEXT_AUTO_SELECT) )
             m_text->SelectAll();
     }
diff --git a/src/common/fdiodispatcher.cpp b/src/common/fdiodispatcher.cpp
index f526487130..65c862cf88 100644
--- a/src/common/fdiodispatcher.cpp
+++ b/src/common/fdiodispatcher.cpp
@@ -55,7 +55,7 @@ wxFDIODispatcher *wxFDIODispatcher::Get()
 #endif // wxUSE_EPOLL_DISPATCHER
 #if wxUSE_SELECT_DISPATCHER
             gs_dispatcher = wxSelectDispatcher::Create();
-#endif // wxUSE_WCHAR_T
+#endif // wxUSE_SELECT_DISPATCHER
     }
 
     wxASSERT_MSG( gs_dispatcher, _T("failed to create any IO dispatchers") );
diff --git a/src/common/gsocketiohandler.cpp b/src/common/gsocketiohandler.cpp
index ece535c02c..63c28bf707 100644
--- a/src/common/gsocketiohandler.cpp
+++ b/src/common/gsocketiohandler.cpp
@@ -198,6 +198,7 @@ void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket,
       {
           dispatcher->UnregisterFD(fd);
           delete handler;
+          socket->m_handler = NULL;
       }
       else
       {
diff --git a/src/common/selectdispatcher.cpp b/src/common/selectdispatcher.cpp
index f13df0daa6..138fa3cc8c 100644
--- a/src/common/selectdispatcher.cpp
+++ b/src/common/selectdispatcher.cpp
@@ -95,14 +95,10 @@ bool wxSelectSets::SetFD(int fd, int flags)
         if ( flags & ms_flags[n] )
         {
             wxFD_SET(fd, &m_fds[n]);
-            wxLogTrace(wxSelectDispatcher_Trace,
-                       _T("Registered fd %d for %s events"), fd, ms_names[n]);
         }
         else if ( wxFD_ISSET(fd,  (fd_set*) &m_fds[n]) )
         {
             wxFD_CLR(fd, &m_fds[n]);
-            wxLogTrace(wxSelectDispatcher_Trace,
-                       _T("Unregistered fd %d from %s events"), fd, ms_names[n]);
         }
     }
 
@@ -123,6 +119,9 @@ void wxSelectSets::Handle(int fd, wxFDIOHandler& handler) const
             wxLogTrace(wxSelectDispatcher_Trace,
                        _T("Got %s event on fd %d"), ms_names[n], fd);
             (handler.*ms_handlers[n])();
+            // callback can modify sets and destroy handler, returning from
+            // here guarantees that one event is processed at a time
+            return;
         }
     }
 }
@@ -153,6 +152,8 @@ bool wxSelectDispatcher::RegisterFD(int fd, wxFDIOHandler *handler, int flags)
     if ( fd > m_maxFD )
       m_maxFD = fd;
 
+    wxLogTrace(wxSelectDispatcher_Trace,
+                _T("Registered fd %d: input:%d, output:%d, exceptional:%d"), fd, (flags & wxFDIO_INPUT) == wxFDIO_INPUT, (flags & wxFDIO_OUTPUT), (flags & wxFDIO_EXCEPTION) == wxFDIO_EXCEPTION);
     return true;
 }
 
@@ -163,6 +164,8 @@ bool wxSelectDispatcher::ModifyFD(int fd, wxFDIOHandler *handler, int flags)
 
     wxASSERT_MSG( fd <= m_maxFD, _T("logic error: registered fd > m_maxFD?") );
 
+    wxLogTrace(wxSelectDispatcher_Trace,
+                _T("Modified fd %d: input:%d, output:%d, exceptional:%d"), fd, (flags & wxFDIO_INPUT) == wxFDIO_INPUT, (flags & wxFDIO_OUTPUT) == wxFDIO_OUTPUT, (flags & wxFDIO_EXCEPTION) == wxFDIO_EXCEPTION);
     return m_sets.SetFD(fd, flags);
 }
 
@@ -185,11 +188,15 @@ bool wxSelectDispatcher::UnregisterFD(int fd)
                   ++it )
             {
                 if ( it->first > m_maxFD )
+                {
                     m_maxFD = it->first;
+                }
             }
         }
     }
 
+    wxLogTrace(wxSelectDispatcher_Trace,
+                _T("Removed fd %d, current max: %d"), fd, m_maxFD);
     return true;
 }
 
diff --git a/src/common/socket.cpp b/src/common/socket.cpp
index e90a3b7cb5..c5b4ce938c 100644
--- a/src/common/socket.cpp
+++ b/src/common/socket.cpp
@@ -1009,6 +1009,8 @@ void wxSocketBase::OnRequest(wxSocketNotify notification)
 void wxSocketBase::Notify(bool notify)
 {
     m_notify = notify;
+    if ( m_socket )
+        m_socket->Notify(notify);
 }
 
 void wxSocketBase::SetNotify(wxSocketEventFlags flags)
@@ -1096,8 +1098,8 @@ wxSocketServer::wxSocketServer(const wxSockAddress& addr_man,
         return;
     }
 
-        // Setup the socket as server
-
+    // Setup the socket as server
+    m_socket->Notify(m_notify);
     m_socket->SetLocal(addr_man.GetAddress());
 
     if (GetFlags() & wxSOCKET_REUSEADDR) {
@@ -1123,6 +1125,8 @@ wxSocketServer::wxSocketServer(const wxSockAddress& addr_man,
     m_socket->SetCallback(GSOCK_INPUT_FLAG | GSOCK_OUTPUT_FLAG |
                                   GSOCK_LOST_FLAG | GSOCK_CONNECTION_FLAG,
                                   wx_socket_callback, (char *)this);
+
+    wxLogTrace( wxTRACE_Socket, _T("wxSocketServer on fd %d"), m_socket->m_fd );
 }
 
 // --------------------------------------------------------------------------
@@ -1306,6 +1310,9 @@ bool wxSocketClient::DoConnect(wxSockAddress& addr_man, wxSockAddress* local, bo
   m_socket->SetPeer(addr_man.GetAddress());
   err = m_socket->Connect(GSOCK_STREAMED);
 
+  // register for callbacks (call it after m_socket->m_fd was initialized)
+  m_socket->Notify(m_notify);
+
   if (!wait)
     m_socket->SetNonBlocking(0);
 
@@ -1361,6 +1368,7 @@ wxDatagramSocket::wxDatagramSocket( const wxSockAddress& addr,
         wxFAIL_MSG( _T("datagram socket not new'd") );
         return;
     }
+    m_socket->Notify(m_notify);
     // Setup the socket as non connection oriented
     m_socket->SetLocal(addr.GetAddress());
     if (flags & wxSOCKET_REUSEADDR)
diff --git a/src/msw/evtloop.cpp b/src/msw/evtloop.cpp
index 48dfc76523..f30816d9ce 100644
--- a/src/msw/evtloop.cpp
+++ b/src/msw/evtloop.cpp
@@ -336,7 +336,7 @@ bool wxConsoleEventLoop::Dispatch()
     }
     else
     {
-        wxLogDebug(_T("Ignoring unexpected message %d"), msg.message);
+        ::DispatchMessage(&msg);
     }
 
     return !m_shouldExit;
diff --git a/src/msw/gsocket.cpp b/src/msw/gsocket.cpp
index 63da499669..e9713757e8 100644
--- a/src/msw/gsocket.cpp
+++ b/src/msw/gsocket.cpp
@@ -93,32 +93,6 @@
 
 static GSocketGUIFunctionsTable *gs_gui_functions;
 
-class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable
-{
-public:
-    virtual bool OnInit();
-    virtual void OnExit();
-    virtual bool CanUseEventLoop();
-    virtual bool Init_Socket(GSocket *socket);
-    virtual void Destroy_Socket(GSocket *socket);
-    virtual void Enable_Events(GSocket *socket);
-    virtual void Disable_Events(GSocket *socket);
-};
-
-bool GSocketGUIFunctionsTableNull::OnInit()
-{   return true; }
-void GSocketGUIFunctionsTableNull::OnExit()
-{}
-bool GSocketGUIFunctionsTableNull::CanUseEventLoop()
-{   return false; }
-bool GSocketGUIFunctionsTableNull::Init_Socket(GSocket *WXUNUSED(socket))
-{   return true; }
-void GSocketGUIFunctionsTableNull::Destroy_Socket(GSocket *WXUNUSED(socket))
-{}
-void GSocketGUIFunctionsTableNull::Enable_Events(GSocket *WXUNUSED(socket))
-{}
-void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *WXUNUSED(socket))
-{}
 /* Global initialisers */
 
 void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc)
@@ -132,7 +106,7 @@ int GSocket_Init(void)
 
   if (!gs_gui_functions)
   {
-    static GSocketGUIFunctionsTableNull table;
+    static GSocketGUIFunctionsTableConcrete table;
     gs_gui_functions = &table;
   }
   if ( !gs_gui_functions->OnInit() )
diff --git a/src/unix/epolldispatcher.cpp b/src/unix/epolldispatcher.cpp
index 92a0bb0617..7557062604 100644
--- a/src/unix/epolldispatcher.cpp
+++ b/src/unix/epolldispatcher.cpp
@@ -82,7 +82,8 @@ wxEpollDispatcher *wxEpollDispatcher::Create()
         wxLogSysError(_("Failed to create epoll descriptor"));
         return NULL;
     }
-
+    wxLogTrace(wxEpollDispatcher_Trace,
+                   _T("Epoll fd %d created"), epollDescriptor);
     return new wxEpollDispatcher(epollDescriptor);
 }
 
@@ -115,6 +116,8 @@ bool wxEpollDispatcher::RegisterFD(int fd, wxFDIOHandler* handler, int flags)
 
         return false;
     }
+    wxLogTrace(wxEpollDispatcher_Trace,
+               _T("Added fd %d (handler %p) to epoll %d"), fd, handler, m_epollDescriptor);
 
     return true;
 }
@@ -134,6 +137,8 @@ bool wxEpollDispatcher::ModifyFD(int fd, wxFDIOHandler* handler, int flags)
         return false;
     }
 
+    wxLogTrace(wxEpollDispatcher_Trace,
+                _T("Modified fd %d (handler: %p) on epoll %d"), fd, handler, m_epollDescriptor);
     return true;
 }
 
@@ -148,7 +153,8 @@ bool wxEpollDispatcher::UnregisterFD(int fd)
         wxLogSysError(_("Failed to unregister descriptor %d from epoll descriptor %d"),
                       fd, m_epollDescriptor);
     }
-
+    wxLogTrace(wxEpollDispatcher_Trace,
+                _T("removed fd %d from %d"), fd, m_epollDescriptor);
     return true;
 }
 
diff --git a/src/unix/gsocket.cpp b/src/unix/gsocket.cpp
index 0c8f5f9a40..56cd066119 100644
--- a/src/unix/gsocket.cpp
+++ b/src/unix/gsocket.cpp
@@ -21,6 +21,7 @@
 #ifndef __GSOCKET_STANDALONE__
 #include "wx/defs.h"
 #include "wx/private/gsocketiohandler.h"
+#include "wx/thread.h"
 #endif
 
 #if defined(__VISAGECPP__)
@@ -455,38 +456,6 @@ struct servent *wxGetservbyname_r(const char *port, const char *protocol,
 
 static GSocketGUIFunctionsTable *gs_gui_functions;
 
-class GSocketGUIFunctionsTableNull: public GSocketGUIFunctionsTable
-{
-public:
-    virtual bool OnInit();
-    virtual void OnExit();
-    virtual bool CanUseEventLoop();
-    virtual bool Init_Socket(GSocket *socket);
-    virtual void Destroy_Socket(GSocket *socket);
-    virtual void Install_Callback(GSocket *socket, GSocketEvent event);
-    virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event);
-    virtual void Enable_Events(GSocket *socket);
-    virtual void Disable_Events(GSocket *socket);
-};
-
-bool GSocketGUIFunctionsTableNull::OnInit()
-{   return true; }
-void GSocketGUIFunctionsTableNull::OnExit()
-{}
-bool GSocketGUIFunctionsTableNull::CanUseEventLoop()
-{   return false; }
-bool GSocketGUIFunctionsTableNull::Init_Socket(GSocket *WXUNUSED(socket))
-{   return true; }
-void GSocketGUIFunctionsTableNull::Destroy_Socket(GSocket *WXUNUSED(socket))
-{}
-void GSocketGUIFunctionsTableNull::Install_Callback(GSocket *WXUNUSED(socket), GSocketEvent WXUNUSED(event))
-{}
-void GSocketGUIFunctionsTableNull::Uninstall_Callback(GSocket *WXUNUSED(socket), GSocketEvent WXUNUSED(event))
-{}
-void GSocketGUIFunctionsTableNull::Enable_Events(GSocket *WXUNUSED(socket))
-{}
-void GSocketGUIFunctionsTableNull::Disable_Events(GSocket *WXUNUSED(socket))
-{}
 /* Global initialisers */
 
 void GSocket_SetGUIFunctions(GSocketGUIFunctionsTable *guifunc)
@@ -498,7 +467,7 @@ int GSocket_Init(void)
 {
   if (!gs_gui_functions)
   {
-    static GSocketGUIFunctionsTableNull table;
+    static GSocketGUIFunctionsTableConcrete table;
     gs_gui_functions = &table;
   }
   if ( !gs_gui_functions->OnInit() )
@@ -541,6 +510,7 @@ GSocket::GSocket()
   m_timeout             = 10*60*1000;
                                 /* 10 minutes * 60 sec * 1000 millisec */
   m_establishing        = false;
+  m_use_events          = false;
 
   assert(gs_gui_functions);
   /* Per-socket GUI-specific initialization */
@@ -549,7 +519,8 @@ GSocket::GSocket()
 
 void GSocket::Close()
 {
-    gs_gui_functions->Disable_Events(this);
+    if (m_use_events)
+        DisableEvents();
     /* gsockosx.c calls CFSocketInvalidate which closes the socket for us */
 #if !(defined(__DARWIN__) && (defined(__WXMAC__) || defined(__WXCOCOA__)))
     close(m_fd);
@@ -566,7 +537,8 @@ GSocket::~GSocket()
     Shutdown();
 
   /* Per-socket GUI-specific cleanup */
-  gs_gui_functions->Destroy_Socket(this);
+  if (m_use_events)
+    gs_gui_functions->Destroy_Socket(this);
 
   delete m_handler;
 
@@ -576,6 +548,7 @@ GSocket::~GSocket()
 
   if (m_peer)
     GAddress_destroy(m_peer);
+
 }
 
 /* GSocket_Shutdown:
@@ -589,7 +562,8 @@ void GSocket::Shutdown()
   assert(this);
 
   /* Don't allow events to fire after socket has been closed */
-  gs_gui_functions->Disable_Events(this);
+  if (m_use_events)
+    DisableEvents();
 
   /* If socket has been created, shutdown it */
   if (m_fd != INVALID_SOCKET)
@@ -773,7 +747,8 @@ GSocketError GSocket::SetServer()
 #endif
 
   ioctl(m_fd, FIONBIO, &arg);
-  gs_gui_functions->Enable_Events(this);
+  if (m_use_events)
+    EnableEvents();
 
   /* allow a socket to re-bind if the socket is in the TIME_WAIT
      state after being previously closed.
@@ -892,11 +867,30 @@ GSocket *GSocket::WaitConnection()
 #else
   ioctl(connection->m_fd, FIONBIO, &arg);
 #endif
-  gs_gui_functions->Enable_Events(connection);
+  if (m_use_events)
+    connection->Notify(true);
 
   return connection;
 }
 
+void GSocket::Notify(bool flag)
+{
+    if ( flag == m_use_events )
+        return;
+    // it is not safe to attach or detach i/o descriptor in child thread
+    wxASSERT_MSG(wxThread::IsMain(),wxT("wxSocketBase::Notify can be called in main thread only"));
+    m_use_events = flag;
+    EnableEvents(flag);
+}
+
+void GSocket::EnableEvents(bool flag)
+{
+    if ( flag )
+        gs_gui_functions->Enable_Events(this);
+    else
+        gs_gui_functions->Disable_Events(this);
+}
+
 bool GSocket::SetReusable()
 {
     /* socket must not be null, and must not be in use/already bound */
@@ -1029,8 +1023,8 @@ GSocketError GSocket::Connect(GSocketStream stream)
    * call to Enable_Events now.
    */
 
-  if (m_non_blocking || ret == 0)
-    gs_gui_functions->Enable_Events(this);
+  if ( m_use_events && (m_non_blocking || ret == 0) )
+    EnableEvents();
 
   if (ret == -1)
   {
@@ -1055,8 +1049,8 @@ GSocketError GSocket::Connect(GSocketStream stream)
         SOCKOPTLEN_T len = sizeof(error);
 
         getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*) &error, &len);
-
-        gs_gui_functions->Enable_Events(this);
+        if ( m_use_events )
+            EnableEvents();
 
         if (!error)
           return GSOCK_NOERROR;
@@ -1136,7 +1130,8 @@ GSocketError GSocket::SetNonOriented()
 #else
   ioctl(m_fd, FIONBIO, &arg);
 #endif
-  gs_gui_functions->Enable_Events(this);
+  if ( m_use_events )
+    EnableEvents();
 
   if (m_reusable)
   {
@@ -1208,9 +1203,12 @@ int GSocket::Read(char *buffer, int size)
     if (ret == 0)
     {
       /* Make sure wxSOCKET_LOST event gets sent and shut down the socket */
-      m_detected = GSOCK_LOST_FLAG;
-      Detected_Read();
-      return 0;
+      if (m_use_events)
+      {
+        m_detected = GSOCK_LOST_FLAG;
+        Detected_Read();
+        return 0;
+      }
     }
     else if (ret == -1)
     {
@@ -1538,14 +1536,20 @@ GSocketError GSocket::SetSockOpt(int level, int optname,
 
 void GSocket::Enable(GSocketEvent event)
 {
-  m_detected &= ~(1 << event);
-  gs_gui_functions->Install_Callback(this, event);
+    if ( m_use_events )
+    {
+        m_detected &= ~(1 << event);
+        gs_gui_functions->Install_Callback(this, event);
+    }
 }
 
 void GSocket::Disable(GSocketEvent event)
 {
-  m_detected |= (1 << event);
-  gs_gui_functions->Uninstall_Callback(this, event);
+    if ( m_use_events )
+    {
+        m_detected |= (1 << event);
+        gs_gui_functions->Uninstall_Callback(this, event);
+    }
 }
 
 /* _GSocket_Input_Timeout:
-- 
2.47.2