wx/xtistrm.h \
        wx/zipstrm.h \
        wx/zstream.h \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        src/common/dynlib.cpp \
        src/common/dynload.cpp \
        src/common/encconv.cpp \
+       src/common/evtloopcmn.cpp \
        src/common/extended.c \
        src/common/ffile.cpp \
        src/common/file.cpp \
        src/common/xtistrm.cpp \
        src/common/zipstrm.cpp \
        src/common/zstream.cpp \
+       src/common/fdiodispatcher.cpp \
+       src/common/selectdispatcher.cpp \
+       src/unix/appunix.cpp \
        src/unix/baseunix.cpp \
        src/unix/dir.cpp \
        src/unix/dlunix.cpp \
+       src/unix/epolldispatcher.cpp \
+       src/unix/evtloopunix.cpp \
        src/unix/mimetype.cpp \
        src/unix/snglinst.cpp \
        src/unix/stackwalk.cpp \
        src/unix/utilsunx.cpp \
        src/mac/carbon/utils.cpp \
        src/mac/carbon/uma.cpp \
+       src/msw/evtloopmsw.cpp \
        src/msw/main.cpp \
        src/msw/mslu.cpp \
        src/msw/volume.cpp \
        monodll_dynlib.o \
        monodll_dynload.o \
        monodll_encconv.o \
+       monodll_evtloopcmn.o \
        monodll_extended.o \
        monodll_ffile.o \
        monodll_file.o \
        monolib_dynlib.o \
        monolib_dynload.o \
        monolib_encconv.o \
+       monolib_evtloopcmn.o \
        monolib_extended.o \
        monolib_ffile.o \
        monolib_file.o \
        basedll_dynlib.o \
        basedll_dynload.o \
        basedll_encconv.o \
+       basedll_evtloopcmn.o \
        basedll_extended.o \
        basedll_ffile.o \
        basedll_file.o \
        baselib_dynlib.o \
        baselib_dynload.o \
        baselib_encconv.o \
+       baselib_evtloopcmn.o \
        baselib_extended.o \
        baselib_ffile.o \
        baselib_file.o \
 @COND_TOOLKIT_WINCE@OPENGL_HDR_PLATFORM = wx/msw/glcanvas.h
 @COND_TOOLKIT_X11@OPENGL_HDR_PLATFORM = wx/x11/glcanvas.h wx/unix/glx11.h
 COND_TOOLKIT__BASE_MACOSX_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        wx/mac/corefoundation/stdpaths.h
 @COND_TOOLKIT_@BASE_MACOSX_HDR = $(COND_TOOLKIT__BASE_MACOSX_HDR)
 COND_TOOLKIT_COCOA_BASE_MACOSX_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        wx/mac/corefoundation/stdpaths.h
 @COND_TOOLKIT_COCOA@BASE_MACOSX_HDR = $(COND_TOOLKIT_COCOA_BASE_MACOSX_HDR)
 COND_TOOLKIT_GTK_BASE_MACOSX_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        wx/mac/corefoundation/cfstring.h \
        wx/mac/corefoundation/hid.h \
        wx/mac/corefoundation/stdpaths.h \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
+       wx/unix/evtloop.h \
        wx/unix/stdpaths.h
 @COND_TOOLKIT_MAC@BASE_MACOSX_HDR = $(COND_TOOLKIT_MAC_BASE_MACOSX_HDR)
 COND_TOOLKIT_MOTIF_BASE_MACOSX_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        wx/mac/corefoundation/stdpaths.h
 @COND_TOOLKIT_MOTIF@BASE_MACOSX_HDR = $(COND_TOOLKIT_MOTIF_BASE_MACOSX_HDR)
 COND_TOOLKIT_X11_BASE_MACOSX_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        wx/os2/wxrsc.h
 @COND_PLATFORM_OS2_1@BASE_PLATFORM_HDR = $(COND_PLATFORM_OS2_1_BASE_PLATFORM_HDR)
 COND_PLATFORM_UNIX_1_BASE_PLATFORM_HDR =  \
+       wx/unix/app.h \
        wx/unix/apptbase.h \
        wx/unix/apptrait.h \
        wx/unix/execute.h \
+       wx/unix/evtloop.h \
        wx/unix/mimetype.h \
        wx/unix/pipe.h \
        wx/unix/private.h \
        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_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
 @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_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
        monodll_utilsexc_base.o
 @COND_TOOLKIT_@__BASE_MACOSX_SRC_OBJECTS = $(COND_TOOLKIT____BASE_MACOSX_SRC_OBJECTS)
 COND_TOOLKIT_COCOA___BASE_MACOSX_SRC_OBJECTS =  \
+       monodll_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
        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_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
        monodll_cfstring.o \
        monodll_stdpaths_cf.o \
        monodll_utilsexc_base.o \
+       monodll_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
+       monodll_evtloopunix.o \
        monodll_dlunix.o \
        monodll_snglinst.o \
        monodll_stdpaths.o \
        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_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
        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_fdiodispatcher.o \
+       monodll_selectdispatcher.o \
+       monodll_appunix.o \
        monodll_baseunix.o \
        monodll_dir.o \
        monodll_dlunix.o \
+       monodll_epolldispatcher.o \
+       monodll_evtloopunix.o \
        monodll_mimetype.o \
        monodll_snglinst.o \
        monodll_stackwalk.o \
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS \
 @COND_PLATFORM_UNIX_1@ = monodll_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS \
-@COND_PLATFORM_WIN32_1@        = monodll_main.o monodll_mslu.o monodll_volume.o
+@COND_PLATFORM_WIN32_1@        = monodll_evtloopmsw.o monodll_main.o monodll_mslu.o \
+@COND_PLATFORM_WIN32_1@        monodll_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS = \
 @COND_TOOLKIT_MAC@     monodll_utils.o monodll_uma.o
 @COND_PLATFORM_MACOSX_1@__NET_PLATFORM_SRC_OBJECTS = monodll_gsocket.o
        monodll_dpycmn.o \
        monodll_dseldlg.o \
        monodll_effects.o \
-       monodll_evtloopcmn.o \
        monodll_fddlgcmn.o \
        monodll_filepickercmn.o \
        monodll_fontpickercmn.o \
        monodll_dpycmn.o \
        monodll_dseldlg.o \
        monodll_effects.o \
-       monodll_evtloopcmn.o \
        monodll_fddlgcmn.o \
        monodll_filepickercmn.o \
        monodll_fontpickercmn.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS =  \
        monodll_fontmgrcmn.o \
        monodll_gsocketiohandler.o \
-       monodll_selectdispatcher.o \
        monodll_caret.o \
        monodll_colour.o \
        monodll_icon.o \
        monodll_dib.o \
        monodll_display.o \
        monodll_enhmeta.o \
-       monodll_evtloop.o \
        monodll_font.o \
        monodll_fontenum.o \
        monodll_fontutil.o \
        monodll_dib.o \
        monodll_display.o \
        monodll_enhmeta.o \
-       monodll_evtloop.o \
        monodll_font.o \
        monodll_fontenum.o \
        monodll_fontutil.o \
        monodll_utilsx11.o \
        monodll_displayx11.o \
        monodll_gsocketiohandler.o \
-       monodll_selectdispatcher.o \
        monodll_icon.o \
        monodll_timer.o \
        monodll_app.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_1 =  \
        monodll_fontmgrcmn.o \
        monodll_gsocketiohandler.o \
-       monodll_selectdispatcher.o \
        monodll_caret.o \
        monodll_colour.o \
        monodll_icon.o \
        monodll_dib.o \
        monodll_display.o \
        monodll_enhmeta.o \
-       monodll_evtloop.o \
        monodll_font.o \
        monodll_fontenum.o \
        monodll_fontutil.o \
        monodll_dib.o \
        monodll_display.o \
        monodll_enhmeta.o \
-       monodll_evtloop.o \
        monodll_font.o \
        monodll_fontenum.o \
        monodll_fontutil.o \
        monodll_utilsx11.o \
        monodll_displayx11.o \
        monodll_gsocketiohandler.o \
-       monodll_selectdispatcher.o \
        monodll_icon.o \
        monodll_timer.o \
        monodll_app.o \
        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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
 @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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
        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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
        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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
        monolib_cfstring.o \
        monolib_stdpaths_cf.o \
        monolib_utilsexc_base.o \
+       monolib_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
+       monolib_evtloopunix.o \
        monolib_dlunix.o \
        monolib_snglinst.o \
        monolib_stdpaths.o \
        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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
        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_fdiodispatcher.o \
+       monolib_selectdispatcher.o \
+       monolib_appunix.o \
        monolib_baseunix.o \
        monolib_dir.o \
        monolib_dlunix.o \
+       monolib_epolldispatcher.o \
+       monolib_evtloopunix.o \
        monolib_mimetype.o \
        monolib_snglinst.o \
        monolib_stackwalk.o \
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_1 \
 @COND_PLATFORM_UNIX_1@ = monolib_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_1 \
-@COND_PLATFORM_WIN32_1@        = monolib_main.o monolib_mslu.o monolib_volume.o
+@COND_PLATFORM_WIN32_1@        = monolib_evtloopmsw.o monolib_main.o monolib_mslu.o \
+@COND_PLATFORM_WIN32_1@        monolib_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_1 = \
 @COND_TOOLKIT_MAC@     monolib_utils.o monolib_uma.o
 @COND_PLATFORM_MACOSX_1@__NET_PLATFORM_SRC_OBJECTS_1 = monolib_gsocket.o
        monolib_dpycmn.o \
        monolib_dseldlg.o \
        monolib_effects.o \
-       monolib_evtloopcmn.o \
        monolib_fddlgcmn.o \
        monolib_filepickercmn.o \
        monolib_fontpickercmn.o \
        monolib_dpycmn.o \
        monolib_dseldlg.o \
        monolib_effects.o \
-       monolib_evtloopcmn.o \
        monolib_fddlgcmn.o \
        monolib_filepickercmn.o \
        monolib_fontpickercmn.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_2 =  \
        monolib_fontmgrcmn.o \
        monolib_gsocketiohandler.o \
-       monolib_selectdispatcher.o \
        monolib_caret.o \
        monolib_colour.o \
        monolib_icon.o \
        monolib_dib.o \
        monolib_display.o \
        monolib_enhmeta.o \
-       monolib_evtloop.o \
        monolib_font.o \
        monolib_fontenum.o \
        monolib_fontutil.o \
        monolib_dib.o \
        monolib_display.o \
        monolib_enhmeta.o \
-       monolib_evtloop.o \
        monolib_font.o \
        monolib_fontenum.o \
        monolib_fontutil.o \
        monolib_utilsx11.o \
        monolib_displayx11.o \
        monolib_gsocketiohandler.o \
-       monolib_selectdispatcher.o \
        monolib_icon.o \
        monolib_timer.o \
        monolib_app.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_3 =  \
        monolib_fontmgrcmn.o \
        monolib_gsocketiohandler.o \
-       monolib_selectdispatcher.o \
        monolib_caret.o \
        monolib_colour.o \
        monolib_icon.o \
        monolib_dib.o \
        monolib_display.o \
        monolib_enhmeta.o \
-       monolib_evtloop.o \
        monolib_font.o \
        monolib_fontenum.o \
        monolib_fontutil.o \
        monolib_dib.o \
        monolib_display.o \
        monolib_enhmeta.o \
-       monolib_evtloop.o \
        monolib_font.o \
        monolib_fontenum.o \
        monolib_fontutil.o \
        monolib_utilsx11.o \
        monolib_displayx11.o \
        monolib_gsocketiohandler.o \
-       monolib_selectdispatcher.o \
        monolib_icon.o \
        monolib_timer.o \
        monolib_app.o \
        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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
 @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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
        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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
        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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
        basedll_cfstring.o \
        basedll_stdpaths_cf.o \
        basedll_utilsexc_base.o \
+       basedll_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
+       basedll_evtloopunix.o \
        basedll_dlunix.o \
        basedll_snglinst.o \
        basedll_stdpaths.o \
        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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
        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_fdiodispatcher.o \
+       basedll_selectdispatcher.o \
+       basedll_appunix.o \
        basedll_baseunix.o \
        basedll_dir.o \
        basedll_dlunix.o \
+       basedll_epolldispatcher.o \
+       basedll_evtloopunix.o \
        basedll_mimetype.o \
        basedll_snglinst.o \
        basedll_stackwalk.o \
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_2 \
 @COND_PLATFORM_UNIX_1@ = basedll_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_2 \
-@COND_PLATFORM_WIN32_1@        = basedll_main.o basedll_mslu.o basedll_volume.o
+@COND_PLATFORM_WIN32_1@        = basedll_evtloopmsw.o basedll_main.o basedll_mslu.o \
+@COND_PLATFORM_WIN32_1@        basedll_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_2 = \
 @COND_TOOLKIT_MAC@     basedll_utils.o basedll_uma.o
 COND_MONOLITHIC_0_SHARED_0___baselib___depname = \
        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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
 @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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
        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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
        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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
        baselib_cfstring.o \
        baselib_stdpaths_cf.o \
        baselib_utilsexc_base.o \
+       baselib_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
+       baselib_evtloopunix.o \
        baselib_dlunix.o \
        baselib_snglinst.o \
        baselib_stdpaths.o \
        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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
        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_fdiodispatcher.o \
+       baselib_selectdispatcher.o \
+       baselib_appunix.o \
        baselib_baseunix.o \
        baselib_dir.o \
        baselib_dlunix.o \
+       baselib_epolldispatcher.o \
+       baselib_evtloopunix.o \
        baselib_mimetype.o \
        baselib_snglinst.o \
        baselib_stackwalk.o \
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_3 \
 @COND_PLATFORM_UNIX_1@ = baselib_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_3 \
-@COND_PLATFORM_WIN32_1@        = baselib_main.o baselib_mslu.o baselib_volume.o
+@COND_PLATFORM_WIN32_1@        = baselib_evtloopmsw.o baselib_main.o baselib_mslu.o \
+@COND_PLATFORM_WIN32_1@        baselib_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_3 = \
 @COND_TOOLKIT_MAC@     baselib_utils.o baselib_uma.o
 @COND_SHARED_1@____wxbase_namedll_DEP = $(__basedll___depname)
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_4 \
 @COND_PLATFORM_UNIX_1@ = coredll_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_4 \
-@COND_PLATFORM_WIN32_1@        = coredll_main.o coredll_mslu.o coredll_volume.o
+@COND_PLATFORM_WIN32_1@        = coredll_evtloopmsw.o coredll_main.o coredll_mslu.o \
+@COND_PLATFORM_WIN32_1@        coredll_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_4 = \
 @COND_TOOLKIT_MAC@     coredll_utils.o coredll_uma.o
 COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_2 =  \
        coredll_dpycmn.o \
        coredll_dseldlg.o \
        coredll_effects.o \
-       coredll_evtloopcmn.o \
        coredll_fddlgcmn.o \
        coredll_filepickercmn.o \
        coredll_fontpickercmn.o \
        coredll_dpycmn.o \
        coredll_dseldlg.o \
        coredll_effects.o \
-       coredll_evtloopcmn.o \
        coredll_fddlgcmn.o \
        coredll_filepickercmn.o \
        coredll_fontpickercmn.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_4 =  \
        coredll_fontmgrcmn.o \
        coredll_gsocketiohandler.o \
-       coredll_selectdispatcher.o \
        coredll_caret.o \
        coredll_colour.o \
        coredll_icon.o \
        coredll_dib.o \
        coredll_display.o \
        coredll_enhmeta.o \
-       coredll_evtloop.o \
        coredll_font.o \
        coredll_fontenum.o \
        coredll_fontutil.o \
        coredll_dib.o \
        coredll_display.o \
        coredll_enhmeta.o \
-       coredll_evtloop.o \
        coredll_font.o \
        coredll_fontenum.o \
        coredll_fontutil.o \
        coredll_utilsx11.o \
        coredll_displayx11.o \
        coredll_gsocketiohandler.o \
-       coredll_selectdispatcher.o \
        coredll_icon.o \
        coredll_timer.o \
        coredll_app.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_5 =  \
        coredll_fontmgrcmn.o \
        coredll_gsocketiohandler.o \
-       coredll_selectdispatcher.o \
        coredll_caret.o \
        coredll_colour.o \
        coredll_icon.o \
        coredll_dib.o \
        coredll_display.o \
        coredll_enhmeta.o \
-       coredll_evtloop.o \
        coredll_font.o \
        coredll_fontenum.o \
        coredll_fontutil.o \
        coredll_dib.o \
        coredll_display.o \
        coredll_enhmeta.o \
-       coredll_evtloop.o \
        coredll_font.o \
        coredll_fontenum.o \
        coredll_fontutil.o \
        coredll_utilsx11.o \
        coredll_displayx11.o \
        coredll_gsocketiohandler.o \
-       coredll_selectdispatcher.o \
        coredll_icon.o \
        coredll_timer.o \
        coredll_app.o \
 @COND_PLATFORM_UNIX_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_5 \
 @COND_PLATFORM_UNIX_1@ = corelib_utilsunx.o
 @COND_PLATFORM_WIN32_1@__BASE_AND_GUI_PLATFORM_SRC_OBJECTS_5 \
-@COND_PLATFORM_WIN32_1@        = corelib_main.o corelib_mslu.o corelib_volume.o
+@COND_PLATFORM_WIN32_1@        = corelib_evtloopmsw.o corelib_main.o corelib_mslu.o \
+@COND_PLATFORM_WIN32_1@        corelib_volume.o
 @COND_TOOLKIT_MAC@__BASE_AND_GUI_TOOLKIT_SRC_OBJECTS_5 = \
 @COND_TOOLKIT_MAC@     corelib_utils.o corelib_uma.o
 COND_USE_GUI_1_WXUNIV_0___CORE_SRC_OBJECTS_3 =  \
        corelib_dpycmn.o \
        corelib_dseldlg.o \
        corelib_effects.o \
-       corelib_evtloopcmn.o \
        corelib_fddlgcmn.o \
        corelib_filepickercmn.o \
        corelib_fontpickercmn.o \
        corelib_dpycmn.o \
        corelib_dseldlg.o \
        corelib_effects.o \
-       corelib_evtloopcmn.o \
        corelib_fddlgcmn.o \
        corelib_filepickercmn.o \
        corelib_fontpickercmn.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_6 =  \
        corelib_fontmgrcmn.o \
        corelib_gsocketiohandler.o \
-       corelib_selectdispatcher.o \
        corelib_caret.o \
        corelib_colour.o \
        corelib_icon.o \
        corelib_dib.o \
        corelib_display.o \
        corelib_enhmeta.o \
-       corelib_evtloop.o \
        corelib_font.o \
        corelib_fontenum.o \
        corelib_fontutil.o \
        corelib_dib.o \
        corelib_display.o \
        corelib_enhmeta.o \
-       corelib_evtloop.o \
        corelib_font.o \
        corelib_fontenum.o \
        corelib_fontutil.o \
        corelib_utilsx11.o \
        corelib_displayx11.o \
        corelib_gsocketiohandler.o \
-       corelib_selectdispatcher.o \
        corelib_icon.o \
        corelib_timer.o \
        corelib_app.o \
 COND_TOOLKIT_DFB___LOWLEVEL_SRC_OBJECTS_7 =  \
        corelib_fontmgrcmn.o \
        corelib_gsocketiohandler.o \
-       corelib_selectdispatcher.o \
        corelib_caret.o \
        corelib_colour.o \
        corelib_icon.o \
        corelib_dib.o \
        corelib_display.o \
        corelib_enhmeta.o \
-       corelib_evtloop.o \
        corelib_font.o \
        corelib_fontenum.o \
        corelib_fontutil.o \
        corelib_dib.o \
        corelib_display.o \
        corelib_enhmeta.o \
-       corelib_evtloop.o \
        corelib_font.o \
        corelib_fontenum.o \
        corelib_fontutil.o \
        corelib_utilsx11.o \
        corelib_displayx11.o \
        corelib_gsocketiohandler.o \
-       corelib_selectdispatcher.o \
        corelib_icon.o \
        corelib_timer.o \
        corelib_app.o \
 monodll_encconv.o: $(srcdir)/src/common/encconv.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/encconv.cpp
 
+monodll_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(MONODLL_ODEP)
+       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
+
 monodll_extended.o: $(srcdir)/src/common/extended.c $(MONODLL_ODEP)
        $(CCC) -c -o $@ $(MONODLL_CFLAGS) $(srcdir)/src/common/extended.c
 
 monodll_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+monodll_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(MONODLL_ODEP)
+       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 monodll_mslu.o: $(srcdir)/src/msw/mslu.cpp $(MONODLL_ODEP)
        $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/mslu.cpp
 
 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_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
 @COND_PLATFORM_UNIX_1@monodll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONODLL_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
 
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_dlunix.o: $(srcdir)/src/unix/dlunix.cpp $(MONODLL_ODEP)
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/dlunix.cpp
 
+@COND_PLATFORM_UNIX_1@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monodll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONODLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
 @COND_PLATFORM_UNIX_1@monodll_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONODLL_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monodll_evtloop.o: $(srcdir)/src/gtk1/evtloop.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/gtk1/evtloop.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@monodll_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@monodll_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@monodll_evtloop.o: $(srcdir)/src/x11/evtloop.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/x11/evtloop.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_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@monodll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONODLL_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@   $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.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
 
 @COND_USE_GUI_1@monodll_effects.o: $(srcdir)/src/common/effects.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/effects.cpp
 
-@COND_USE_GUI_1@monodll_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(MONODLL_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
-
 @COND_USE_GUI_1@monodll_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(MONODLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
 monolib_encconv.o: $(srcdir)/src/common/encconv.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/encconv.cpp
 
+monolib_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(MONOLIB_ODEP)
+       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
+
 monolib_extended.o: $(srcdir)/src/common/extended.c $(MONOLIB_ODEP)
        $(CCC) -c -o $@ $(MONOLIB_CFLAGS) $(srcdir)/src/common/extended.c
 
 monolib_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+monolib_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(MONOLIB_ODEP)
+       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 monolib_mslu.o: $(srcdir)/src/msw/mslu.cpp $(MONOLIB_ODEP)
        $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/mslu.cpp
 
 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_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
 @COND_PLATFORM_UNIX_1@monolib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(MONOLIB_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
 
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_dlunix.o: $(srcdir)/src/unix/dlunix.cpp $(MONOLIB_ODEP)
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/dlunix.cpp
 
+@COND_PLATFORM_UNIX_1@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@monolib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(MONOLIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
 @COND_PLATFORM_UNIX_1@monolib_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(MONOLIB_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@monolib_evtloop.o: $(srcdir)/src/gtk1/evtloop.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/gtk1/evtloop.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@monolib_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@monolib_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@monolib_evtloop.o: $(srcdir)/src/x11/evtloop.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/x11/evtloop.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_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@monolib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(MONOLIB_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@   $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.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
 
 @COND_USE_GUI_1@monolib_effects.o: $(srcdir)/src/common/effects.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/effects.cpp
 
-@COND_USE_GUI_1@monolib_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(MONOLIB_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
-
 @COND_USE_GUI_1@monolib_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(MONOLIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
 basedll_encconv.o: $(srcdir)/src/common/encconv.cpp $(BASEDLL_ODEP)
        $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/encconv.cpp
 
+basedll_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(BASEDLL_ODEP)
+       $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
+
 basedll_extended.o: $(srcdir)/src/common/extended.c $(BASEDLL_ODEP)
        $(CCC) -c -o $@ $(BASEDLL_CFLAGS) $(srcdir)/src/common/extended.c
 
 basedll_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(BASEDLL_ODEP)
        $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+basedll_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(BASEDLL_ODEP)
+       $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 basedll_main.o: $(srcdir)/src/msw/main.cpp $(BASEDLL_ODEP)
        $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/msw/main.cpp
 
 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_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
 @COND_PLATFORM_UNIX_1@basedll_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASEDLL_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
 
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_dlunix.o: $(srcdir)/src/unix/dlunix.cpp $(BASEDLL_ODEP)
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/dlunix.cpp
 
+@COND_PLATFORM_UNIX_1@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@basedll_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASEDLL_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
 @COND_PLATFORM_UNIX_1@basedll_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASEDLL_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
 
 baselib_encconv.o: $(srcdir)/src/common/encconv.cpp $(BASELIB_ODEP)
        $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/encconv.cpp
 
+baselib_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(BASELIB_ODEP)
+       $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
+
 baselib_extended.o: $(srcdir)/src/common/extended.c $(BASELIB_ODEP)
        $(CCC) -c -o $@ $(BASELIB_CFLAGS) $(srcdir)/src/common/extended.c
 
 baselib_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(BASELIB_ODEP)
        $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+baselib_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(BASELIB_ODEP)
+       $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 baselib_main.o: $(srcdir)/src/msw/main.cpp $(BASELIB_ODEP)
        $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/msw/main.cpp
 
 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_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_fdiodispatcher.o: $(srcdir)/src/common/fdiodispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fdiodispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_appunix.o: $(srcdir)/src/unix/appunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/appunix.cpp
+
 @COND_PLATFORM_UNIX_1@baselib_baseunix.o: $(srcdir)/src/unix/baseunix.cpp $(BASELIB_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/baseunix.cpp
 
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_dlunix.o: $(srcdir)/src/unix/dlunix.cpp $(BASELIB_ODEP)
 @COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/dlunix.cpp
 
+@COND_PLATFORM_UNIX_1@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_epolldispatcher.o: $(srcdir)/src/unix/epolldispatcher.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/epolldispatcher.cpp
+
+@COND_PLATFORM_UNIX_1@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MAC@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_COCOA@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_GTK@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_X11@   $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@baselib_evtloopunix.o: $(srcdir)/src/unix/evtloopunix.cpp $(BASELIB_ODEP)
+@COND_PLATFORM_MACOSX_1_TOOLKIT_@      $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/evtloopunix.cpp
+
 @COND_PLATFORM_UNIX_1@baselib_mimetype.o: $(srcdir)/src/unix/mimetype.cpp $(BASELIB_ODEP)
 @COND_PLATFORM_UNIX_1@ $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/unix/mimetype.cpp
 
 coredll_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(COREDLL_ODEP)
        $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+coredll_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(COREDLL_ODEP)
+       $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 coredll_mslu.o: $(srcdir)/src/msw/mslu.cpp $(COREDLL_ODEP)
        $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/mslu.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@coredll_evtloop.o: $(srcdir)/src/gtk1/evtloop.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/gtk1/evtloop.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@coredll_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@   $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@coredll_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@coredll_evtloop.o: $(srcdir)/src/x11/evtloop.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/x11/evtloop.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_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@coredll_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(COREDLL_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@   $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.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
 
 @COND_USE_GUI_1@coredll_effects.o: $(srcdir)/src/common/effects.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/effects.cpp
 
-@COND_USE_GUI_1@coredll_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(COREDLL_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
-
 @COND_USE_GUI_1@coredll_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(COREDLL_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
 corelib_utilscmn.o: $(srcdir)/src/common/utilscmn.cpp $(CORELIB_ODEP)
        $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/utilscmn.cpp
 
+corelib_evtloopmsw.o: $(srcdir)/src/msw/evtloopmsw.cpp $(CORELIB_ODEP)
+       $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/evtloopmsw.cpp
+
 corelib_mslu.o: $(srcdir)/src/msw/mslu.cpp $(CORELIB_ODEP)
        $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/mslu.cpp
 
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@corelib_evtloop.o: $(srcdir)/src/gtk1/evtloop.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_GTK_TOOLKIT_VERSION__USE_GUI_1@  $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/gtk1/evtloop.cpp
 
-@COND_TOOLKIT_MSW_USE_GUI_1@corelib_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_MSW_USE_GUI_1@   $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
-@COND_TOOLKIT_WINCE_USE_GUI_1@corelib_evtloop.o: $(srcdir)/src/msw/evtloop.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_WINCE_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/msw/evtloop.cpp
-
 @COND_TOOLKIT_X11_USE_GUI_1@corelib_evtloop.o: $(srcdir)/src/x11/evtloop.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/x11/evtloop.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_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_X11_USE_GUI_1@   $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.cpp
-
-@COND_TOOLKIT_DFB_USE_GUI_1@corelib_selectdispatcher.o: $(srcdir)/src/common/selectdispatcher.cpp $(CORELIB_ODEP)
-@COND_TOOLKIT_DFB_USE_GUI_1@   $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/selectdispatcher.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
 
 @COND_USE_GUI_1@corelib_effects.o: $(srcdir)/src/common/effects.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/effects.cpp
 
-@COND_USE_GUI_1@corelib_evtloopcmn.o: $(srcdir)/src/common/evtloopcmn.cpp $(CORELIB_ODEP)
-@COND_USE_GUI_1@       $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/evtloopcmn.cpp
-
 @COND_USE_GUI_1@corelib_fddlgcmn.o: $(srcdir)/src/common/fddlgcmn.cpp $(CORELIB_ODEP)
 @COND_USE_GUI_1@       $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/fddlgcmn.cpp
 
 
 <!--                               UNIX                                     -->
 <!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
 <set var="BASE_UNIX_SRC" hints="files">
+    src/common/fdiodispatcher.cpp
+    src/common/selectdispatcher.cpp
+    src/unix/appunix.cpp
     src/unix/baseunix.cpp
     src/unix/dir.cpp
     src/unix/dlunix.cpp
+    src/unix/epolldispatcher.cpp
+    src/unix/evtloopunix.cpp
     src/unix/mimetype.cpp
     src/unix/snglinst.cpp
     src/unix/stackwalk.cpp
     src/unix/utilsunx.cpp
 </set>
 <set var="BASE_UNIX_HDR" hints="files">
+    wx/unix/app.h
     wx/unix/apptbase.h
     wx/unix/apptrait.h
     wx/unix/execute.h
+    wx/unix/evtloop.h
     wx/unix/mimetype.h
     wx/unix/pipe.h
     wx/unix/private.h
     src/msw/utilsexc.cpp
 </set>
 <set var="BASE_AND_GUI_WIN32_SRC" hints="files">
+    src/msw/evtloopmsw.cpp
     src/msw/main.cpp
     src/msw/mslu.cpp
     src/msw/volume.cpp
 <!-- Base files used only by OS X builds (not CarbonLib or Classic)  -->
 <set var="BASE_MACOSX_WXMAC_SRC" hints="files">
     $(BASE_MAC_SRC)
+    src/common/fdiodispatcher.cpp
+    src/common/selectdispatcher.cpp
+    src/unix/appunix.cpp
     src/unix/baseunix.cpp
+    src/unix/evtloopunix.cpp
     src/unix/dlunix.cpp
     src/unix/snglinst.cpp
     src/unix/stdpaths.cpp
 </set>
 <set var="BASE_MACOSX_WXMAC_HDR" hints="files">
     $(BASE_MAC_HDR)
+    wx/unix/app.h
     wx/unix/apptbase.h
     wx/unix/apptrait.h
+    wx/unix/evtloop.h
     wx/unix/stdpaths.h
 </set>
 
     src/common/dynlib.cpp
     src/common/dynload.cpp
     src/common/encconv.cpp
+    src/common/evtloopcmn.cpp
     src/common/extended.c
     src/common/ffile.cpp
     src/common/file.cpp
     src/common/dpycmn.cpp
     src/common/dseldlg.cpp
     src/common/effects.cpp
-    src/common/evtloopcmn.cpp
     src/common/fddlgcmn.cpp
     src/common/filepickercmn.cpp
     src/common/fontpickercmn.cpp
 <set var="X11_LOWLEVEL_SRC" hints="files">
     $(XWIN_LOWLEVEL_SRC)
     src/common/gsocketiohandler.cpp
-    src/common/selectdispatcher.cpp
     src/generic/icon.cpp
     src/generic/timer.cpp
     src/x11/app.cpp
     src/msw/dib.cpp
     src/msw/display.cpp
     src/msw/enhmeta.cpp
-    src/msw/evtloop.cpp
     src/msw/font.cpp
     src/msw/fontenum.cpp
     src/msw/fontutil.cpp
 <set var="DFB_LOWLEVEL_SRC" hints="files">
     src/common/fontmgrcmn.cpp
     src/common/gsocketiohandler.cpp
-    src/common/selectdispatcher.cpp
     src/generic/caret.cpp
     src/generic/colour.cpp
     src/generic/icon.cpp
 
        $(OBJS)\monodll_dynlib.obj \
        $(OBJS)\monodll_dynload.obj \
        $(OBJS)\monodll_encconv.obj \
+       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_extended.obj \
        $(OBJS)\monodll_ffile.obj \
        $(OBJS)\monodll_file.obj \
        $(OBJS)\monodll_fs_mem.obj \
        $(OBJS)\monodll_msgout.obj \
        $(OBJS)\monodll_utilscmn.obj \
+       $(OBJS)\monodll_evtloopmsw.obj \
        $(OBJS)\monodll_main.obj \
        $(OBJS)\monodll_mslu.obj \
        $(OBJS)\monodll_volume.obj \
        $(OBJS)\monolib_dynlib.obj \
        $(OBJS)\monolib_dynload.obj \
        $(OBJS)\monolib_encconv.obj \
+       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_extended.obj \
        $(OBJS)\monolib_ffile.obj \
        $(OBJS)\monolib_file.obj \
        $(OBJS)\monolib_fs_mem.obj \
        $(OBJS)\monolib_msgout.obj \
        $(OBJS)\monolib_utilscmn.obj \
+       $(OBJS)\monolib_evtloopmsw.obj \
        $(OBJS)\monolib_main.obj \
        $(OBJS)\monolib_mslu.obj \
        $(OBJS)\monolib_volume.obj \
        $(OBJS)\basedll_dynlib.obj \
        $(OBJS)\basedll_dynload.obj \
        $(OBJS)\basedll_encconv.obj \
+       $(OBJS)\basedll_evtloopcmn.obj \
        $(OBJS)\basedll_extended.obj \
        $(OBJS)\basedll_ffile.obj \
        $(OBJS)\basedll_file.obj \
        $(OBJS)\basedll_fs_mem.obj \
        $(OBJS)\basedll_msgout.obj \
        $(OBJS)\basedll_utilscmn.obj \
+       $(OBJS)\basedll_evtloopmsw.obj \
        $(OBJS)\basedll_main.obj \
        $(OBJS)\basedll_mslu.obj \
        $(OBJS)\basedll_volume.obj
        $(OBJS)\baselib_dynlib.obj \
        $(OBJS)\baselib_dynload.obj \
        $(OBJS)\baselib_encconv.obj \
+       $(OBJS)\baselib_evtloopcmn.obj \
        $(OBJS)\baselib_extended.obj \
        $(OBJS)\baselib_ffile.obj \
        $(OBJS)\baselib_file.obj \
        $(OBJS)\baselib_fs_mem.obj \
        $(OBJS)\baselib_msgout.obj \
        $(OBJS)\baselib_utilscmn.obj \
+       $(OBJS)\baselib_evtloopmsw.obj \
        $(OBJS)\baselib_main.obj \
        $(OBJS)\baselib_mslu.obj \
        $(OBJS)\baselib_volume.obj
        $(OBJS)\coredll_fs_mem.obj \
        $(OBJS)\coredll_msgout.obj \
        $(OBJS)\coredll_utilscmn.obj \
+       $(OBJS)\coredll_evtloopmsw.obj \
        $(OBJS)\coredll_main.obj \
        $(OBJS)\coredll_mslu.obj \
        $(OBJS)\coredll_volume.obj \
        $(OBJS)\corelib_fs_mem.obj \
        $(OBJS)\corelib_msgout.obj \
        $(OBJS)\corelib_utilscmn.obj \
+       $(OBJS)\corelib_evtloopmsw.obj \
        $(OBJS)\corelib_main.obj \
        $(OBJS)\corelib_mslu.obj \
        $(OBJS)\corelib_volume.obj \
        $(OBJS)\monodll_dib.obj \
        $(OBJS)\monodll_display.obj \
        $(OBJS)\monodll_enhmeta.obj \
-       $(OBJS)\monodll_evtloop.obj \
        $(OBJS)\monodll_font.obj \
        $(OBJS)\monodll_fontenum.obj \
        $(OBJS)\monodll_fontutil.obj \
        $(OBJS)\monodll_dpycmn.obj \
        $(OBJS)\monodll_dseldlg.obj \
        $(OBJS)\monodll_effects.obj \
-       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_fddlgcmn.obj \
        $(OBJS)\monodll_filepickercmn.obj \
        $(OBJS)\monodll_fontpickercmn.obj \
        $(OBJS)\monodll_dib.obj \
        $(OBJS)\monodll_display.obj \
        $(OBJS)\monodll_enhmeta.obj \
-       $(OBJS)\monodll_evtloop.obj \
        $(OBJS)\monodll_font.obj \
        $(OBJS)\monodll_fontenum.obj \
        $(OBJS)\monodll_fontutil.obj \
        $(OBJS)\monodll_dpycmn.obj \
        $(OBJS)\monodll_dseldlg.obj \
        $(OBJS)\monodll_effects.obj \
-       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_fddlgcmn.obj \
        $(OBJS)\monodll_filepickercmn.obj \
        $(OBJS)\monodll_fontpickercmn.obj \
        $(OBJS)\monolib_dib.obj \
        $(OBJS)\monolib_display.obj \
        $(OBJS)\monolib_enhmeta.obj \
-       $(OBJS)\monolib_evtloop.obj \
        $(OBJS)\monolib_font.obj \
        $(OBJS)\monolib_fontenum.obj \
        $(OBJS)\monolib_fontutil.obj \
        $(OBJS)\monolib_dpycmn.obj \
        $(OBJS)\monolib_dseldlg.obj \
        $(OBJS)\monolib_effects.obj \
-       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_fddlgcmn.obj \
        $(OBJS)\monolib_filepickercmn.obj \
        $(OBJS)\monolib_fontpickercmn.obj \
        $(OBJS)\monolib_dib.obj \
        $(OBJS)\monolib_display.obj \
        $(OBJS)\monolib_enhmeta.obj \
-       $(OBJS)\monolib_evtloop.obj \
        $(OBJS)\monolib_font.obj \
        $(OBJS)\monolib_fontenum.obj \
        $(OBJS)\monolib_fontutil.obj \
        $(OBJS)\monolib_dpycmn.obj \
        $(OBJS)\monolib_dseldlg.obj \
        $(OBJS)\monolib_effects.obj \
-       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_fddlgcmn.obj \
        $(OBJS)\monolib_filepickercmn.obj \
        $(OBJS)\monolib_fontpickercmn.obj \
        $(OBJS)\coredll_dib.obj \
        $(OBJS)\coredll_display.obj \
        $(OBJS)\coredll_enhmeta.obj \
-       $(OBJS)\coredll_evtloop.obj \
        $(OBJS)\coredll_font.obj \
        $(OBJS)\coredll_fontenum.obj \
        $(OBJS)\coredll_fontutil.obj \
        $(OBJS)\coredll_dpycmn.obj \
        $(OBJS)\coredll_dseldlg.obj \
        $(OBJS)\coredll_effects.obj \
-       $(OBJS)\coredll_evtloopcmn.obj \
        $(OBJS)\coredll_fddlgcmn.obj \
        $(OBJS)\coredll_filepickercmn.obj \
        $(OBJS)\coredll_fontpickercmn.obj \
        $(OBJS)\coredll_dib.obj \
        $(OBJS)\coredll_display.obj \
        $(OBJS)\coredll_enhmeta.obj \
-       $(OBJS)\coredll_evtloop.obj \
        $(OBJS)\coredll_font.obj \
        $(OBJS)\coredll_fontenum.obj \
        $(OBJS)\coredll_fontutil.obj \
        $(OBJS)\coredll_dpycmn.obj \
        $(OBJS)\coredll_dseldlg.obj \
        $(OBJS)\coredll_effects.obj \
-       $(OBJS)\coredll_evtloopcmn.obj \
        $(OBJS)\coredll_fddlgcmn.obj \
        $(OBJS)\coredll_filepickercmn.obj \
        $(OBJS)\coredll_fontpickercmn.obj \
        $(OBJS)\corelib_dib.obj \
        $(OBJS)\corelib_display.obj \
        $(OBJS)\corelib_enhmeta.obj \
-       $(OBJS)\corelib_evtloop.obj \
        $(OBJS)\corelib_font.obj \
        $(OBJS)\corelib_fontenum.obj \
        $(OBJS)\corelib_fontutil.obj \
        $(OBJS)\corelib_dpycmn.obj \
        $(OBJS)\corelib_dseldlg.obj \
        $(OBJS)\corelib_effects.obj \
-       $(OBJS)\corelib_evtloopcmn.obj \
        $(OBJS)\corelib_fddlgcmn.obj \
        $(OBJS)\corelib_filepickercmn.obj \
        $(OBJS)\corelib_fontpickercmn.obj \
        $(OBJS)\corelib_dib.obj \
        $(OBJS)\corelib_display.obj \
        $(OBJS)\corelib_enhmeta.obj \
-       $(OBJS)\corelib_evtloop.obj \
        $(OBJS)\corelib_font.obj \
        $(OBJS)\corelib_fontenum.obj \
        $(OBJS)\corelib_fontutil.obj \
        $(OBJS)\corelib_dpycmn.obj \
        $(OBJS)\corelib_dseldlg.obj \
        $(OBJS)\corelib_effects.obj \
-       $(OBJS)\corelib_evtloopcmn.obj \
        $(OBJS)\corelib_fddlgcmn.obj \
        $(OBJS)\corelib_filepickercmn.obj \
        $(OBJS)\corelib_fontpickercmn.obj \
 $(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_extended.obj: ..\..\src\common\extended.c
        $(CC) -q -c -P- -o$@ $(MONODLL_CFLAGS) $**
 
 $(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
 $(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_extended.obj: ..\..\src\common\extended.c
        $(CC) -q -c -P- -o$@ $(MONOLIB_CFLAGS) $**
 
 $(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
 $(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
 
+$(OBJS)\basedll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
+
 $(OBJS)\basedll_extended.obj: ..\..\src\common\extended.c
        $(CC) -q -c -P- -o$@ $(BASEDLL_CFLAGS) $**
 
 $(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
 
+$(OBJS)\basedll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
+
 $(OBJS)\basedll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
 
 $(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
 
+$(OBJS)\baselib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
+
 $(OBJS)\baselib_extended.obj: ..\..\src\common\extended.c
        $(CC) -q -c -P- -o$@ $(BASELIB_CFLAGS) $**
 
 $(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
 
+$(OBJS)\baselib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
+
 $(OBJS)\baselib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
 
 $(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 
+$(OBJS)\coredll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
+
 $(OBJS)\coredll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
 $(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 
+$(OBJS)\corelib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
+
 $(OBJS)\corelib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
 
        $(OBJS)\monodll_dynlib.o \
        $(OBJS)\monodll_dynload.o \
        $(OBJS)\monodll_encconv.o \
+       $(OBJS)\monodll_evtloopcmn.o \
        $(OBJS)\monodll_extended.o \
        $(OBJS)\monodll_ffile.o \
        $(OBJS)\monodll_file.o \
        $(OBJS)\monodll_fs_mem.o \
        $(OBJS)\monodll_msgout.o \
        $(OBJS)\monodll_utilscmn.o \
+       $(OBJS)\monodll_evtloopmsw.o \
        $(OBJS)\monodll_main.o \
        $(OBJS)\monodll_mslu.o \
        $(OBJS)\monodll_volume.o \
        $(OBJS)\monolib_dynlib.o \
        $(OBJS)\monolib_dynload.o \
        $(OBJS)\monolib_encconv.o \
+       $(OBJS)\monolib_evtloopcmn.o \
        $(OBJS)\monolib_extended.o \
        $(OBJS)\monolib_ffile.o \
        $(OBJS)\monolib_file.o \
        $(OBJS)\monolib_fs_mem.o \
        $(OBJS)\monolib_msgout.o \
        $(OBJS)\monolib_utilscmn.o \
+       $(OBJS)\monolib_evtloopmsw.o \
        $(OBJS)\monolib_main.o \
        $(OBJS)\monolib_mslu.o \
        $(OBJS)\monolib_volume.o \
        $(OBJS)\basedll_dynlib.o \
        $(OBJS)\basedll_dynload.o \
        $(OBJS)\basedll_encconv.o \
+       $(OBJS)\basedll_evtloopcmn.o \
        $(OBJS)\basedll_extended.o \
        $(OBJS)\basedll_ffile.o \
        $(OBJS)\basedll_file.o \
        $(OBJS)\basedll_fs_mem.o \
        $(OBJS)\basedll_msgout.o \
        $(OBJS)\basedll_utilscmn.o \
+       $(OBJS)\basedll_evtloopmsw.o \
        $(OBJS)\basedll_main.o \
        $(OBJS)\basedll_mslu.o \
        $(OBJS)\basedll_volume.o
        $(OBJS)\baselib_dynlib.o \
        $(OBJS)\baselib_dynload.o \
        $(OBJS)\baselib_encconv.o \
+       $(OBJS)\baselib_evtloopcmn.o \
        $(OBJS)\baselib_extended.o \
        $(OBJS)\baselib_ffile.o \
        $(OBJS)\baselib_file.o \
        $(OBJS)\baselib_fs_mem.o \
        $(OBJS)\baselib_msgout.o \
        $(OBJS)\baselib_utilscmn.o \
+       $(OBJS)\baselib_evtloopmsw.o \
        $(OBJS)\baselib_main.o \
        $(OBJS)\baselib_mslu.o \
        $(OBJS)\baselib_volume.o
        $(OBJS)\coredll_fs_mem.o \
        $(OBJS)\coredll_msgout.o \
        $(OBJS)\coredll_utilscmn.o \
+       $(OBJS)\coredll_evtloopmsw.o \
        $(OBJS)\coredll_main.o \
        $(OBJS)\coredll_mslu.o \
        $(OBJS)\coredll_volume.o \
        $(OBJS)\corelib_fs_mem.o \
        $(OBJS)\corelib_msgout.o \
        $(OBJS)\corelib_utilscmn.o \
+       $(OBJS)\corelib_evtloopmsw.o \
        $(OBJS)\corelib_main.o \
        $(OBJS)\corelib_mslu.o \
        $(OBJS)\corelib_volume.o \
        $(OBJS)\monodll_dib.o \
        $(OBJS)\monodll_display.o \
        $(OBJS)\monodll_enhmeta.o \
-       $(OBJS)\monodll_evtloop.o \
        $(OBJS)\monodll_font.o \
        $(OBJS)\monodll_fontenum.o \
        $(OBJS)\monodll_fontutil.o \
        $(OBJS)\monodll_dpycmn.o \
        $(OBJS)\monodll_dseldlg.o \
        $(OBJS)\monodll_effects.o \
-       $(OBJS)\monodll_evtloopcmn.o \
        $(OBJS)\monodll_fddlgcmn.o \
        $(OBJS)\monodll_filepickercmn.o \
        $(OBJS)\monodll_fontpickercmn.o \
        $(OBJS)\monodll_dib.o \
        $(OBJS)\monodll_display.o \
        $(OBJS)\monodll_enhmeta.o \
-       $(OBJS)\monodll_evtloop.o \
        $(OBJS)\monodll_font.o \
        $(OBJS)\monodll_fontenum.o \
        $(OBJS)\monodll_fontutil.o \
        $(OBJS)\monodll_dpycmn.o \
        $(OBJS)\monodll_dseldlg.o \
        $(OBJS)\monodll_effects.o \
-       $(OBJS)\monodll_evtloopcmn.o \
        $(OBJS)\monodll_fddlgcmn.o \
        $(OBJS)\monodll_filepickercmn.o \
        $(OBJS)\monodll_fontpickercmn.o \
        $(OBJS)\monolib_dib.o \
        $(OBJS)\monolib_display.o \
        $(OBJS)\monolib_enhmeta.o \
-       $(OBJS)\monolib_evtloop.o \
        $(OBJS)\monolib_font.o \
        $(OBJS)\monolib_fontenum.o \
        $(OBJS)\monolib_fontutil.o \
        $(OBJS)\monolib_dpycmn.o \
        $(OBJS)\monolib_dseldlg.o \
        $(OBJS)\monolib_effects.o \
-       $(OBJS)\monolib_evtloopcmn.o \
        $(OBJS)\monolib_fddlgcmn.o \
        $(OBJS)\monolib_filepickercmn.o \
        $(OBJS)\monolib_fontpickercmn.o \
        $(OBJS)\monolib_dib.o \
        $(OBJS)\monolib_display.o \
        $(OBJS)\monolib_enhmeta.o \
-       $(OBJS)\monolib_evtloop.o \
        $(OBJS)\monolib_font.o \
        $(OBJS)\monolib_fontenum.o \
        $(OBJS)\monolib_fontutil.o \
        $(OBJS)\monolib_dpycmn.o \
        $(OBJS)\monolib_dseldlg.o \
        $(OBJS)\monolib_effects.o \
-       $(OBJS)\monolib_evtloopcmn.o \
        $(OBJS)\monolib_fddlgcmn.o \
        $(OBJS)\monolib_filepickercmn.o \
        $(OBJS)\monolib_fontpickercmn.o \
        $(OBJS)\coredll_dib.o \
        $(OBJS)\coredll_display.o \
        $(OBJS)\coredll_enhmeta.o \
-       $(OBJS)\coredll_evtloop.o \
        $(OBJS)\coredll_font.o \
        $(OBJS)\coredll_fontenum.o \
        $(OBJS)\coredll_fontutil.o \
        $(OBJS)\coredll_dpycmn.o \
        $(OBJS)\coredll_dseldlg.o \
        $(OBJS)\coredll_effects.o \
-       $(OBJS)\coredll_evtloopcmn.o \
        $(OBJS)\coredll_fddlgcmn.o \
        $(OBJS)\coredll_filepickercmn.o \
        $(OBJS)\coredll_fontpickercmn.o \
        $(OBJS)\coredll_dib.o \
        $(OBJS)\coredll_display.o \
        $(OBJS)\coredll_enhmeta.o \
-       $(OBJS)\coredll_evtloop.o \
        $(OBJS)\coredll_font.o \
        $(OBJS)\coredll_fontenum.o \
        $(OBJS)\coredll_fontutil.o \
        $(OBJS)\coredll_dpycmn.o \
        $(OBJS)\coredll_dseldlg.o \
        $(OBJS)\coredll_effects.o \
-       $(OBJS)\coredll_evtloopcmn.o \
        $(OBJS)\coredll_fddlgcmn.o \
        $(OBJS)\coredll_filepickercmn.o \
        $(OBJS)\coredll_fontpickercmn.o \
        $(OBJS)\corelib_dib.o \
        $(OBJS)\corelib_display.o \
        $(OBJS)\corelib_enhmeta.o \
-       $(OBJS)\corelib_evtloop.o \
        $(OBJS)\corelib_font.o \
        $(OBJS)\corelib_fontenum.o \
        $(OBJS)\corelib_fontutil.o \
        $(OBJS)\corelib_dpycmn.o \
        $(OBJS)\corelib_dseldlg.o \
        $(OBJS)\corelib_effects.o \
-       $(OBJS)\corelib_evtloopcmn.o \
        $(OBJS)\corelib_fddlgcmn.o \
        $(OBJS)\corelib_filepickercmn.o \
        $(OBJS)\corelib_fontpickercmn.o \
        $(OBJS)\corelib_dib.o \
        $(OBJS)\corelib_display.o \
        $(OBJS)\corelib_enhmeta.o \
-       $(OBJS)\corelib_evtloop.o \
        $(OBJS)\corelib_font.o \
        $(OBJS)\corelib_fontenum.o \
        $(OBJS)\corelib_fontutil.o \
        $(OBJS)\corelib_dpycmn.o \
        $(OBJS)\corelib_dseldlg.o \
        $(OBJS)\corelib_effects.o \
-       $(OBJS)\corelib_evtloopcmn.o \
        $(OBJS)\corelib_fddlgcmn.o \
        $(OBJS)\corelib_filepickercmn.o \
        $(OBJS)\corelib_fontpickercmn.o \
 $(OBJS)\monodll_encconv.o: ../../src/common/encconv.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
+       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_extended.o: ../../src/common/extended.c
        $(CC) -c -o $@ $(MONODLL_CFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\monodll_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monodll_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monodll_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monodll_evtloop.o: ../../src/msw/evtloop.cpp
-       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_font.o: ../../src/msw/font.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monodll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
-       $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monodll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
        $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
 $(OBJS)\monolib_encconv.o: ../../src/common/encconv.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
+       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_extended.o: ../../src/common/extended.c
        $(CC) -c -o $@ $(MONOLIB_CFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\monolib_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\monolib_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\monolib_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monolib_evtloop.o: ../../src/msw/evtloop.cpp
-       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_font.o: ../../src/msw/font.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\monolib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
-       $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\monolib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
        $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
 $(OBJS)\basedll_encconv.o: ../../src/common/encconv.cpp
        $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\basedll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
+       $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\basedll_extended.o: ../../src/common/extended.c
        $(CC) -c -o $@ $(BASEDLL_CFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\basedll_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\basedll_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\basedll_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\baselib_encconv.o: ../../src/common/encconv.cpp
        $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\baselib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
+       $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\baselib_extended.o: ../../src/common/extended.c
        $(CC) -c -o $@ $(BASELIB_CFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\baselib_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\baselib_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\baselib_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\coredll_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\coredll_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\coredll_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\coredll_evtloop.o: ../../src/msw/evtloop.cpp
-       $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_font.o: ../../src/msw/font.cpp
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\coredll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
-       $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\coredll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
        $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
 $(OBJS)\corelib_utilscmn.o: ../../src/common/utilscmn.cpp
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\corelib_evtloopmsw.o: ../../src/msw/evtloopmsw.cpp
+       $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\corelib_main.o: ../../src/msw/main.cpp
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\corelib_evtloop.o: ../../src/msw/evtloop.cpp
-       $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_font.o: ../../src/msw/font.cpp
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 endif
 
-ifeq ($(USE_GUI),1)
-$(OBJS)\corelib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
-       $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
-endif
-
 ifeq ($(USE_GUI),1)
 $(OBJS)\corelib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
        $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
 
        $(OBJS)\monodll_dynlib.obj \
        $(OBJS)\monodll_dynload.obj \
        $(OBJS)\monodll_encconv.obj \
+       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_extended.obj \
        $(OBJS)\monodll_ffile.obj \
        $(OBJS)\monodll_file.obj \
        $(OBJS)\monodll_fs_mem.obj \
        $(OBJS)\monodll_msgout.obj \
        $(OBJS)\monodll_utilscmn.obj \
+       $(OBJS)\monodll_evtloopmsw.obj \
        $(OBJS)\monodll_main.obj \
        $(OBJS)\monodll_mslu.obj \
        $(OBJS)\monodll_volume.obj \
        $(OBJS)\monolib_dynlib.obj \
        $(OBJS)\monolib_dynload.obj \
        $(OBJS)\monolib_encconv.obj \
+       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_extended.obj \
        $(OBJS)\monolib_ffile.obj \
        $(OBJS)\monolib_file.obj \
        $(OBJS)\monolib_fs_mem.obj \
        $(OBJS)\monolib_msgout.obj \
        $(OBJS)\monolib_utilscmn.obj \
+       $(OBJS)\monolib_evtloopmsw.obj \
        $(OBJS)\monolib_main.obj \
        $(OBJS)\monolib_mslu.obj \
        $(OBJS)\monolib_volume.obj \
        $(OBJS)\basedll_dynlib.obj \
        $(OBJS)\basedll_dynload.obj \
        $(OBJS)\basedll_encconv.obj \
+       $(OBJS)\basedll_evtloopcmn.obj \
        $(OBJS)\basedll_extended.obj \
        $(OBJS)\basedll_ffile.obj \
        $(OBJS)\basedll_file.obj \
        $(OBJS)\basedll_fs_mem.obj \
        $(OBJS)\basedll_msgout.obj \
        $(OBJS)\basedll_utilscmn.obj \
+       $(OBJS)\basedll_evtloopmsw.obj \
        $(OBJS)\basedll_main.obj \
        $(OBJS)\basedll_mslu.obj \
        $(OBJS)\basedll_volume.obj
        $(OBJS)\baselib_dynlib.obj \
        $(OBJS)\baselib_dynload.obj \
        $(OBJS)\baselib_encconv.obj \
+       $(OBJS)\baselib_evtloopcmn.obj \
        $(OBJS)\baselib_extended.obj \
        $(OBJS)\baselib_ffile.obj \
        $(OBJS)\baselib_file.obj \
        $(OBJS)\baselib_fs_mem.obj \
        $(OBJS)\baselib_msgout.obj \
        $(OBJS)\baselib_utilscmn.obj \
+       $(OBJS)\baselib_evtloopmsw.obj \
        $(OBJS)\baselib_main.obj \
        $(OBJS)\baselib_mslu.obj \
        $(OBJS)\baselib_volume.obj
        $(OBJS)\coredll_fs_mem.obj \
        $(OBJS)\coredll_msgout.obj \
        $(OBJS)\coredll_utilscmn.obj \
+       $(OBJS)\coredll_evtloopmsw.obj \
        $(OBJS)\coredll_main.obj \
        $(OBJS)\coredll_mslu.obj \
        $(OBJS)\coredll_volume.obj \
        $(OBJS)\corelib_fs_mem.obj \
        $(OBJS)\corelib_msgout.obj \
        $(OBJS)\corelib_utilscmn.obj \
+       $(OBJS)\corelib_evtloopmsw.obj \
        $(OBJS)\corelib_main.obj \
        $(OBJS)\corelib_mslu.obj \
        $(OBJS)\corelib_volume.obj \
        $(OBJS)\monodll_dib.obj \
        $(OBJS)\monodll_display.obj \
        $(OBJS)\monodll_enhmeta.obj \
-       $(OBJS)\monodll_evtloop.obj \
        $(OBJS)\monodll_font.obj \
        $(OBJS)\monodll_fontenum.obj \
        $(OBJS)\monodll_fontutil.obj \
        $(OBJS)\monodll_dpycmn.obj \
        $(OBJS)\monodll_dseldlg.obj \
        $(OBJS)\monodll_effects.obj \
-       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_fddlgcmn.obj \
        $(OBJS)\monodll_filepickercmn.obj \
        $(OBJS)\monodll_fontpickercmn.obj \
        $(OBJS)\monodll_dib.obj \
        $(OBJS)\monodll_display.obj \
        $(OBJS)\monodll_enhmeta.obj \
-       $(OBJS)\monodll_evtloop.obj \
        $(OBJS)\monodll_font.obj \
        $(OBJS)\monodll_fontenum.obj \
        $(OBJS)\monodll_fontutil.obj \
        $(OBJS)\monodll_dpycmn.obj \
        $(OBJS)\monodll_dseldlg.obj \
        $(OBJS)\monodll_effects.obj \
-       $(OBJS)\monodll_evtloopcmn.obj \
        $(OBJS)\monodll_fddlgcmn.obj \
        $(OBJS)\monodll_filepickercmn.obj \
        $(OBJS)\monodll_fontpickercmn.obj \
        $(OBJS)\monolib_dib.obj \
        $(OBJS)\monolib_display.obj \
        $(OBJS)\monolib_enhmeta.obj \
-       $(OBJS)\monolib_evtloop.obj \
        $(OBJS)\monolib_font.obj \
        $(OBJS)\monolib_fontenum.obj \
        $(OBJS)\monolib_fontutil.obj \
        $(OBJS)\monolib_dpycmn.obj \
        $(OBJS)\monolib_dseldlg.obj \
        $(OBJS)\monolib_effects.obj \
-       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_fddlgcmn.obj \
        $(OBJS)\monolib_filepickercmn.obj \
        $(OBJS)\monolib_fontpickercmn.obj \
        $(OBJS)\monolib_dib.obj \
        $(OBJS)\monolib_display.obj \
        $(OBJS)\monolib_enhmeta.obj \
-       $(OBJS)\monolib_evtloop.obj \
        $(OBJS)\monolib_font.obj \
        $(OBJS)\monolib_fontenum.obj \
        $(OBJS)\monolib_fontutil.obj \
        $(OBJS)\monolib_dpycmn.obj \
        $(OBJS)\monolib_dseldlg.obj \
        $(OBJS)\monolib_effects.obj \
-       $(OBJS)\monolib_evtloopcmn.obj \
        $(OBJS)\monolib_fddlgcmn.obj \
        $(OBJS)\monolib_filepickercmn.obj \
        $(OBJS)\monolib_fontpickercmn.obj \
        $(OBJS)\coredll_dib.obj \
        $(OBJS)\coredll_display.obj \
        $(OBJS)\coredll_enhmeta.obj \
-       $(OBJS)\coredll_evtloop.obj \
        $(OBJS)\coredll_font.obj \
        $(OBJS)\coredll_fontenum.obj \
        $(OBJS)\coredll_fontutil.obj \
        $(OBJS)\coredll_dpycmn.obj \
        $(OBJS)\coredll_dseldlg.obj \
        $(OBJS)\coredll_effects.obj \
-       $(OBJS)\coredll_evtloopcmn.obj \
        $(OBJS)\coredll_fddlgcmn.obj \
        $(OBJS)\coredll_filepickercmn.obj \
        $(OBJS)\coredll_fontpickercmn.obj \
        $(OBJS)\coredll_dib.obj \
        $(OBJS)\coredll_display.obj \
        $(OBJS)\coredll_enhmeta.obj \
-       $(OBJS)\coredll_evtloop.obj \
        $(OBJS)\coredll_font.obj \
        $(OBJS)\coredll_fontenum.obj \
        $(OBJS)\coredll_fontutil.obj \
        $(OBJS)\coredll_dpycmn.obj \
        $(OBJS)\coredll_dseldlg.obj \
        $(OBJS)\coredll_effects.obj \
-       $(OBJS)\coredll_evtloopcmn.obj \
        $(OBJS)\coredll_fddlgcmn.obj \
        $(OBJS)\coredll_filepickercmn.obj \
        $(OBJS)\coredll_fontpickercmn.obj \
        $(OBJS)\corelib_dib.obj \
        $(OBJS)\corelib_display.obj \
        $(OBJS)\corelib_enhmeta.obj \
-       $(OBJS)\corelib_evtloop.obj \
        $(OBJS)\corelib_font.obj \
        $(OBJS)\corelib_fontenum.obj \
        $(OBJS)\corelib_fontutil.obj \
        $(OBJS)\corelib_dpycmn.obj \
        $(OBJS)\corelib_dseldlg.obj \
        $(OBJS)\corelib_effects.obj \
-       $(OBJS)\corelib_evtloopcmn.obj \
        $(OBJS)\corelib_fddlgcmn.obj \
        $(OBJS)\corelib_filepickercmn.obj \
        $(OBJS)\corelib_fontpickercmn.obj \
        $(OBJS)\corelib_dib.obj \
        $(OBJS)\corelib_display.obj \
        $(OBJS)\corelib_enhmeta.obj \
-       $(OBJS)\corelib_evtloop.obj \
        $(OBJS)\corelib_font.obj \
        $(OBJS)\corelib_fontenum.obj \
        $(OBJS)\corelib_fontutil.obj \
        $(OBJS)\corelib_dpycmn.obj \
        $(OBJS)\corelib_dseldlg.obj \
        $(OBJS)\corelib_effects.obj \
-       $(OBJS)\corelib_evtloopcmn.obj \
        $(OBJS)\corelib_fddlgcmn.obj \
        $(OBJS)\corelib_filepickercmn.obj \
        $(OBJS)\corelib_fontpickercmn.obj \
 $(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_extended.obj: ..\..\src\common\extended.c
        $(CC) /c /nologo /TC /Fo$@ $(MONODLL_CFLAGS) $**
 
 $(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
+$(OBJS)\monodll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
+
 $(OBJS)\monodll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monodll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
 $(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_extended.obj: ..\..\src\common\extended.c
        $(CC) /c /nologo /TC /Fo$@ $(MONOLIB_CFLAGS) $**
 
 $(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
+$(OBJS)\monolib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
+
 $(OBJS)\monolib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\monolib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
 $(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
 
+$(OBJS)\basedll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
+
 $(OBJS)\basedll_extended.obj: ..\..\src\common\extended.c
        $(CC) /c /nologo /TC /Fo$@ $(BASEDLL_CFLAGS) $**
 
 $(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
 
+$(OBJS)\basedll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
+
 $(OBJS)\basedll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
 
 $(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
 
+$(OBJS)\baselib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
+
 $(OBJS)\baselib_extended.obj: ..\..\src\common\extended.c
        $(CC) /c /nologo /TC /Fo$@ $(BASELIB_CFLAGS) $**
 
 $(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
 
+$(OBJS)\baselib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
+
 $(OBJS)\baselib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
 
 $(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 
+$(OBJS)\coredll_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
+
 $(OBJS)\coredll_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\coredll_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
 $(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 
+$(OBJS)\corelib_evtloopmsw.obj: ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
+
 $(OBJS)\corelib_main.obj: ..\..\src\msw\main.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_evtloop.obj: ..\..\src\msw\evtloop.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 !endif
 
-!if "$(USE_GUI)" == "1"
-$(OBJS)\corelib_evtloopcmn.obj: ..\..\src\common\evtloopcmn.cpp
-       $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
-!endif
-
 !if "$(USE_GUI)" == "1"
 $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
 
        $(OBJS)\monodll_dib.obj &
        $(OBJS)\monodll_display.obj &
        $(OBJS)\monodll_enhmeta.obj &
-       $(OBJS)\monodll_evtloop.obj &
        $(OBJS)\monodll_font.obj &
        $(OBJS)\monodll_fontenum.obj &
        $(OBJS)\monodll_fontutil.obj &
        $(OBJS)\monodll_dpycmn.obj &
        $(OBJS)\monodll_dseldlg.obj &
        $(OBJS)\monodll_effects.obj &
-       $(OBJS)\monodll_evtloopcmn.obj &
        $(OBJS)\monodll_fddlgcmn.obj &
        $(OBJS)\monodll_filepickercmn.obj &
        $(OBJS)\monodll_fontpickercmn.obj &
        $(OBJS)\monodll_dib.obj &
        $(OBJS)\monodll_display.obj &
        $(OBJS)\monodll_enhmeta.obj &
-       $(OBJS)\monodll_evtloop.obj &
        $(OBJS)\monodll_font.obj &
        $(OBJS)\monodll_fontenum.obj &
        $(OBJS)\monodll_fontutil.obj &
        $(OBJS)\monodll_dpycmn.obj &
        $(OBJS)\monodll_dseldlg.obj &
        $(OBJS)\monodll_effects.obj &
-       $(OBJS)\monodll_evtloopcmn.obj &
        $(OBJS)\monodll_fddlgcmn.obj &
        $(OBJS)\monodll_filepickercmn.obj &
        $(OBJS)\monodll_fontpickercmn.obj &
        $(OBJS)\monolib_dib.obj &
        $(OBJS)\monolib_display.obj &
        $(OBJS)\monolib_enhmeta.obj &
-       $(OBJS)\monolib_evtloop.obj &
        $(OBJS)\monolib_font.obj &
        $(OBJS)\monolib_fontenum.obj &
        $(OBJS)\monolib_fontutil.obj &
        $(OBJS)\monolib_dpycmn.obj &
        $(OBJS)\monolib_dseldlg.obj &
        $(OBJS)\monolib_effects.obj &
-       $(OBJS)\monolib_evtloopcmn.obj &
        $(OBJS)\monolib_fddlgcmn.obj &
        $(OBJS)\monolib_filepickercmn.obj &
        $(OBJS)\monolib_fontpickercmn.obj &
        $(OBJS)\monolib_dib.obj &
        $(OBJS)\monolib_display.obj &
        $(OBJS)\monolib_enhmeta.obj &
-       $(OBJS)\monolib_evtloop.obj &
        $(OBJS)\monolib_font.obj &
        $(OBJS)\monolib_fontenum.obj &
        $(OBJS)\monolib_fontutil.obj &
        $(OBJS)\monolib_dpycmn.obj &
        $(OBJS)\monolib_dseldlg.obj &
        $(OBJS)\monolib_effects.obj &
-       $(OBJS)\monolib_evtloopcmn.obj &
        $(OBJS)\monolib_fddlgcmn.obj &
        $(OBJS)\monolib_filepickercmn.obj &
        $(OBJS)\monolib_fontpickercmn.obj &
        $(OBJS)\coredll_dib.obj &
        $(OBJS)\coredll_display.obj &
        $(OBJS)\coredll_enhmeta.obj &
-       $(OBJS)\coredll_evtloop.obj &
        $(OBJS)\coredll_font.obj &
        $(OBJS)\coredll_fontenum.obj &
        $(OBJS)\coredll_fontutil.obj &
        $(OBJS)\coredll_dpycmn.obj &
        $(OBJS)\coredll_dseldlg.obj &
        $(OBJS)\coredll_effects.obj &
-       $(OBJS)\coredll_evtloopcmn.obj &
        $(OBJS)\coredll_fddlgcmn.obj &
        $(OBJS)\coredll_filepickercmn.obj &
        $(OBJS)\coredll_fontpickercmn.obj &
        $(OBJS)\coredll_dib.obj &
        $(OBJS)\coredll_display.obj &
        $(OBJS)\coredll_enhmeta.obj &
-       $(OBJS)\coredll_evtloop.obj &
        $(OBJS)\coredll_font.obj &
        $(OBJS)\coredll_fontenum.obj &
        $(OBJS)\coredll_fontutil.obj &
        $(OBJS)\coredll_dpycmn.obj &
        $(OBJS)\coredll_dseldlg.obj &
        $(OBJS)\coredll_effects.obj &
-       $(OBJS)\coredll_evtloopcmn.obj &
        $(OBJS)\coredll_fddlgcmn.obj &
        $(OBJS)\coredll_filepickercmn.obj &
        $(OBJS)\coredll_fontpickercmn.obj &
        $(OBJS)\corelib_dib.obj &
        $(OBJS)\corelib_display.obj &
        $(OBJS)\corelib_enhmeta.obj &
-       $(OBJS)\corelib_evtloop.obj &
        $(OBJS)\corelib_font.obj &
        $(OBJS)\corelib_fontenum.obj &
        $(OBJS)\corelib_fontutil.obj &
        $(OBJS)\corelib_dpycmn.obj &
        $(OBJS)\corelib_dseldlg.obj &
        $(OBJS)\corelib_effects.obj &
-       $(OBJS)\corelib_evtloopcmn.obj &
        $(OBJS)\corelib_fddlgcmn.obj &
        $(OBJS)\corelib_filepickercmn.obj &
        $(OBJS)\corelib_fontpickercmn.obj &
        $(OBJS)\corelib_dib.obj &
        $(OBJS)\corelib_display.obj &
        $(OBJS)\corelib_enhmeta.obj &
-       $(OBJS)\corelib_evtloop.obj &
        $(OBJS)\corelib_font.obj &
        $(OBJS)\corelib_fontenum.obj &
        $(OBJS)\corelib_fontutil.obj &
        $(OBJS)\corelib_dpycmn.obj &
        $(OBJS)\corelib_dseldlg.obj &
        $(OBJS)\corelib_effects.obj &
-       $(OBJS)\corelib_evtloopcmn.obj &
        $(OBJS)\corelib_fddlgcmn.obj &
        $(OBJS)\corelib_filepickercmn.obj &
        $(OBJS)\corelib_fontpickercmn.obj &
        $(OBJS)\monodll_dynlib.obj &
        $(OBJS)\monodll_dynload.obj &
        $(OBJS)\monodll_encconv.obj &
+       $(OBJS)\monodll_evtloopcmn.obj &
        $(OBJS)\monodll_extended.obj &
        $(OBJS)\monodll_ffile.obj &
        $(OBJS)\monodll_file.obj &
        $(OBJS)\monodll_fs_mem.obj &
        $(OBJS)\monodll_msgout.obj &
        $(OBJS)\monodll_utilscmn.obj &
+       $(OBJS)\monodll_evtloopmsw.obj &
        $(OBJS)\monodll_main.obj &
        $(OBJS)\monodll_mslu.obj &
        $(OBJS)\monodll_volume.obj &
        $(OBJS)\monolib_dynlib.obj &
        $(OBJS)\monolib_dynload.obj &
        $(OBJS)\monolib_encconv.obj &
+       $(OBJS)\monolib_evtloopcmn.obj &
        $(OBJS)\monolib_extended.obj &
        $(OBJS)\monolib_ffile.obj &
        $(OBJS)\monolib_file.obj &
        $(OBJS)\monolib_fs_mem.obj &
        $(OBJS)\monolib_msgout.obj &
        $(OBJS)\monolib_utilscmn.obj &
+       $(OBJS)\monolib_evtloopmsw.obj &
        $(OBJS)\monolib_main.obj &
        $(OBJS)\monolib_mslu.obj &
        $(OBJS)\monolib_volume.obj &
        $(OBJS)\basedll_dynlib.obj &
        $(OBJS)\basedll_dynload.obj &
        $(OBJS)\basedll_encconv.obj &
+       $(OBJS)\basedll_evtloopcmn.obj &
        $(OBJS)\basedll_extended.obj &
        $(OBJS)\basedll_ffile.obj &
        $(OBJS)\basedll_file.obj &
        $(OBJS)\basedll_fs_mem.obj &
        $(OBJS)\basedll_msgout.obj &
        $(OBJS)\basedll_utilscmn.obj &
+       $(OBJS)\basedll_evtloopmsw.obj &
        $(OBJS)\basedll_main.obj &
        $(OBJS)\basedll_mslu.obj &
        $(OBJS)\basedll_volume.obj
        $(OBJS)\baselib_dynlib.obj &
        $(OBJS)\baselib_dynload.obj &
        $(OBJS)\baselib_encconv.obj &
+       $(OBJS)\baselib_evtloopcmn.obj &
        $(OBJS)\baselib_extended.obj &
        $(OBJS)\baselib_ffile.obj &
        $(OBJS)\baselib_file.obj &
        $(OBJS)\baselib_fs_mem.obj &
        $(OBJS)\baselib_msgout.obj &
        $(OBJS)\baselib_utilscmn.obj &
+       $(OBJS)\baselib_evtloopmsw.obj &
        $(OBJS)\baselib_main.obj &
        $(OBJS)\baselib_mslu.obj &
        $(OBJS)\baselib_volume.obj
        $(OBJS)\coredll_fs_mem.obj &
        $(OBJS)\coredll_msgout.obj &
        $(OBJS)\coredll_utilscmn.obj &
+       $(OBJS)\coredll_evtloopmsw.obj &
        $(OBJS)\coredll_main.obj &
        $(OBJS)\coredll_mslu.obj &
        $(OBJS)\coredll_volume.obj &
        $(OBJS)\corelib_fs_mem.obj &
        $(OBJS)\corelib_msgout.obj &
        $(OBJS)\corelib_utilscmn.obj &
+       $(OBJS)\corelib_evtloopmsw.obj &
        $(OBJS)\corelib_main.obj &
        $(OBJS)\corelib_mslu.obj &
        $(OBJS)\corelib_volume.obj &
 $(OBJS)\monodll_encconv.obj :  .AUTODEPEND ..\..\src\common\encconv.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_extended.obj :  .AUTODEPEND ..\..\src\common\extended.c
        $(CC) -bt=nt -zq -fo=$^@ $(MONODLL_CFLAGS) $<
 
 $(OBJS)\monodll_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
+$(OBJS)\monodll_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
+
 $(OBJS)\monodll_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monodll_evtloop.obj :  .AUTODEPEND ..\..\src\msw\evtloop.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monodll_font.obj :  .AUTODEPEND ..\..\src\msw\font.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monodll_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monodll_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
 $(OBJS)\monolib_encconv.obj :  .AUTODEPEND ..\..\src\common\encconv.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_extended.obj :  .AUTODEPEND ..\..\src\common\extended.c
        $(CC) -bt=nt -zq -fo=$^@ $(MONOLIB_CFLAGS) $<
 
 $(OBJS)\monolib_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
+$(OBJS)\monolib_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
+
 $(OBJS)\monolib_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monolib_evtloop.obj :  .AUTODEPEND ..\..\src\msw\evtloop.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monolib_font.obj :  .AUTODEPEND ..\..\src\msw\font.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\monolib_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\monolib_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
 $(OBJS)\basedll_encconv.obj :  .AUTODEPEND ..\..\src\common\encconv.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
 
+$(OBJS)\basedll_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
+
 $(OBJS)\basedll_extended.obj :  .AUTODEPEND ..\..\src\common\extended.c
        $(CC) -bt=nt -zq -fo=$^@ $(BASEDLL_CFLAGS) $<
 
 $(OBJS)\basedll_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
 
+$(OBJS)\basedll_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
+
 $(OBJS)\basedll_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
 
 $(OBJS)\baselib_encconv.obj :  .AUTODEPEND ..\..\src\common\encconv.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
 
+$(OBJS)\baselib_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
+
 $(OBJS)\baselib_extended.obj :  .AUTODEPEND ..\..\src\common\extended.c
        $(CC) -bt=nt -zq -fo=$^@ $(BASELIB_CFLAGS) $<
 
 $(OBJS)\baselib_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
 
+$(OBJS)\baselib_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
+
 $(OBJS)\baselib_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
 
 $(OBJS)\coredll_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 
+$(OBJS)\coredll_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
+
 $(OBJS)\coredll_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\coredll_evtloop.obj :  .AUTODEPEND ..\..\src\msw\evtloop.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\coredll_font.obj :  .AUTODEPEND ..\..\src\msw\font.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\coredll_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\coredll_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
 $(OBJS)\corelib_utilscmn.obj :  .AUTODEPEND ..\..\src\common\utilscmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 
+$(OBJS)\corelib_evtloopmsw.obj :  .AUTODEPEND ..\..\src\msw\evtloopmsw.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
+
 $(OBJS)\corelib_main.obj :  .AUTODEPEND ..\..\src\msw\main.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\corelib_evtloop.obj :  .AUTODEPEND ..\..\src\msw\evtloop.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\corelib_font.obj :  .AUTODEPEND ..\..\src\msw\font.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 !endif
 
-!ifeq USE_GUI 1
-$(OBJS)\corelib_evtloopcmn.obj :  .AUTODEPEND ..\..\src\common\evtloopcmn.cpp
-       $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
-!endif
-
 !ifeq USE_GUI 1
 $(OBJS)\corelib_fddlgcmn.obj :  .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
 
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\common\evtloopcmn.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\common\extended.c
 # SUBTRACT CPP /YX /Yc /Yu
 # End Source File
 # End Source File
 # Begin Source File
 
+SOURCE=..\..\src\msw\evtloopmsw.cpp
+# End Source File
+# Begin Source File
+
 SOURCE=..\..\src\msw\main.cpp
 # End Source File
 # Begin Source File
 
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\src\common\evtloopcmn.cpp
-# End Source File
-# Begin Source File
-
 SOURCE=..\..\src\common\fddlgcmn.cpp
 # End Source File
 # Begin Source File
 # End Source File
 # Begin Source File
 
-SOURCE=..\..\src\msw\evtloop.cpp
+SOURCE=..\..\src\msw\evtloopmsw.cpp
 # End Source File
 # Begin Source File
 
 
 
 else
 
-                          LINE=`grep "wxUSE_GUI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GUI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MONOLITHIC" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MONOLITHIC=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PLUGINS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PLUGINS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                        LINE=`grep "wxWITH_SUBDIRS" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxWITH_SUBDIRS=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                          LINE=`grep "wxUSE_UNIVERSAL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNIVERSAL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NANOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NANOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GPE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GPE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                        LINE=`grep "wxUSE_LIBPNG" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBPNG=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBJPEG" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBJPEG=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBTIFF" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBTIFF=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBXPM" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBXPM=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBMSPACK" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBMSPACK=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBSDL" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBSDL=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBGNOMEPRINT" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBGNOMEPRINT=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBGNOMEVFS" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBGNOMEVFS=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_LIBHILDON" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_LIBHILDON=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_OPENGL" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_OPENGL=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_DMALLOC" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_DMALLOC=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_REGEX" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_REGEX=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_ZLIB" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_ZLIB=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_ODBC" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_ODBC=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                        LINE=`grep "wxUSE_EXPAT" ${wx_arg_cache_file}`
+                        LINE=`grep "^wxUSE_EXPAT=" ${wx_arg_cache_file}`
                         if test "x$LINE" != x ; then
                           eval "DEFAULT_$LINE"
                         else
 
 else
 
-                          LINE=`grep "wxUSE_SHARED" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SHARED=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_OPTIMISE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_OPTIMISE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_EXTENDED_RTTI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_EXTENDED_RTTI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_OMF" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_OMF=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUG_FLAG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUG_FLAG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUG_INFO" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUG_INFO=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUG_GDB" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUG_GDB=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUG_CONTEXT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUG_CONTEXT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MEM_TRACING" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MEM_TRACING=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROFILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROFILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NO_RTTI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NO_RTTI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NO_EXCEPTIONS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NO_EXCEPTIONS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PERMISSIVE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PERMISSIVE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NO_DEPS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NO_DEPS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_VARARG_MACROS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_VARARG_MACROS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_UNIVERSAL_BINARY" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNIVERSAL_BINARY=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "WXWIN_COMPATIBILITY_2_6" ${wx_arg_cache_file}`
+                          LINE=`grep "^WXWIN_COMPATIBILITY_2_6=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "WXWIN_COMPATIBILITY_2_8" ${wx_arg_cache_file}`
+                          LINE=`grep "^WXWIN_COMPATIBILITY_2_8=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_RPATH" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_RPATH=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_INTL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_INTL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CONFIG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CONFIG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_FTP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_FTP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_HTTP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_HTTP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_FILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_FILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SOCKETS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SOCKETS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_OLE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_OLE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DATAOBJ" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DATAOBJ=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_IPC" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_IPC=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_APPLE_IEEE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_APPLE_IEEE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ARCHIVE_STREAMS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ARCHIVE_STREAMS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STACKWALKER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STACKWALKER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ON_FATAL_EXCEPTION" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ON_FATAL_EXCEPTION=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CMDLINE_PARSER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CMDLINE_PARSER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DATETIME" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DATETIME=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DEBUGREPORT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DEBUGREPORT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DIALUP_MANAGER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DIALUP_MANAGER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DYNLIB_CLASS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DYNLIB_CLASS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DYNAMIC_LOADER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DYNAMIC_LOADER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_EXCEPTIONS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_EXCEPTIONS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FFILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FFILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FILESYSTEM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FILESYSTEM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FONTMAP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FONTMAP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FS_ARCHIVE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FS_ARCHIVE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FS_INET" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FS_INET=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FS_ZIP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FS_ZIP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GEOMETRY" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GEOMETRY=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LOG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LOG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LONGLONG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LONGLONG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MIMETYPE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MIMETYPE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_UNICODE_MSLU" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNICODE_MSLU=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_UNICODE_UTF8" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNICODE_UTF8=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_UNICODE_UTF8_LOCALE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNICODE_UTF8_LOCALE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SNGLINST_CHECKER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SNGLINST_CHECKER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STD_IOSTREAM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STD_IOSTREAM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STD_STRING" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STD_STRING=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STDPATHS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STDPATHS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STOPWATCH" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STOPWATCH=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STREAMS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STREAMS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SYSTEM_OPTIONS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SYSTEM_OPTIONS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TARSTREAM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TARSTREAM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TEXTBUFFER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TEXTBUFFER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TEXTFILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TEXTFILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TIMER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TIMER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_UNICODE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_UNICODE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SOUND" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SOUND=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MEDIACTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MEDIACTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GSTREAMER8" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GSTREAMER8=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PRINTF_POS_PARAMS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PRINTF_POS_PARAMS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ZIPSTREAM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ZIPSTREAM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_URL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_URL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_VARIANT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_VARIANT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_HTTP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_HTTP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_FTP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_FTP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROTOCOL_FILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROTOCOL_FILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_THREADS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_THREADS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DOC_VIEW_ARCHITECTURE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DOC_VIEW_ARCHITECTURE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_HELP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_HELP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MS_HTML_HELP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MS_HTML_HELP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_HTML" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_HTML=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_WXHTML_HELP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_WXHTML_HELP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_XRC" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_XRC=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_AUI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_AUI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STC" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STC=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CONSTRAINTS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CONSTRAINTS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PRINTING_ARCHITECTURE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PRINTING_ARCHITECTURE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MDI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MDI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MDI_ARCHITECTURE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MDI_ARCHITECTURE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LOGGUI" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LOGGUI=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LOGWINDOW" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LOGWINDOW=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LOGDIALOG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LOGDIALOG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_WEBKIT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_WEBKIT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_RICHTEXT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_RICHTEXT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GRAPHICS_CONTEXT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GRAPHICS_CONTEXT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_POSTSCRIPT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_POSTSCRIPT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CLIPBOARD" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CLIPBOARD=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DRAG_AND_DROP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DRAG_AND_DROP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_METAFILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_METAFILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CONTROLS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CONTROLS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ACCEL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ACCEL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ANIMATIONCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ANIMATIONCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_BUTTON" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_BUTTON=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_BMPBUTTON" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_BMPBUTTON=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_BITMAPCOMBOBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_BITMAPCOMBOBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CALCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CALCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CARET" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CARET=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CHECKBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CHECKBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CHECKLST" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CHECKLST=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CHOICE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CHOICE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CHOICEBOOK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CHOICEBOOK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COLLPANE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COLLPANE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COLOURPICKERCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COLOURPICKERCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COMBOBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COMBOBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COMBOCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COMBOCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DATEPICKCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DATEPICKCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DIRPICKERCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DIRPICKERCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DISPLAY" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DISPLAY=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DETECT_SM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DETECT_SM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_EDITABLELISTBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_EDITABLELISTBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FILEPICKERCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FILEPICKERCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FONTPICKERCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FONTPICKERCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GAUGE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GAUGE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GRID" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GRID=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DATAVIEWCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DATAVIEWCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_HYPERLINKCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_HYPERLINKCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_IMAGLIST" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_IMAGLIST=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LISTBOOK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LISTBOOK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LISTBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LISTBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_LISTCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_LISTCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NOTEBOOK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NOTEBOOK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ODCOMBOBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ODCOMBOBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_RADIOBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_RADIOBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_RADIOBTN" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_RADIOBTN=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SASH" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SASH=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SCROLLBAR" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SCROLLBAR=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SEARCHCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SEARCHCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SLIDER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SLIDER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SPINBTN" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SPINBTN=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SPINCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SPINCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SPLITTER" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SPLITTER=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STATBMP" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STATBMP=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STATBOX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STATBOX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STATLINE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STATLINE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STATTEXT" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STATTEXT=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STATUSBAR" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STATUSBAR=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TAB_DIALOG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TAB_DIALOG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TEXTCTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TEXTCTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TOGGLEBTN" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TOGGLEBTN=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TOOLBAR" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TOOLBAR=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TOOLBAR_NATIVE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TOOLBAR_NATIVE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TREEBOOK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TREEBOOK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TOOLBOOK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TOOLBOOK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TREECTRL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TREECTRL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TIPWINDOW" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TIPWINDOW=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_POPUPWIN" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_POPUPWIN=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COMMONDLGS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COMMONDLGS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ABOUTDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ABOUTDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_CHOICEDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_CHOICEDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_COLOURDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_COLOURDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FILEDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FILEDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FINDREPLDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FINDREPLDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_FONTDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_FONTDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DIRDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DIRDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MSGDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MSGDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_NUMBERDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_NUMBERDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SPLASH" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SPLASH=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TEXTDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TEXTDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_STARTUP_TIPS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_STARTUP_TIPS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PROGRESSDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PROGRESSDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_WIZARDDLG" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_WIZARDDLG=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MENUS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MENUS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MINIFRAME" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MINIFRAME=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TOOLTIPS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TOOLTIPS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_SPLINES" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_SPLINES=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_MOUSEWHEEL" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_MOUSEWHEEL=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_VALIDATORS" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_VALIDATORS=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_BUSYINFO" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_BUSYINFO=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_JOYSTICK" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_JOYSTICK=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_METAFILE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_METAFILE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DRAGIMAGE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DRAGIMAGE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ACCESSIBILITY" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ACCESSIBILITY=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_DC_CACHEING" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_DC_CACHEING=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PALETTE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PALETTE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_IMAGE" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_IMAGE=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_GIF" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_GIF=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PCX" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PCX=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_TGA" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_TGA=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_IFF" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_IFF=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_PNM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_PNM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_XPM" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_XPM=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_ICO_CUR" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_ICO_CUR=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 
 else
 
-                          LINE=`grep "wxUSE_OFFICIAL_BUILD" ${wx_arg_cache_file}`
+                          LINE=`grep "^wxUSE_OFFICIAL_BUILD=" ${wx_arg_cache_file}`
                           if test "x$LINE" != x ; then
                             eval "DEFAULT_$LINE"
                           else
 fi
 
 
+for ac_header in sys/epoll.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ----------------------------------------- ##
+## Report this to wx-dev@lists.wxwidgets.org ##
+## ----------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
 { echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
 echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
 if test "${ac_cv_c_const+set}" = set; then
 
     AC_CHECK_HEADER([sys/select.h],,, [AC_INCLUDES_DEFAULT()])
 fi
 
+dnl defines HAVE_SYS_EPOLL_H - for epoll mainloop implementation in wxbase
+AC_CHECK_HEADERS(sys/epoll.h)
+
 dnl ---------------------------------------------------------------------------
 dnl Checks for compiler characteristics
 dnl ---------------------------------------------------------------------------
 
 - 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)
 
 All (GUI):
 
 
 class WXDLLIMPEXP_BASE wxAppConsole;
 class WXDLLIMPEXP_BASE wxAppTraits;
 class WXDLLIMPEXP_BASE wxCmdLineParser;
+class WXDLLIMPEXP_BASE wxEventLoop;
 class WXDLLIMPEXP_BASE wxLog;
 class WXDLLIMPEXP_BASE wxMessageOutput;
 
 
     // This is the replacement for the normal main(): all program work should
     // be done here. When OnRun() returns, the programs starts shutting down.
-    virtual int OnRun() = 0;
+    virtual int OnRun();
 
     // This is only called if OnInit() returned true so it's a good place to do
     // any cleanup matching the initializations done there.
     // either should be configurable by the user (then he can change the
     // default behaviour simply by overriding CreateTraits() and returning his
     // own traits object) or which is GUI/console dependent as then wxAppTraits
-    // allows us to abstract the differences behind the common façade
+    // allows us to abstract the differences behind the common fa�de
     wxAppTraits *GetTraits();
 
 
     virtual void OnUnhandledException() { }
 #endif // wxUSE_EXCEPTIONS
 
+    // event processing functions
+    // --------------------------
+
+    // return true if we're running event loop, i.e. if the events can
+    // (already) be dispatched
+    static bool IsMainLoopRunning()
+    {
+        const wxAppConsole * const app = GetInstance();
+        return app && app->m_mainLoop != NULL;
+    }
+
     // process all events in the wxPendingEvents list -- it is necessary to
     // call this function to process posted events. This happens during each
     // event loop iteration in GUI mode but if there is no main loop, it may be
     // also called directly.
     virtual void ProcessPendingEvents();
 
+    // check if there are pending events on global pending event list
+    bool HasPendingEvents() const;
+
     // doesn't do anything in this class, just a hook for GUI wxApp
     virtual bool Yield(bool WXUNUSED(onlyIfNeeded) = false) { return true; }
 
     // make sure that idle events are sent again
-    virtual void WakeUpIdle() { }
+    virtual void WakeUpIdle();
 
-    // this is just a convenience: by providing its implementation here we
-    // avoid #ifdefs in the code using it
-    static bool IsMainLoopRunning() { return false; }
+        // execute the main GUI loop, the function returns when the loop ends
+    virtual int MainLoop();
+
+        // exit the main GUI loop during the next iteration (i.e. it does not
+        // stop the program immediately!)
+    virtual void ExitMainLoop();
 
+        // returns true if there are unprocessed events in the event queue
+    virtual bool Pending();
+
+        // process the first event in the event queue (blocks until an event
+        // appears if there are none currently, use Pending() if this is not
+        // wanted), returns false if the event loop should stop and true
+        // otherwise
+    virtual bool Dispatch();
+
+        // this virtual function is called  when the application
+        // becomes idle and normally just sends wxIdleEvent to all interested
+        // parties
+        //
+        // it should return true if more idle events are needed, false if not
+    virtual bool ProcessIdle();
+
+#if wxUSE_EXCEPTIONS
+    // Function called if an uncaught exception is caught inside the main
+    // event loop: it may return true to continue running the event loop or
+    // false to stop it (in the latter case it may rethrow the exception as
+    // well)
+    virtual bool OnExceptionInMainLoop();
+#endif // wxUSE_EXCEPTIONS
 
     // debugging support
     // -----------------
     // the one and only global application object
     static wxAppConsole *ms_appInstance;
 
+    // create main loop from AppTraits or return NULL if
+    // there is no main loop implementation
+    wxEventLoop *CreateMainLoop();
 
     // application info (must be set from the user code)
     wxString m_vendorName,      // vendor name (ACME Inc)
     // by GetTraits() when first needed
     wxAppTraits *m_traits;
 
+    // the main event loop of the application (may be NULL if the loop hasn't
+    // been started yet or has already terminated)
+    wxEventLoop *m_mainLoop;
 
     // the application object is a singleton anyhow, there is no sense in
     // copying it
     // the worker functions - usually not used directly by the user code
     // -----------------------------------------------------------------
 
-        // return true if we're running main loop, i.e. if the events can
-        // (already) be dispatched
-    static bool IsMainLoopRunning()
-    {
-        wxAppBase *app = wx_static_cast(wxAppBase *, GetInstance());
-        return app && app->m_mainLoop != NULL;
-    }
-
-        // execute the main GUI loop, the function returns when the loop ends
-    virtual int MainLoop();
 
-        // exit the main loop thus terminating the application
-    virtual void Exit();
-
-        // exit the main GUI loop during the next iteration (i.e. it does not
-        // stop the program immediately!)
-    virtual void ExitMainLoop();
-
-        // returns true if there are unprocessed events in the event queue
-    virtual bool Pending();
-
-        // process the first event in the event queue (blocks until an event
-        // appears if there are none currently, use Pending() if this is not
-        // wanted), returns false if the event loop should stop and true
-        // otherwise
-    virtual bool Dispatch();
 
         // process all currently pending events right now
         //
     virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event);
 
 
-#if wxUSE_EXCEPTIONS
-    // Function called if an uncaught exception is caught inside the main
-    // event loop: it may return true to continue running the event loop or
-    // false to stop it (in the latter case it may rethrow the exception as
-    // well)
-    virtual bool OnExceptionInMainLoop();
-#endif // wxUSE_EXCEPTIONS
-
-
     // top level window functions
     // --------------------------
 
     virtual wxAppTraits *CreateTraits();
 
 
-    // the main event loop of the application (may be NULL if the loop hasn't
-    // been started yet or has already terminated)
-    wxEventLoop *m_mainLoop;
-
     // the main top level window (may be NULL)
     wxWindow *m_topWindow;
 
         #include "wx/os2/app.h"
     #endif
 #else // !GUI
-    // allow using just wxApp (instead of wxAppConsole) in console programs
-    typedef wxAppConsole wxApp;
+    // wxApp is defined in core and we cannot define another one in wxBase,
+    // so we create a different class and typedef it to wxApp instead
+    #if defined(__UNIX__)
+        #include "wx/unix/app.h"
+        class wxApp : public wxAppConsoleUnix { };
+    #else
+        // allow using just wxApp (instead of wxAppConsole) in console programs
+        class wxApp : public wxAppConsole { };
+    #endif
 #endif // GUI/!GUI
 
 // ----------------------------------------------------------------------------
 
 class WXDLLIMPEXP_BASE wxArrayString;
 class WXDLLIMPEXP_BASE wxObject;
 class WXDLLEXPORT wxAppTraits;
+class WXDLLIMPEXP_BASE wxEventLoop;
 #if wxUSE_FONTMAP
     class WXDLLEXPORT wxFontMapper;
 #endif // wxUSE_FONTMAP
     virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0;
 #endif
 
+    // create a new, port specific, instance of the event loop used by wxApp
+    virtual wxEventLoop *CreateEventLoop() = 0;
+
 #if wxUSE_TIMER
     // return platform and toolkit dependent wxTimer implementation
     virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer) = 0;
 
 // wxEventLoop
 // ----------------------------------------------------------------------------
 
-class WXDLLIMPEXP_CORE wxEventLoop : public wxEventLoopManual
+class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxEventLoopManual
 {
 public:
-    wxEventLoop();
+    wxGUIEventLoop();
 
     virtual bool Pending() const;
     virtual bool Dispatch();
 private:
     static wxIDirectFBEventBufferPtr ms_buffer;
 
-    DECLARE_NO_COPY_CLASS(wxEventLoop)
+    DECLARE_NO_COPY_CLASS(wxGUIEventLoop)
 };
 
 #endif // _WX_DFB_EVTLOOP_H_
 
     // are we currently painting some area of this TLW?
     bool m_isPainting;
 
-    friend class wxEventLoop; // for HandleDFBWindowEvent
-    friend class wxWindowDFB; // for SetDfbFocus
+    friend class wxGUIEventLoop; // for HandleDFBWindowEvent
+    friend class wxWindowDFB;    // for SetDfbFocus
 };
 
 #endif // _WX_DFB_NONOWNEDWND_H_
 
     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxContextMenuEvent)
 };
 
+#endif // wxUSE_GUI
+
 // Idle event
 /*
  wxEVT_IDLE
     wxIDLE_PROCESS_SPECIFIED
 };
 
-class WXDLLIMPEXP_CORE wxIdleEvent : public wxEvent
+class WXDLLIMPEXP_BASE wxIdleEvent : public wxEvent
 {
 public:
     wxIdleEvent()
     // Returns the idle event mode
     static wxIdleMode GetMode() { return sm_idleMode; }
 
-    // Can we send an idle event?
-    static bool CanSend(wxWindow* win);
-
 protected:
     bool m_requestMore;
     static wxIdleMode sm_idleMode;
     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIdleEvent)
 };
 
-#endif // wxUSE_GUI
-
 /* TODO
  wxEVT_MOUSE_CAPTURE_CHANGED,
  wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95)
 
 class WXDLLEXPORT wxEventLoop;
 
 // ----------------------------------------------------------------------------
-// wxEventLoop: a GUI event loop
+// wxEventLoopBase: interface for wxEventLoop
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEventLoopBase
+class WXDLLIMPEXP_BASE wxEventLoopBase
 {
 public:
     // trivial, but needed (because of wxEventLoopBase) ctor
     // dtor
     virtual ~wxEventLoopBase() { }
 
+    // use this to check whether the event loop was successfully created before
+    // using it
+    virtual bool IsOk() const { return true; }
+
     // start the event loop, return the exit code when it is finished
     virtual int Run() = 0;
 
     // spawned a nested (e.g. modal) event loop, this would return false
     bool IsRunning() const;
 
+    // implement this to wake up the loop: usually done by posting a dummy event
+    // to it (can be called from non main thread)
+    virtual void WakeUp() = 0;
+
 protected:
     // this function should be called before the event loop terminates, whether
     // this happens normally (because of Exit() call) or abnormally (because of
     DECLARE_NO_COPY_CLASS(wxEventLoopBase)
 };
 
-#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__)
+#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__) || defined(__UNIX__)
 
 // this class can be used to implement a standard event loop logic using
 // Pending() and Dispatch()
 //
 // it also handles idle processing automatically
-class WXDLLEXPORT wxEventLoopManual : public wxEventLoopBase
+class WXDLLIMPEXP_BASE wxEventLoopManual : public wxEventLoopBase
 {
 public:
     wxEventLoopManual();
     virtual void Exit(int rc = 0);
 
 protected:
-    // implement this to wake up the loop: usually done by posting a dummy event
-    // to it (called from Exit())
-    virtual void WakeUp() = 0;
-
     // may be overridden to perform some action at the start of each new event
     // loop iteration
     virtual void OnNextIteration() { }
 
 class WXDLLEXPORT wxEventLoopImpl;
 
-class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
+class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
 {
 public:
-    wxEventLoop() { m_impl = NULL; }
-    virtual ~wxEventLoop();
+    wxGUIEventLoop() { m_impl = NULL; }
+    virtual ~wxGUIEventLoop();
 
     virtual int Run();
     virtual void Exit(int rc = 0);
     virtual bool Pending() const;
     virtual bool Dispatch();
+    virtual void WakeUp() { }
 
 protected:
     // the pointer to the port specific implementation class
     wxEventLoopImpl *m_impl;
 
-    DECLARE_NO_COPY_CLASS(wxEventLoop)
+    DECLARE_NO_COPY_CLASS(wxGUIEventLoop)
 };
 
 #endif // platforms
 
+// also include the header defining wxConsoleEventLoop for Unix systems
+#if defined(__UNIX__)
+    #include "wx/unix/evtloop.h"
+#endif
+
+// cannot use typedef because wxEventLoop is forward-declared in many places
+#if wxUSE_GUI
+class wxEventLoop : public wxGUIEventLoop { };
+#elif defined(__WXMSW__) || defined(__UNIX__)
+class wxEventLoop : public wxConsoleEventLoop { };
+#else // we still must define it somehow for the code below...
+class wxEventLoop : public wxEventLoopBase { };
+#endif
+
 inline bool wxEventLoopBase::IsRunning() const { return GetActive() == this; }
 
+#if wxUSE_GUI
 // ----------------------------------------------------------------------------
 // wxModalEventLoop
 // ----------------------------------------------------------------------------
 // implement modality, we will surely need platform-specific implementations
 // too, this generic implementation is here only temporarily to see how it
 // works
-class WXDLLEXPORT wxModalEventLoop : public wxEventLoop
+class WXDLLEXPORT wxModalEventLoop : public wxGUIEventLoop
 {
 public:
     wxModalEventLoop(wxWindow *winModal)
         delete m_windowDisabler;
         m_windowDisabler = NULL;
 
-        wxEventLoop::OnExit();
+        wxGUIEventLoop::OnExit();
     }
 
 private:
     wxWindowDisabler *m_windowDisabler;
 };
 
+#endif //wxUSE_GUI
+
 // ----------------------------------------------------------------------------
 // wxEventLoopActivator: helper class for wxEventLoop implementations
 // ----------------------------------------------------------------------------
 class wxEventLoopActivator
 {
 public:
-    wxEventLoopActivator(wxEventLoop *evtLoop)
+    wxEventLoopActivator(wxEventLoopBase *evtLoop)
     {
-        m_evtLoopOld = wxEventLoop::GetActive();
-        wxEventLoop::SetActive(evtLoop);
+        m_evtLoopOld = wxEventLoopBase::GetActive();
+        wxEventLoopBase::SetActive(wx_static_cast(wxEventLoop *, evtLoop));
     }
 
     ~wxEventLoopActivator()
     {
         // restore the previously active event loop
-        wxEventLoop::SetActive(m_evtLoopOld);
+        wxEventLoopBase::SetActive(m_evtLoopOld);
     }
 
 private:
 
         iterator insert(const iterator& it, const_reference v = value_type())\
         {                                                                   \
             Insert(it.m_node, (const_base_reference)v);                     \
-            return iterator(it.m_node->GetPrevious(), GetLast());           \
+            iterator itprev(it);                                            \
+            return itprev--;                                                \
         }                                                                   \
         void insert(const iterator& it, size_type n, const_reference v = value_type())\
         {                                                                   \
 
 
 #if wxMAC_USE_RUN_APP_EVENT_LOOP
 
-class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
+class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
 {
 public:
-    wxEventLoop() { m_exitcode = 0; }
+    wxGUIEventLoop() { m_exitcode = 0; }
 
     // implement base class pure virtuals
     virtual int Run();
 
 #else // manual event loop
 
-class WXDLLEXPORT wxEventLoop : public wxEventLoopManual
+class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopManual
 {
 public:
-    wxEventLoop() { }
+    wxGUIEventLoop() { }
 
     virtual bool Pending() const;
     virtual bool Dispatch();
 
 
 #include "wx/defs.h"
 #include "X11/Xlib.h"
+#include "wx/evtloop.h"
 
 class WXDLLEXPORT wxFont;
 class WXDLLEXPORT wxWindow;
 // event-related functions
 // ----------------------------------------------------------------------------
 
-class wxEventLoop;
-
 // executes one main loop iteration (implemented in src/motif/evtloop.cpp)
 // returns true if the loop should be exited
-bool wxDoEventLoopIteration( wxEventLoop& evtLoop );
+bool wxDoEventLoopIteration( wxGUIEventLoop& evtLoop );
 
 // Consume all events until no more left
 void wxFlushEvents(WXDisplay* display);
 
 class wxConsoleAppTraits : public wxConsoleAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop() { return NULL; }
+#if wxUSE_TIMER
+    virtual wxTimerImpl *CreateTimerImpl(wxTimer *) { return NULL; }
+#endif // wxUSE_TIMER
 };
 
 #if wxUSE_GUI
 class wxGUIAppTraits : public wxGUIAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop();
     virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
+
+#if wxUSE_TIMER
+    virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer);
+#endif // wxUSE_TIMER
 };
 
 #endif // wxUSE_GUI
 
 class WXDLLIMPEXP_BASE wxConsoleAppTraits : public wxConsoleAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop();
     virtual void *BeforeChildWaitLoop();
     virtual void AlwaysYield();
     virtual void AfterChildWaitLoop(void *data);
 class WXDLLIMPEXP_CORE wxGUIAppTraits : public wxGUIAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop();
     virtual void *BeforeChildWaitLoop();
     virtual void AlwaysYield();
     virtual void AfterChildWaitLoop(void *data);
 
 #ifndef _WX_MSW_EVTLOOP_H_
 #define _WX_MSW_EVTLOOP_H_
 
+#if wxUSE_GUI
 #include "wx/window.h"
+#endif
 
 // ----------------------------------------------------------------------------
 // wxEventLoop
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEventLoop : public wxEventLoopManual
+class WXDLLIMPEXP_BASE wxMSWEventLoopBase : public wxEventLoopManual
 {
 public:
-    wxEventLoop();
+    wxMSWEventLoopBase();
 
     // implement base class pure virtuals
     virtual bool Pending() const;
-    virtual bool Dispatch();
 
-    // MSW-specific methods
-    // --------------------
+protected:
+    // get the next message from queue and return true or return false if we
+    // got WM_QUIT or an error occurred
+    bool GetNextMessage(WXMSG *msg);
+};
+
+#if wxUSE_GUI
+
+class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxMSWEventLoopBase
+{
+public:
+    wxGUIEventLoop() { }
+
+    // process a single message: calls PreProcessMessage() before dispatching
+    // it
+    virtual void ProcessMessage(WXMSG *msg);
 
     // preprocess a message, return true if processed (i.e. no further
     // dispatching required)
     virtual bool PreProcessMessage(WXMSG *msg);
 
-    // process a single message
-    virtual void ProcessMessage(WXMSG *msg);
-
     // set the critical window: this is the window such that all the events
     // except those to this window (and its children) stop to be processed
     // (typical examples: assert or crash report dialog)
         return !ms_winCritical || IsChildOfCriticalWindow(win);
     }
 
-protected:
     // override/implement base class virtuals
+    virtual bool Dispatch();
     virtual void WakeUp();
+
+protected:
     virtual void OnNextIteration();
 
+private:
     // check if the given window is a child of ms_winCritical (which must be
     // non NULL)
     static bool IsChildOfCriticalWindow(wxWindowMSW *win);
     static wxWindowMSW *ms_winCritical;
 };
 
+#else // !wxUSE_GUI
+
+class WXDLLIMPEXP_BASE wxConsoleEventLoop : public wxMSWEventLoopBase
+{
+public:
+    wxConsoleEventLoop() { }
+
+    // override/implement base class virtuals
+    virtual bool Dispatch();
+    virtual void WakeUp();
+
+protected:
+    virtual void OnNextIteration();
+};
+
+#endif // wxUSE_GUI/!wxUSE_GUI
+
 #endif // _WX_MSW_EVTLOOP_H_
 
 // wxEventLoop
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxEventLoop : public wxEventLoopBase
+class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
 {
 public:
-    wxEventLoop();
+    wxGUIEventLoop();
 
     // implement base class pure virtuals
     virtual int Run();
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/private/fdiodispatcher.h
+// Purpose:     classes for dispatching IO notifications for file descriptors
+// Authors:     Lukasz Michalski
+// Created:     December 2006
+// Copyright:   (c) Lukasz Michalski
+// RCS-ID:      $Id$
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PRIVATE_FDIODISPATCHER_H_
+#define _WX_PRIVATE_FDIODISPATCHER_H_
+
+#include "wx/hashmap.h"
+
+// handler used to process events on descriptors
+class wxFDIOHandler
+{
+public:
+    // called when descriptor is available for non-blocking read
+    virtual void OnReadWaiting() = 0;
+
+    // called when descriptor is available  for non-blocking write
+    virtual void OnWriteWaiting() = 0;
+
+    // called when there is exception on descriptor
+    virtual void OnExceptionWaiting() = 0;
+
+    // virtual dtor for the base class
+    virtual ~wxFDIOHandler() { }
+};
+
+// those flags describes sets where descriptor should be added
+enum wxFDIODispatcherEntryFlags
+{
+    wxFDIO_INPUT = 1,
+    wxFDIO_OUTPUT = 2,
+    wxFDIO_EXCEPTION = 4,
+    wxFDIO_ALL = wxFDIO_INPUT | wxFDIO_OUTPUT | wxFDIO_EXCEPTION
+};
+
+struct wxFDIOHandlerEntry
+{
+    wxFDIOHandlerEntry()
+    {
+    }
+
+    wxFDIOHandlerEntry(wxFDIOHandler *handler_, int flags_)
+        : handler(handler_),
+          flags(flags_)
+    {
+    }
+
+    wxFDIOHandler *handler;
+    int flags;
+};
+
+// this hash is used to map file descriptors to their handlers
+WX_DECLARE_HASH_MAP(
+  int,
+  wxFDIOHandlerEntry,
+  wxIntegerHash,
+  wxIntegerEqual,
+  wxFDIOHandlerMap
+);
+
+// base class for wxSelectDispatcher and wxEpollDispatcher
+//
+// notice that all pure virtual functions for FD management have implementation
+// in the base class and should be called from the derived classes
+class WXDLLIMPEXP_BASE wxFDIODispatcher
+{
+public:
+    enum { TIMEOUT_INFINITE = -1 };
+
+    // find the handler for the given fd, return NULL if none
+    wxFDIOHandler *FindHandler(int fd) const;
+
+    // register handler for the given descriptor with the dispatcher, return
+    // true on success or false on error
+    virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags) = 0;
+
+    // modify descriptor flags or handler, return true on success
+    virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags) = 0;
+
+    // unregister descriptor previously registered with RegisterFD(), the
+    // caller is responsible for deleting the returned handler pointer if
+    // necessary
+    virtual wxFDIOHandler *UnregisterFD(int fd, int flags) = 0;
+
+    // loops waiting for an event to happen on any of the descriptors
+    virtual void RunLoop(int timeout) = 0;
+
+    virtual ~wxFDIODispatcher() { }
+
+protected:
+    // the fd -> handler map containing all the registered handlers
+    wxFDIOHandlerMap m_handlers;
+};
+
+#endif // _WX_PRIVATE_FDIODISPATCHER_H_
 
 public:
     wxGSocketIOHandler(GSocket* socket);
     int GetFlags() const;
-    void RemoveFlag(wxSelectDispatcherEntryFlags flag);
-    void AddFlag(wxSelectDispatcherEntryFlags flag);
+    void RemoveFlag(wxFDIODispatcherEntryFlags flag);
+    void AddFlag(wxFDIODispatcherEntryFlags flag);
 
-private:
-    virtual void OnReadWaiting(int fd);
-    virtual void OnWriteWaiting(int fd);
-    virtual void OnExceptionWaiting(int fd);
+    virtual void OnReadWaiting();
+    virtual void OnWriteWaiting();
+    virtual void OnExceptionWaiting();
 
+private:
     GSocket* m_socket;
     int m_flags;
 };
 
 /////////////////////////////////////////////////////////////////////////////
 // Name:        wx/private/selectdispatcher.h
 // Purpose:     wxSelectDispatcher class
-// Authors:     Lukasz Michalski
-// Modified by:
+// Authors:     Lukasz Michalski and Vadim Zeitlin
 // Created:     December 2006
 // Copyright:   (c) Lukasz Michalski
 // RCS-ID:      $Id$
 
 #include "wx/defs.h"
 
-#include "wx/hashmap.h"
+#include "wx/private/fdiodispatcher.h"
 
-static const int wxSELECT_TIMEOUT_INFINITE = -1;
-
-// handler used to process events on descriptors
-class wxFDIOHandler
+// helper class storing all the select() fd sets
+class WXDLLIMPEXP_BASE wxSelectSets
 {
 public:
-    // called when descriptor is available for non-blocking read
-    virtual void OnReadWaiting(int fd) = 0;
-
-    // called when descriptor is available  for non-blocking write
-    virtual void OnWriteWaiting(int fd) = 0;
+    // ctor zeroes out all fd_sets
+    wxSelectSets();
 
-    // called when there is exception on descriptor
-    virtual void OnExceptionWaiting(int fd) = 0;
+    // default copy ctor, assignment operator and dtor are ok
 
-    // virtual dtor for the base class
-    virtual ~wxFDIOHandler() { }
-};
-
-// those flags describes sets where descriptor should be added
-enum wxSelectDispatcherEntryFlags
-{
-    wxSelectInput = 1,
-    wxSelectOutput = 2,
-    wxSelectException = 4,
-    wxSelectAll = wxSelectInput | wxSelectOutput | wxSelectException
-};
 
-WX_DECLARE_HASH_MAP(
-  int,
-  wxFDIOHandler*,
-  wxIntegerHash,
-  wxIntegerEqual,
-  wxFDIOHandlerMap
-);
+    // return true if fd appears in any of the sets
+    bool HasFD(int fd) const;
 
-class WXDLLIMPEXP_CORE wxSelectDispatcher
-{
-public:
-    // returns instance of the table
-    static wxSelectDispatcher& Get();
+    // add or remove FD to our sets depending on whether flags contains
+    // wxFDIO_INPUT/OUTPUT/EXCEPTION bits
+    bool SetFD(int fd, int flags);
 
-    virtual ~wxSelectDispatcher()
+    // same as SetFD() except it unsets the bits set in the flags for the given
+    // fd
+    bool ClearFD(int fd, int flags)
     {
+        return SetFD(fd, wxFDIO_ALL & ~flags);
     }
 
-    // register descriptor in sets.
-    void RegisterFD(int fd, wxFDIOHandler* handler, int flags = wxSelectAll);
 
-    // unregister descriptor from sets and return handler for cleanup
-    wxFDIOHandler* UnregisterFD(int fd, int flags = wxSelectAll);
+    // call select() with our sets: the other parameters are the same as for
+    // select() itself
+    int Select(int nfds, struct timeval *tv);
+
+    // call the handler methods corresponding to the sets having this fd
+    void Handle(int fd, wxFDIOHandler& handler) const;
+
+private:
+    typedef void (wxFDIOHandler::*Callback)();
+
+    // the FD sets indices
+    enum
+    {
+        Read,
+        Write,
+        Except,
+        Max
+    };
+
+    // the sets used with select()
+    fd_set m_fds[Max];
+
+    // the wxFDIO_XXX flags, functions and names (used for debug messages only)
+    // corresponding to the FD sets above
+    static int ms_flags[Max];
+    static const char *ms_names[Max];
+    static Callback ms_handlers[Max];
+};
+
+class WXDLLIMPEXP_BASE wxSelectDispatcher : public wxFDIODispatcher
+{
+public:
+    // returns the unique instance of this class, the pointer shouldn't be
+    // deleted and is normally never NULL
+    static wxSelectDispatcher *Get();
 
-    // return handler for descriptor or null if fd is not registered
-    wxFDIOHandler* FindHandler(int fd);
+    // if we have any registered handlers, check for any pending events to them
+    // and dispatch them -- this is used from wxX11 and wxDFB event loops
+    // implementation
+    static void DispatchPending();
 
-    // calls select on registered descriptors and
-    void RunLoop(int timeout = wxSELECT_TIMEOUT_INFINITE);
+    // implement pure virtual methods of the base class
+    virtual bool RegisterFD(int fd, wxFDIOHandler *handler, int flags = wxFDIO_ALL);
+    virtual bool ModifyFD(int fd, wxFDIOHandler *handler, int flags = wxFDIO_ALL);
+    virtual wxFDIOHandler *UnregisterFD(int fd, int flags = wxFDIO_ALL);
+    virtual void RunLoop(int timeout = TIMEOUT_INFINITE);
 
 protected:
-    wxSelectDispatcher() { m_maxFD = -1; }
+    wxSelectDispatcher();
 
 private:
-    void ProcessSets(fd_set* readset, fd_set* writeset, fd_set* exeptset, int max_fd);
+    // common part of RegisterFD() and ModifyFD()
+    bool DoUpdateFDAndHandler(int fd, wxFDIOHandler *handler, int flags);
 
-    fd_set m_readset;
-    fd_set m_writeset;
-    fd_set m_exeptset;
+    // call the handlers for the fds present in the given sets
+    void ProcessSets(const wxSelectSets& sets);
 
-    int m_maxFD;
-    wxFDIOHandlerMap m_handlers;
+    // helper of ProcessSets(): call the handler if its fd is in the set
+    void DoProcessFD(int fd, const fd_set& fds, wxFDIOHandler *handler,
+                     const char *name);
 
-    static wxSelectDispatcher *ms_instance;
 
-    friend class wxSelectDispatcherModule;
+    // the select sets containing all the registered fds
+    wxSelectSets m_sets;
+
+    // the highest registered fd value or -1 if none
+    int m_maxFD;
 };
 
 
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/unix/app.h
+// Purpose:     wxAppConsole implementation for Unix
+// Author:      Lukasz Michalski
+// Created:     28/01/2005
+// RCS-ID:      $Id$
+// Copyright:   (c) Lukasz Michalski
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// wxApp subclass implementing event processing for console applications
+class WXDLLIMPEXP_BASE wxAppConsoleUnix : public wxAppConsole
+{
+public:
+    // override base class initialization
+    virtual bool Initialize(int& argc, wxChar** argv);
+
+
+    // Unix-specific: Unix signal handling
+    // -----------------------------------
+
+    // type of the function which can be registered as signal handler: notice
+    // that it isn't really a signal handler, i.e. it's not subject to the
+    // usual signal handlers constraints, because it is called later from
+    // CheckSignal() and not when the signal really occurs
+    typedef void (*SignalHandler)(int);
+
+    // Set signal handler for the given signal, SIG_DFL or SIG_IGN can be used
+    // instead of a function pointer
+    //
+    // Return true if handler was installed, false on error
+    bool SetSignalHandler(int signal, SignalHandler handler);
+
+    // Check if any Unix signals arrived since the last call and execute
+    // handlers for them
+    void CheckSignal();
+
+private:
+    // signal handler set up by SetSignalHandler() for all signals we handle,
+    // it just adds the signal to m_signalsCaught -- the real processing is
+    // done later, when CheckSignal() is called
+    static void HandleSignal(int signal);
+
+
+    // signals for which HandleSignal() had been called (reset from
+    // CheckSignal())
+    sigset_t m_signalsCaught;
+
+    // the signal handlers
+    WX_DECLARE_HASH_MAP(int, SignalHandler, wxIntegerHash, wxIntegerEqual, SignalHandlerHash);
+    SignalHandlerHash m_signalHandlerHash;
+
+    friend class GSocketGUIFunctionsTableBase;
+};
 
 class WXDLLEXPORT wxConsoleAppTraits : public wxConsoleAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop();
     virtual bool CreateEndProcessPipe(wxExecuteData& execData);
     virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd);
     virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
 class WXDLLEXPORT wxGUIAppTraits : public wxGUIAppTraitsBase
 {
 public:
+    virtual wxEventLoop *CreateEventLoop();
     virtual bool CreateEndProcessPipe(wxExecuteData& execData);
     virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd);
     virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
 #endif
     virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
 
-#ifdef __WXGTK__
-
-#if wxUSE_INTL
+#if defined(__WXGTK__) && wxUSE_INTL
     virtual void SetLocale();
-#endif
+#endif // __WXGTK__
+
+#ifdef __WXGTK20__
     virtual wxString GetDesktopEnvironment() const;
     virtual wxString GetStandardCmdLineOptions(wxArrayString& names,
                                                wxArrayString& desc) const;
-#endif // __WXGTK__
+#endif // __WXGTK20____
 
 #if defined(__WXDEBUG__) && defined(__WXGTK20__)
     virtual bool ShowAssertDialog(const wxString& msg);
 
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/unix/evtloop.h
+// Purpose:     declares wxEventLoop class
+// Author:      Lukasz Michalski (lm@zork.pl)
+// Created:     2007-05-07
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Lukasz Michalski
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_UNIX_EVTLOOP_H_
+#define _WX_UNIX_EVTLOOP_H_
+
+#include "wx/private/fdiodispatcher.h"
+#include "wx/unix/private/timer.h"
+#include "wx/unix/pipe.h"
+
+// ----------------------------------------------------------------------------
+// wxEventLoop
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_BASE wxConsoleEventLoop : public wxEventLoopManual
+{
+public:
+    // initialize the event loop, use IsOk() to check if we were successful
+    wxConsoleEventLoop();
+
+    // implement base class pure virtuals
+    virtual bool Pending() const;
+    virtual bool Dispatch();
+    virtual void WakeUp();
+    virtual bool IsOk() const { return m_dispatcher != NULL; }
+
+protected:
+    virtual void OnNextIteration();
+
+private:
+    // pipe used for wake up messages: when a child thread wants to wake up
+    // the event loop in the main thread it writes to this pipe
+    class PipeIOHandler : public wxFDIOHandler
+    {
+    public:
+        // default ctor does nothing, call Create() to really initialize the
+        // object
+        PipeIOHandler() { }
+
+        bool Create();
+
+        // this method can be, and normally is, called from another thread
+        void WakeUp();
+
+        int GetReadFd() { return m_pipe[wxPipe::Read]; }
+
+        // implement wxFDIOHandler pure virtual methods
+        virtual void OnReadWaiting();
+        virtual void OnWriteWaiting() { }
+        virtual void OnExceptionWaiting() { }
+
+    private:
+        wxPipe m_pipe;
+    };
+
+    PipeIOHandler m_wakeupPipe;
+
+    // either wxSelectDispatcher or wxEpollDispatcher
+    wxFDIODispatcher *m_dispatcher;
+
+    DECLARE_NO_COPY_CLASS(wxConsoleEventLoop)
+};
+
+#endif // _WX_UNIX_EVTLOOP_H_
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/private/epolldispatcher.h
+// Purpose:     wxEpollDispatcher class
+// Authors:     Lukasz Michalski
+// Created:     April 2007
+// Copyright:   (c) Lukasz Michalski
+// RCS-ID:      $Id$
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_PRIVATE_EPOLLDISPATCHER_H_
+#define _WX_PRIVATE_EPOLLDISPATCHER_H_
+
+#include "wx/defs.h"
+
+#ifdef HAVE_SYS_EPOLL_H
+
+#include "wx/private/fdiodispatcher.h"
+
+class WXDLLIMPEXP_CORE wxEpollDispatcher : public wxFDIODispatcher
+{
+public:
+    // get pointer to the unique instance of this class, can return NULL if
+    // epoll() is not supported on this system
+    //
+    // do not delete the returned pointer
+    static wxEpollDispatcher *Get();
+
+    // implement base class pure virtual methods
+    virtual bool RegisterFD(int fd, wxFDIOHandler* handler, int flags = wxFDIO_ALL);
+    virtual bool ModifyFD(int fd, wxFDIOHandler* handler, int flags = wxFDIO_ALL);
+    virtual wxFDIOHandler *UnregisterFD(int fd, int flags = wxFDIO_ALL);
+    virtual void RunLoop(int timeout = TIMEOUT_INFINITE);
+
+private:
+    // ctor is private, use Get()
+    wxEpollDispatcher();
+
+    // return true if the object was successfully initialized
+    bool IsOk() const { return m_epollDescriptor != -1; }
+
+    int m_epollDescriptor;
+};
+
+#endif // HAVE_SYS_EPOLL_H
+
+#endif // _WX_PRIVATE_SOCKETEVTDISPATCH_H_
 
 /* Define if you have the <sys/select.h> header file.  */
 #undef HAVE_SYS_SELECT_H
 
+/* Define if you have the <sys/epoll.h> header file.  */
+#undef HAVE_SYS_EPOLL_H
+
 /* Define if fdopen is available.  */
 #undef HAVE_FDOPEN
 
 
 };
 
 // ========================================================================
-// wxEventLoop
+// wxGUIEventLoop
 // ========================================================================
 
 // ----------------------------------------------------------------------------
-// wxEventLoop running and exiting
+// wxGUIEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     // a pointer to the event is returned if there is one, or nil if not
     return [[NSApplication sharedApplication]
             dequeue: NO];
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     // This check is required by wxGTK but probably not really for wxCocoa
     // Keep it here to encourage developers to write cross-platform code
 
 #include "wx/apptrait.h"
 #include "wx/cmdline.h"
 #include "wx/confbase.h"
+#include "wx/evtloop.h"
 #include "wx/filename.h"
 #include "wx/msgout.h"
+#include "wx/ptr_scpd.h"
 #include "wx/tokenzr.h"
 
 #if !defined(__WXMSW__) || defined(__WXMICROWIN__)
 
 wxAppInitializerFunction wxAppConsole::ms_appInitFn = NULL;
 
+// ----------------------------------------------------------------------------
+// wxEventLoopPtr
+// ----------------------------------------------------------------------------
+
+// this defines wxEventLoopPtr
+wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
+
 // ============================================================================
 // wxAppConsole implementation
 // ============================================================================
 wxAppConsole::wxAppConsole()
 {
     m_traits = NULL;
+    m_mainLoop = NULL;
 
     ms_appInstance = this;
 
     argc = argcOrig;
     argv = argvOrig;
 
+#if wxUSE_THREADS
+    wxPendingEventsLocker = new wxCriticalSection;
+#endif
+
+    //create port specific main loop
+    m_mainLoop = CreateMainLoop();
+
 #ifndef __WXPALMOS__
     if ( m_appName.empty() && argv )
     {
     return true;
 }
 
+wxEventLoop *wxAppConsole::CreateMainLoop()
+{
+    return GetTraits()->CreateEventLoop();
+}
+
 void wxAppConsole::CleanUp()
 {
+    delete wxPendingEvents;
+    wxPendingEvents = NULL;
+
+#if wxUSE_THREADS
+    delete wxPendingEventsLocker;
+    wxPendingEventsLocker = NULL;
+#endif // wxUSE_THREADS
 }
 
 // ----------------------------------------------------------------------------
     return true;
 }
 
+int wxAppConsole::OnRun()
+{
+    return MainLoop();
+};
+
 int wxAppConsole::OnExit()
 {
 #if wxUSE_CONFIG
 
 void wxAppConsole::Exit()
 {
-    exit(-1);
+    if (m_mainLoop != NULL)
+        ExitMainLoop();
+    else
+        exit(-1);
 }
 
 // ----------------------------------------------------------------------------
 // event processing
 // ----------------------------------------------------------------------------
 
-void wxAppConsole::ProcessPendingEvents()
+int wxAppConsole::MainLoop()
 {
-#if wxUSE_THREADS
-    if ( !wxPendingEventsLocker )
-        return;
-#endif
+    wxEventLoopTiedPtr mainLoop(&m_mainLoop, CreateMainLoop());
+
+    return m_mainLoop ? m_mainLoop->Run() : -1;
+}
+
+void wxAppConsole::ExitMainLoop()
+{
+    // we should exit from the main event loop, not just any currently active
+    // (e.g. modal dialog) event loop
+    if ( m_mainLoop && m_mainLoop->IsRunning() )
+    {
+        m_mainLoop->Exit(0);
+    }
+}
 
+bool wxAppConsole::Pending()
+{
+    // use the currently active message loop here, not m_mainLoop, because if
+    // we're showing a modal dialog (with its own event loop) currently the
+    // main event loop is not running anyhow
+    wxEventLoop * const loop = wxEventLoopBase::GetActive();
+
+    return loop && loop->Pending();
+}
+
+bool wxAppConsole::Dispatch()
+{
+    // see comment in Pending()
+    wxEventLoop * const loop = wxEventLoopBase::GetActive();
+
+    return loop && loop->Dispatch();
+}
+
+bool wxAppConsole::HasPendingEvents() const
+{
     // ensure that we're the only thread to modify the pending events list
     wxENTER_CRIT_SECT( *wxPendingEventsLocker );
 
     if ( !wxPendingEvents )
     {
         wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
-        return;
+        return false;
     }
+    wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
+    return true;
+};
+
+void wxAppConsole::ProcessPendingEvents()
+{
+#if wxUSE_THREADS
+    if ( !wxPendingEventsLocker )
+        return;
+#endif
+
+    if ( !HasPendingEvents() )
+        return;
 
     // iterate until the list becomes empty
     wxList::compatibility_iterator node = wxPendingEvents->GetFirst();
     wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
 }
 
+void wxAppConsole::WakeUpIdle()
+{
+    if ( m_mainLoop )
+        m_mainLoop->WakeUp();
+}
+
+bool wxAppConsole::ProcessIdle()
+{
+    wxIdleEvent event;
+
+    event.SetEventObject(this);
+    ProcessEvent(event);
+    return event.MoreRequested();
+}
+
 int wxAppConsole::FilterEvent(wxEvent& WXUNUSED(event))
 {
     // process the events normally by default
     (handler->*func)(event);
 }
 
+// ----------------------------------------------------------------------------
+// exceptions support
+// ----------------------------------------------------------------------------
+
+#if wxUSE_EXCEPTIONS
+
+bool wxAppConsole::OnExceptionInMainLoop()
+{
+    throw;
+
+    // some compilers are too stupid to know that we never return after throw
+#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
+    return false;
+#endif
+}
+
+#endif // wxUSE_EXCEPTIONS
+
+
 #endif // wxUSE_EXCEPTIONS
 
 // ----------------------------------------------------------------------------
 
 
 #include "wx/apptrait.h"
 #include "wx/cmdline.h"
-#include "wx/evtloop.h"
 #include "wx/msgout.h"
 #include "wx/thread.h"
 #include "wx/vidmode.h"
-#include "wx/ptr_scpd.h"
 
 #ifdef __WXDEBUG__
     #if wxUSE_STACKWALKER
 
 WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete;
 
-// ----------------------------------------------------------------------------
-// wxEventLoopPtr
-// ----------------------------------------------------------------------------
-
-// this defines wxEventLoopPtr
-wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
-
 // ============================================================================
 // wxAppBase implementation
 // ============================================================================
 wxAppBase::wxAppBase()
 {
     m_topWindow = (wxWindow *)NULL;
-    
+
     m_useBestVisual = false;
     m_forceTrueColour = false;
-    
-    m_isActive = true;
 
-    m_mainLoop = NULL;
+    m_isActive = true;
 
     // We don't want to exit the app if the user code shows a dialog from its
     // OnInit() -- but this is what would happen if we set m_exitOnFrameDelete
     if ( !wxAppConsole::Initialize(argcOrig, argvOrig) )
         return false;
 
-#if wxUSE_THREADS
-    wxPendingEventsLocker = new wxCriticalSection;
-#endif
-
     wxInitializeStockLists();
 
     wxBitmap::InitStandardHandlers();
     wxPendingEvents = NULL;
 
 #if wxUSE_THREADS
-    delete wxPendingEventsLocker;
-    wxPendingEventsLocker = NULL;
-
     #if wxUSE_VALIDATORS
         // If we don't do the following, we get an apparent memory leak.
         ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker();
 
 #endif // wxUSE_CMDLINE_PARSER
 
-// ----------------------------------------------------------------------------
-// main event loop implementation
-// ----------------------------------------------------------------------------
-
-int wxAppBase::MainLoop()
-{
-    wxEventLoopTiedPtr mainLoop(&m_mainLoop, new wxEventLoop);
-
-    return m_mainLoop->Run();
-}
-
-void wxAppBase::ExitMainLoop()
-{
-    // we should exit from the main event loop, not just any currently active
-    // (e.g. modal dialog) event loop
-    if ( m_mainLoop && m_mainLoop->IsRunning() )
-    {
-        m_mainLoop->Exit(0);
-    }
-}
-
-bool wxAppBase::Pending()
-{
-    // use the currently active message loop here, not m_mainLoop, because if
-    // we're showing a modal dialog (with its own event loop) currently the
-    // main event loop is not running anyhow
-    wxEventLoop * const loop = wxEventLoop::GetActive();
-
-    return loop && loop->Pending();
-}
-
-bool wxAppBase::Dispatch()
-{
-    // see comment in Pending()
-    wxEventLoop * const loop = wxEventLoop::GetActive();
-
-    return loop && loop->Dispatch();
-}
-
 // ----------------------------------------------------------------------------
 // OnXXX() hooks
 // ----------------------------------------------------------------------------
     }
     //else: it has been changed, assume the user knows what he is doing
 
-    return MainLoop();
+    return wxAppConsole::OnRun();
 }
 
 int wxAppBase::OnExit()
     return wxAppConsole::OnExit();
 }
 
-void wxAppBase::Exit()
-{
-    ExitMainLoop();
-}
-
 wxAppTraits *wxAppBase::CreateTraits()
 {
     return new wxGUIAppTraits;
         node = node->GetNext();
     }
 
-    event.SetEventObject(this);
-    (void) ProcessEvent(event);
-    if (event.MoreRequested())
-        needMore = true;
+    needMore = wxAppConsole::ProcessIdle();
 
     wxUpdateUIEvent::ResetUpdateTime();
 
 
     win->OnInternalIdle();
 
-    if (wxIdleEvent::CanSend(win))
+    // should we send idle event to this window?
+    if ( wxIdleEvent::GetMode() == wxIDLE_PROCESS_ALL ||
+            win->HasExtraStyle(wxWS_EX_PROCESS_IDLE) )
     {
         event.SetEventObject(win);
         win->GetEventHandler()->ProcessEvent(event);
 
 }
 
-// ----------------------------------------------------------------------------
-// exceptions support
-// ----------------------------------------------------------------------------
-
-#if wxUSE_EXCEPTIONS
-
-bool wxAppBase::OnExceptionInMainLoop()
-{
-    throw;
-
-    // some compilers are too stupid to know that we never return after throw
-#if defined(__DMC__) || (defined(_MSC_VER) && _MSC_VER < 1200)
-    return false;
-#endif
-}
-
-#endif // wxUSE_EXCEPTIONS
-
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
 // ----------------------------------------------------------------------------
 
 #if wxUSE_BASE
     IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject)
     IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
+    IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
 #endif // wxUSE_BASE
 
 #if wxUSE_GUI
-    IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent)
 
 #if wxUSE_BASE
 
+wxIdleMode wxIdleEvent::sm_idleMode = wxIDLE_PROCESS_ALL;
+
 // ============================================================================
 // implementation
 // ============================================================================
 #endif
 }
 
-/*
- * Idle events
- */
-
-wxIdleMode wxIdleEvent::sm_idleMode = wxIDLE_PROCESS_ALL;
-
-// Can we send an idle event?
-bool wxIdleEvent::CanSend(wxWindow* win)
-{
-    // Don't update if we've switched global updating off
-    // and this window doesn't support updates.
-    if (win &&
-       (GetMode() == wxIDLE_PROCESS_SPECIFIED &&
-       ((win->GetExtraStyle() & wxWS_EX_PROCESS_IDLE) == 0)))
-        return false;
-
-    return true;
-}
-
 /*
  * Scroll events
  */
 
 wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL;
 
 // wxEventLoopManual is unused in the other ports
-#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__)
+#if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXDFB__) || (defined(__UNIX__) && !wxUSE_GUI)
 
 // ============================================================================
 // wxEventLoopManual implementation
     // ProcessIdle() and Dispatch() below may throw so the code here should
     // be exception-safe, hence we must use local objects for all actions we
     // should undo
-    wxEventLoopActivator activate(wx_static_cast(wxEventLoop *, this));
+    wxEventLoopActivator activate(this);
 
     // we must ensure that OnExit() is called even if an exception is thrown
     // from inside Dispatch() but we must call it from Exit() in normal
 
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/fdiodispatcher.cpp
+// Purpose:     Implementation of common wxFDIODispatcher methods
+// Author:      Vadim Zeitlin
+// Created:     2007-05-13
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vadim Zeitlin <vadim@wxwindows.org>
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+#endif //WX_PRECOMP
+
+#include "wx/private/fdiodispatcher.h"
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+wxFDIOHandler *wxFDIODispatcher::FindHandler(int fd) const
+{
+    const wxFDIOHandlerMap::const_iterator it = m_handlers.find(fd);
+
+    return it == m_handlers.end() ? NULL : it->second.handler;
+}
+
+
+bool wxFDIODispatcher::RegisterFD(int fd, wxFDIOHandler *handler, int flags)
+{
+    wxUnusedVar(flags);
+
+    wxCHECK_MSG( handler, false, _T("handler can't be NULL") );
+
+    // notice that it's not an error to register a handler for the same fd
+    // twice as it can be done with different flags -- but it is an error to
+    // register different handlers
+    wxFDIOHandlerMap::iterator i = m_handlers.find(fd);
+    if ( i != m_handlers.end() )
+    {
+        wxASSERT_MSG( i->second.handler == handler,
+                        _T("registering different handler for the same fd?") );
+        wxASSERT_MSG( i->second.flags != flags,
+                        _T("reregistering with the same flags?") );
+    }
+
+    m_handlers[fd] = wxFDIOHandlerEntry(handler, flags);
+
+    return true;
+}
+
+bool wxFDIODispatcher::ModifyFD(int fd, wxFDIOHandler *handler, int flags)
+{
+    wxUnusedVar(flags);
+
+    wxCHECK_MSG( handler, false, _T("handler can't be NULL") );
+
+    wxFDIOHandlerMap::iterator i = m_handlers.find(fd);
+    wxCHECK_MSG( i != m_handlers.end(), false,
+                    _T("modifying unregistered handler?") );
+
+    i->second = wxFDIOHandlerEntry(handler, flags);
+
+    return true;
+}
+
+wxFDIOHandler *wxFDIODispatcher::UnregisterFD(int fd, int flags)
+{
+    wxFDIOHandlerMap::iterator i = m_handlers.find(fd);
+    wxCHECK_MSG( i != m_handlers.end(), NULL,
+                    _T("unregistering unregistered handler?") );
+
+    wxFDIOHandler * const handler = i->second.handler;
+    i->second.flags &= ~flags;
+    if ( !i->second.flags )
+    {
+        // this handler is not registered for anything any more, get rid of it
+        m_handlers.erase(i);
+    }
+
+    return handler;
+}
+
 
 // Name:        src/common/gsocketiohandler.cpp
 // Purpose:     implementation of wxFDIOHandler for GSocket
 // Author:      Angel Vidal, Lukasz Michalski
-// Modified by:
 // Created:     08.24.06
 // RCS-ID:      $Id$
 // Copyright:   (c) 2006 Angel vidal
 // wxGSocketIOHandler
 // ----------------------------------------------------------------------------
 
-wxGSocketIOHandler::wxGSocketIOHandler(GSocket* socket) 
+wxGSocketIOHandler::wxGSocketIOHandler(GSocket* socket)
                   : m_socket(socket),
                     m_flags(0)
 {
 
-};
+}
 
-void wxGSocketIOHandler::OnReadWaiting(int fd)
+void wxGSocketIOHandler::OnReadWaiting()
 {
     m_socket->Detected_Read();
-};
+}
 
-void wxGSocketIOHandler::OnWriteWaiting(int fd) 
+void wxGSocketIOHandler::OnWriteWaiting()
 {
     m_socket->Detected_Write();
-};
+}
 
-void wxGSocketIOHandler::OnExceptionWaiting(int fd) 
+void wxGSocketIOHandler::OnExceptionWaiting()
 {
     m_socket->Detected_Read();
-};
+}
 
-int wxGSocketIOHandler::GetFlags() const 
+int wxGSocketIOHandler::GetFlags() const
 {
     return m_flags;
-};
+}
 
 
-void wxGSocketIOHandler::RemoveFlag(wxSelectDispatcherEntryFlags flag)
+void wxGSocketIOHandler::RemoveFlag(wxFDIODispatcherEntryFlags flag)
 {
     m_flags &= ~flag;
-};
+}
 
-void wxGSocketIOHandler::AddFlag(wxSelectDispatcherEntryFlags flag)
+void wxGSocketIOHandler::AddFlag(wxFDIODispatcherEntryFlags flag)
 {
     m_flags |= flag;
-};
+}
 
 // ----------------------------------------------------------------------------
 // GSocket interface
                                                         GSocketEvent event)
 {
   int *m_id = (int *)(socket->m_gui_dependent);
-  int c;
+  const int fd = socket->m_fd;
 
-  if (socket->m_fd == -1)
+  if ( fd == -1 )
     return;
 
+  int c;
   switch (event)
   {
     case GSOCK_LOST:       /* fall-through */
     default: return;
   }
 
-  wxGSocketIOHandler* handler = (wxGSocketIOHandler*)(wxSelectDispatcher::Get().FindHandler(socket->m_fd));
-  if (handler == NULL)
+  wxSelectDispatcher * const dispatcher = wxSelectDispatcher::Get();
+  if ( !dispatcher )
+      return;
+
+  wxGSocketIOHandler *
+      handler = (wxGSocketIOHandler*)dispatcher->FindHandler(fd);
+  if ( !handler )
   {
       handler = new wxGSocketIOHandler(socket);
-  };
+  }
 
   if (c == 0)
   {
-      m_id[0] = socket->m_fd;
-      handler->AddFlag(wxSelectInput);
+      m_id[0] = fd;
+      handler->AddFlag(wxFDIO_INPUT);
   }
   else
   {
-      m_id[1] = socket->m_fd;
-      handler->AddFlag(wxSelectOutput);
+      m_id[1] = fd;
+      handler->AddFlag(wxFDIO_OUTPUT);
   }
 
-  wxSelectDispatcher::Get().RegisterFD(socket->m_fd,handler,handler->GetFlags());
+  dispatcher->RegisterFD(fd, handler, handler->GetFlags());
 }
 
 void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket,
     default: return;
   }
 
-  wxGSocketIOHandler* handler = NULL;
-  if ( m_id[c] != -1 )
+  if ( m_id[c] == -1 )
+      return;
+
+  int fd = m_id[c];
+  m_id[c] = -1;
+
+  const wxFDIODispatcherEntryFlags flag = c == 0 ? wxFDIO_INPUT : wxFDIO_OUTPUT;
+
+  wxSelectDispatcher * const dispatcher = wxSelectDispatcher::Get();
+  if ( !dispatcher )
+      return;
+
+  wxGSocketIOHandler * const
+      handler = (wxGSocketIOHandler*)dispatcher->UnregisterFD(fd, flag);
+  if ( handler )
   {
-      if ( c == 0 )
-      {
-          handler = (wxGSocketIOHandler*)wxSelectDispatcher::Get().UnregisterFD(m_id[c], wxSelectInput);
-          if (handler != NULL)
-              handler->RemoveFlag(wxSelectInput);
-      }
-      else
-      {
-          handler = (wxGSocketIOHandler*)wxSelectDispatcher::Get().UnregisterFD(m_id[c], wxSelectOutput);
-          if (handler != NULL)
-              handler->RemoveFlag(wxSelectOutput);
-      }
-      if (handler && handler->GetFlags() == 0)
+      handler->RemoveFlag(flag);
+
+      if ( !handler->GetFlags() )
           delete handler;
   }
-
-  m_id[c] = -1;
 }
 
 void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)
 
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        src/common/socketevtdispatch.cpp
+// Name:        src/common/selectdispatcher.cpp
 // Purpose:     implements dispatcher for select() call
-// Author:      Lukasz Michalski
+// Author:      Lukasz Michalski and Vadim Zeitlin
 // Created:     December 2006
 // RCS-ID:      $Id$
 // Copyright:   (c) 2006 Lukasz Michalski
     #include "wx/hash.h"
 #endif
 
-#include <sys/time.h>
-#include <unistd.h>
-
 #ifdef HAVE_SYS_SELECT_H
-#   include <sys/select.h>
+    #include <sys/select.h>
 #endif
 
+#include <errno.h>
+
 #define wxSelectDispatcher_Trace wxT("selectdispatcher")
 
 // ============================================================================
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// wxSelectDispatcher
+// wxSelectSets
 // ----------------------------------------------------------------------------
 
-wxSelectDispatcher* wxSelectDispatcher::ms_instance = NULL;
+int wxSelectSets::ms_flags[wxSelectSets::Max] =
+{
+    wxFDIO_INPUT,
+    wxFDIO_OUTPUT,
+    wxFDIO_EXCEPTION,
+};
 
-/* static */
-wxSelectDispatcher& wxSelectDispatcher::Get()
+const char *wxSelectSets::ms_names[wxSelectSets::Max] =
 {
-    if ( !ms_instance )
-        ms_instance = new wxSelectDispatcher;
-    return *ms_instance;
-}
+    "input",
+    "output",
+    "exceptional",
+};
 
-void
-wxSelectDispatcher::RegisterFD(int fd, wxFDIOHandler* handler, int flags)
+wxSelectSets::Callback wxSelectSets::ms_handlers[wxSelectSets::Max] =
 {
-    if ((flags & wxSelectInput) == wxSelectInput) 
-    {
-        wxFD_SET(fd, &m_readset);
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for input events"),fd);
-    };
+    &wxFDIOHandler::OnReadWaiting,
+    &wxFDIOHandler::OnWriteWaiting,
+    &wxFDIOHandler::OnExceptionWaiting,
+};
 
-    if ((flags & wxSelectOutput) == wxSelectOutput)
+wxSelectSets::wxSelectSets()
+{
+    for ( int n = 0; n < Max; n++ )
     {
-        wxFD_SET(fd, &m_writeset);
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for output events"),fd);
+        wxFD_ZERO(&m_fds[n]);
     }
+}
 
-    if ((flags & wxSelectException) == wxSelectException)
+bool wxSelectSets::HasFD(int fd) const
+{
+    for ( int n = 0; n < Max; n++ )
     {
-        wxFD_SET(fd, &m_exeptset);
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for exception events"),fd);
-    };
+        if ( wxFD_ISSET(fd, &m_fds[n]) )
+            return true;
+    }
 
-    m_handlers[fd] = handler;
-    if (fd > m_maxFD)
-      m_maxFD = fd;
+    return false;
 }
 
-wxFDIOHandler*
-wxSelectDispatcher::UnregisterFD(int fd, int flags)
+bool wxSelectSets::SetFD(int fd, int flags)
 {
-    // GSocket likes to unregister -1 descriptor
-    if (fd == -1)
-      return NULL;
+    wxCHECK_MSG( fd >= 0, false, _T("invalid descriptor") );
 
-    if ((flags & wxSelectInput) == wxSelectInput)
+    for ( int n = 0; n < Max; n++ )
     {
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from input events"),fd);
-        wxFD_CLR(fd, &m_readset);
+        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, &m_fds[n]) )
+        {
+            wxFD_CLR(fd, &m_fds[n]);
+            wxLogTrace(wxSelectDispatcher_Trace,
+                       _T("Unregistered fd %d from %s events"), fd, ms_names[n]);
+        }
     }
 
-    if ((flags & wxSelectOutput) == wxSelectOutput)
-    {
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from output events"),fd);
-        wxFD_CLR(fd, &m_writeset);
-    }
+    return true;
+}
 
-    if ((flags & wxSelectException) == wxSelectException)
-    {
-        wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from exeption events"),fd);
-        wxFD_CLR(fd, &m_exeptset);
-    };
+int wxSelectSets::Select(int nfds, struct timeval *tv)
+{
+    return select(nfds, &m_fds[Read], &m_fds[Write], &m_fds[Except], tv);
+}
 
-    wxFDIOHandler* ret = NULL;
-    wxFDIOHandlerMap::const_iterator it = m_handlers.find(fd);
-    if (it != m_handlers.end())
+void wxSelectSets::Handle(int fd, wxFDIOHandler& handler) const
+{
+    for ( int n = 0; n < Max; n++ )
     {
-        ret = it->second;
-        if (!wxFD_ISSET(fd,&m_readset) && !wxFD_ISSET(fd,&m_writeset) && !wxFD_ISSET(fd,&m_exeptset)) 
+        if ( wxFD_ISSET(fd, &m_fds[n]) )
         {
-            m_handlers.erase(it);
-            if ( m_handlers.empty() )
-                m_maxFD = 0;
-        };
-    };
-    return ret;
+            wxLogTrace(wxSelectDispatcher_Trace,
+                       _T("Got %s event on fd %d"), ms_names[n], fd);
+            (handler.*ms_handlers[n])();
+        }
+    }
 }
 
-void wxSelectDispatcher::ProcessSets(fd_set* readset, fd_set* writeset, fd_set* exeptset, int max_fd)
+// ----------------------------------------------------------------------------
+// wxSelectDispatcher
+// ----------------------------------------------------------------------------
+
+static wxSelectDispatcher *gs_selectDispatcher = NULL;
+
+/* static */
+wxSelectDispatcher *wxSelectDispatcher::Get()
 {
-    // it is safe to remove handler from onXXX methods,
-    // if you unregister descriptor first.
-    wxFDIOHandlerMap::const_iterator it = m_handlers.begin();
-    for ( int i = 0; i < max_fd; i++ )
+    if ( !gs_selectDispatcher )
     {
-        wxFDIOHandler* handler = NULL;
-        if (wxFD_ISSET(i, readset)) 
-        {
-            wxLogTrace(wxSelectDispatcher_Trace,wxT("Got read event on fd %d"),i);
-            handler = FindHandler(i);
-            if (handler != NULL && wxFD_ISSET(i,&m_readset))
-                handler->OnReadWaiting(i);
-            else
-            {
-              wxLogError(wxT("Lost fd in read fdset: %d, removing"),i);
-              wxFD_CLR(i,&m_readset);
-            };
-        };
+        // the dispatcher should be only created from one thread so it should
+        // be ok to use a global without any protection here
+        gs_selectDispatcher = new wxSelectDispatcher;
+    }
 
-        if (wxFD_ISSET(i, writeset)) 
-        {
-            wxLogTrace(wxSelectDispatcher_Trace,wxT("Got write event on fd %d"),i);
-            if (handler == NULL)
-                handler = FindHandler(i);
-            if (handler != NULL && wxFD_ISSET(i,&m_writeset))
-                handler->OnWriteWaiting(i);
-            else
-            {
-              wxLogError(wxT("Lost fd in write fdset: %d, removing"),i);
-              wxFD_CLR(i,&m_writeset);
-            };
-        };
+    return gs_selectDispatcher;
+}
+
+/* static */
+void wxSelectDispatcher::DispatchPending()
+{
+    if ( gs_selectDispatcher )
+        gs_selectDispatcher->RunLoop(0);
+}
 
-        if (wxFD_ISSET(i, exeptset))
+wxSelectDispatcher::wxSelectDispatcher()
+{
+    m_maxFD = -1;
+}
+
+bool wxSelectDispatcher::RegisterFD(int fd, wxFDIOHandler *handler, int flags)
+{
+    if ( !wxFDIODispatcher::RegisterFD(fd, handler, flags) )
+        return false;
+
+    if ( !m_sets.SetFD(fd, flags) )
+       return false;
+
+    if ( fd > m_maxFD )
+      m_maxFD = fd;
+
+    return true;
+}
+
+bool wxSelectDispatcher::ModifyFD(int fd, wxFDIOHandler *handler, int flags)
+{
+    if ( !wxFDIODispatcher::ModifyFD(fd, handler, flags) )
+        return false;
+
+    wxASSERT_MSG( fd <= m_maxFD, _T("logic error: registered fd > m_maxFD?") );
+
+    return m_sets.SetFD(fd, flags);
+}
+
+wxFDIOHandler *wxSelectDispatcher::UnregisterFD(int fd, int flags)
+{
+    wxFDIOHandler * const handler = wxFDIODispatcher::UnregisterFD(fd, flags);
+
+    m_sets.ClearFD(fd, flags);
+
+    // remove the handler if we don't need it any more
+    if ( !m_sets.HasFD(fd) )
+    {
+        if ( fd == m_maxFD )
         {
-            wxLogTrace(wxSelectDispatcher_Trace,wxT("Got exception event on fd %d"),i);
-            if (handler == NULL)
-                handler = FindHandler(i);
-            if (handler != NULL && wxFD_ISSET(i,&m_writeset))
-                handler->OnExceptionWaiting(i);
-            else
+            // need to find new max fd
+            m_maxFD = -1;
+            for ( wxFDIOHandlerMap::const_iterator it = m_handlers.begin();
+                  it != m_handlers.end();
+                  ++it )
             {
-              wxLogError(wxT("Lost fd in exept fdset: %d, removing"),i);
-              wxFD_CLR(i,&m_exeptset);
-            };
-        };
-    };
+                if ( it->first > m_maxFD )
+                    m_maxFD = it->first;
+            }
+        }
+    }
+
+    return handler;
 }
 
-wxFDIOHandler* wxSelectDispatcher::FindHandler(int fd)
+void wxSelectDispatcher::ProcessSets(const wxSelectSets& sets)
 {
-    wxFDIOHandlerMap::const_iterator it = m_handlers.find(fd);
-    if (it != m_handlers.end())
-        return it->second;
-    return NULL;
-};
+    for ( int fd = 0; fd <= m_maxFD; fd++ )
+    {
+        if ( !sets.HasFD(fd) )
+            continue;
+
+        wxFDIOHandler * const handler = FindHandler(fd);
+        if ( !handler )
+        {
+            wxFAIL_MSG( _T("NULL handler in wxSelectDispatcher?") );
+            continue;
+        }
+
+        sets.Handle(fd, *handler);
+    }
+}
 
 void wxSelectDispatcher::RunLoop(int timeout)
 {
-    struct timeval tv, *ptv = NULL;
-    if ( timeout != wxSELECT_TIMEOUT_INFINITE )
+    struct timeval tv,
+                  *ptv = NULL;
+    if ( timeout != TIMEOUT_INFINITE )
     {
         ptv = &tv;
         tv.tv_sec = 0;
-        tv.tv_usec = timeout*10;
-    };
+        tv.tv_usec = timeout*1000;
+    }
 
-    int ret;
-    do
+    for ( ;; )
     {
-        fd_set readset = m_readset;
-        fd_set writeset = m_writeset;
-        fd_set exeptset = m_exeptset;
+        wxSelectSets sets = m_sets;
+
         wxStopWatch sw;
         if ( ptv && timeout )
           sw.Start(ptv->tv_usec/10);
-        ret = select(m_maxFD+1, &readset, &writeset, &exeptset, ptv);
+
+        const int ret = sets.Select(m_maxFD + 1, ptv);
         switch ( ret )
         {
-            // TODO: handle unix signals here
             case -1:
-                if ( !timeout )
+                // continue if we were interrupted by a signal, else bail out
+                if ( errno != EINTR )
                 {
-                    // it doesn't make sense to remain here
+                    wxLogSysError(_("Failed to monitor IO channels"));
                     return;
                 }
-
-                if ( ptv )
-                {
-                    ptv->tv_sec = 0;
-                    ptv->tv_usec = timeout - sw.Time()*10;
-                }
                 break;
 
-            // timeout
             case 0:
-                break;
+                // timeout expired without anything happening
+                return;
 
             default:
-                ProcessSets(&readset, &writeset, &exeptset, m_maxFD+1);
-        };
-    } while (ret != 0);
+                ProcessSets(sets);
+        }
+
+        if ( ptv )
+        {
+            timeout -= sw.Time();
+            if ( timeout <= 0 )
+                break;
+
+            ptv->tv_usec = timeout*1000;
+        }
+    }
 }
 
 // ----------------------------------------------------------------------------
 // wxSelectDispatcherModule
 // ----------------------------------------------------------------------------
 
-class wxSelectDispatcherModule: public wxModule
+class wxSelectDispatcherModule : public wxModule
 {
 public:
-    bool OnInit() { wxLog::AddTraceMask(wxSelectDispatcher_Trace); return true; }
-    void OnExit() { wxDELETE(wxSelectDispatcher::ms_instance); }
+    virtual bool OnInit() { return true; }
+    virtual void OnExit() { wxDELETE(gs_selectDispatcher); }
 
 private:
     DECLARE_DYNAMIC_CLASS(wxSelectDispatcherModule)
 
 // wxEventLoop initialization
 //-----------------------------------------------------------------------------
 
-wxIDirectFBEventBufferPtr wxEventLoop::ms_buffer;
+wxIDirectFBEventBufferPtr wxGUIEventLoop::ms_buffer;
 
-wxEventLoop::wxEventLoop()
+wxGUIEventLoop::wxGUIEventLoop()
 {
     if ( !ms_buffer )
         InitBuffer();
 }
 
 /* static */
-void wxEventLoop::InitBuffer()
+void wxGUIEventLoop::InitBuffer()
 {
     ms_buffer = wxIDirectFB::Get()->CreateEventBuffer();
 }
 
 /* static */
-void wxEventLoop::CleanUp()
+void wxGUIEventLoop::CleanUp()
 {
     ms_buffer.Reset();
 }
 
 /* static */
-wxIDirectFBEventBufferPtr wxEventLoop::GetDirectFBEventBuffer()
+wxIDirectFBEventBufferPtr wxGUIEventLoop::GetDirectFBEventBuffer()
 {
     if ( !ms_buffer )
         InitBuffer();
 // events dispatch and loop handling
 //-----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") );
 
     return ms_buffer->HasEvent();
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") );
 
     return true;
 }
 
-void wxEventLoop::WakeUp()
+void wxGUIEventLoop::WakeUp()
 {
     wxCHECK_RET( ms_buffer, _T("invalid event buffer") );
 
     ms_buffer->WakeUp();
 }
 
-void wxEventLoop::OnNextIteration()
+void wxGUIEventLoop::OnNextIteration()
 {
 #if wxUSE_TIMER
     wxGenericTimerImpl::NotifyTimers();
 
 #if wxUSE_SOCKETS
     // handle any pending socket events:
-    wxSelectDispatcher::Get().RunLoop(0);
+    wxSelectDispatcher::DispatchPending();
 #endif
 }
 
-void wxEventLoop::Yield()
+void wxGUIEventLoop::Yield()
 {
     // process all pending events:
     while ( Pending() )
 // DirectFB -> wxWidgets events translation
 //-----------------------------------------------------------------------------
 
-void wxEventLoop::HandleDFBEvent(const wxDFBEvent& event)
+void wxGUIEventLoop::HandleDFBEvent(const wxDFBEvent& event)
 {
     switch ( event.GetClass() )
     {
 
 #endif
 
 #include "wx/utils.h"
+#include "wx/evtloop.h"
 #include "wx/apptrait.h"
 #include "wx/unix/execute.h"
 
     return wxPORT_DFB;
 }
 
+
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+};
 // ----------------------------------------------------------------------------
 // display characteristics
 // ----------------------------------------------------------------------------
 
     // NOTE: gtk_window_set_modal internally calls gtk_grab_add() !
     gtk_window_set_modal(GTK_WINDOW(m_widget), TRUE);
 
-    wxEventLoop().Run();
+    wxGUIEventLoop().Run();
 
     gtk_window_set_modal(GTK_WINDOW(m_widget), FALSE);
 
 
 // wxEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return m_impl->GetExitCode();
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     bool pending;
     wxApp* app = wxTheApp;
     return pending;
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );
 
 
     {
         m_grabbed = true;
         gtk_grab_add( m_widget );
-        wxEventLoop().Run();
+        wxGUIEventLoop().Run();
         gtk_grab_remove( m_widget );
     }
 }
 
 #include "wx/unix/execute.h"
 
 #include "wx/gtk/private/timer.h"
+#include "wx/evtloop.h"
 
 #ifdef __WXDEBUG__
     #include "wx/gtk/assertdlg_gtk.h"
 // wxGUIAppTraits
 //-----------------------------------------------------------------------------
 
+wxEventLoop *wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop();
+}
+
+
 #if wxUSE_INTL
 void wxGUIAppTraits::SetLocale()
 {
 
 };
 
 // ============================================================================
-// wxEventLoop implementation
+// wxGUIEventLoop implementation
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// wxEventLoop running and exiting
+// wxGUIEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     if (wxTheApp)
     {
     return gtk_events_pending();
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );
 
 
 
 #include "wx/apptrait.h"
 #include "wx/gtk1/private/timer.h"
+#include "wx/evtloop.h"
 #include "wx/process.h"
 
 #include "wx/unix/execute.h"
     return wxPORT_GTK;
 }
 
-wxString wxGUIAppTraits::GetDesktopEnvironment() const
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
 {
-    return wxEmptyString;
+    return new wxEventLoop;
 }
 
 #if wxUSE_INTL
 
 
 #if wxMAC_USE_RUN_APP_EVENT_LOOP
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     wxEventLoopActivator activate(this);
 
     return m_exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     m_exitcode = rc;
 
 // functions only used by wxEventLoopManual-based implementation
 // ----------------------------------------------------------------------------
 
-void wxEventLoop::WakeUp()
+void wxGUIEventLoop::WakeUp()
 {
     extern void wxMacWakeUp();
 
 // low level functions used in both cases
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     EventRef theEvent;
 
            ) == noErr;
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     // TODO: we probably should do the dispatching directly from here but for
     //       now it's easier to forward to wxApp which has all the code to do
 
 #include "wx/mac/private/timer.h"
 #endif // wxUSE_GUI
 
+#include "wx/evtloop.h"
 #include "wx/mac/private.h"
 
 #if defined(__MWERKS__) && wxUSE_UNICODE
     return wxPORT_MAC;
 }
 
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
+
 wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
 {
     return new wxCarbonTimerImpl(timer);
 
     if ( x )
         // VS: YDEV is corrent, it should *not* be XDEV, because font's are
         //     only scaled according to m_scaleY
-        *x = YDEV2LOGREL(m_MGLDC->textWidth(string.c_str()));
+        *x = YDEV2LOGREL(m_MGLDC->textWidth(string.wc_str()));
     if ( y )
         *y = YDEV2LOGREL(m_MGLDC->textHeight());
     if ( descent )
 
 #endif //WX_PRECOMP
 
 #include "wx/evtloop.h"
+
+#include "wx/generic/private/timer.h"
 #include "wx/mgl/private.h"
 
 // ----------------------------------------------------------------------------
     for (;;)
     {
 #if wxUSE_TIMER
-        wxTimer::NotifyTimers();
-        MGL_wmUpdateDC(g_winMng);
+        wxGenericTimerImpl::NotifyTimers();
 #endif
+        MGL_wmUpdateDC(g_winMng);
+
         EVT_pollJoystick();
         if ( EVT_getNext(&evt, EVT_EVERYEVT) ) break;
         PM_sleep(10);
 }
 
 // ============================================================================
-// wxEventLoop implementation
+// wxGUIEventLoop implementation
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// wxEventLoop running and exiting
+// wxGUIEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     // update the display here, so that wxYield refreshes display and
     // changes take effect immediately, not after emptying events queue:
     return (bool)(EVT_peekNext(&evt, EVT_EVERYEVT));
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );
 
     m_impl->Dispatch();
     return m_impl->GetKeepLooping();
 }
+
 
 
 #include "wx/apptrait.h"
 #include "wx/process.h"
+#include "wx/evtloop.h"
 
 #include <stdarg.h>
 #include <string.h>
     return wxPORT_MGL;
 }
 
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
+
+
 void wxGetMousePosition(int* x, int* y)
 {
     MS_getPos(x, y);
 
 // wxEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     return XtAppPending( (XtAppContext)wxTheApp->GetAppContext() ) != 0;
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     XEvent event;
     XtAppContext context = (XtAppContext)wxTheApp->GetAppContext();
 // executes one main loop iteration (declared in include/wx/motif/private.h)
 // ----------------------------------------------------------------------------
 
-bool wxDoEventLoopIteration( wxEventLoop& evtLoop )
+bool wxDoEventLoopIteration( wxGUIEventLoop& evtLoop )
 {
     bool moreRequested, pendingEvents;
 
 
     return wxPORT_MOTIF;
 }
 
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
+
 wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer* timer)
 {
     return new wxMotifTimerImpl(timer);
 
 #endif
 }
 
-wxTimerImpl *
-wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
+wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
 {
-  return new wxMSWTimerImpl(timer);
+    return new wxMSWTimerImpl(timer);
+}
+
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
 }
 
 // ===========================================================================
 
 #endif //WX_PRECOMP
 
 #include "wx/apptrait.h"
+#include "wx/evtloop.h"
 #include "wx/msw/private/timer.h"
 // MBN: this is a workaround for MSVC 5: if it is not #included in
 // some wxBase file, wxRecursionGuard methods won't be exported from
     return true;
 }
 
-wxTimerImpl *
-wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
+wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
 {
     return new wxMSWTimerImpl(timer);
 }
 
+wxEventLoop *wxConsoleAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop();
+}
 
 WXDWORD wxConsoleAppTraits::WaitForThread(WXHANDLE hThread)
 {
 
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name:        msw/evtloop.cpp
+// Purpose:     implements wxEventLoop for MSW
+// Author:      Vadim Zeitlin
+// Modified by:
+// Created:     01.06.01
+// RCS-ID:      $Id$
+// Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
+// License:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #if wxUSE_GUI
+        #include "wx/window.h"
+    #endif
+    #include "wx/app.h"
+#endif //WX_PRECOMP
+
+#include "wx/evtloop.h"
+
+
+#include "wx/except.h"
+#include "wx/ptr_scpd.h"
+
+#include "wx/msw/private.h"
+
+#if wxUSE_GUI
+    #include "wx/tooltip.h"
+    #if wxUSE_THREADS
+        #include "wx/thread.h"
+
+        // define the list of MSG strutures
+        WX_DECLARE_LIST(MSG, wxMsgList);
+
+        #include "wx/listimpl.cpp"
+
+        WX_DEFINE_LIST(wxMsgList)
+    #endif // wxUSE_THREADS
+#endif //wxUSE_GUI
+
+#if wxUSE_BASE
+
+// ============================================================================
+// wxMSWEventLoopBase implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// ctor/dtor
+// ----------------------------------------------------------------------------
+
+wxMSWEventLoopBase::wxMSWEventLoopBase()
+{
+    m_shouldExit = false;
+    m_exitcode = 0;
+}
+
+// ----------------------------------------------------------------------------
+// wxEventLoop message processing dispatching
+// ----------------------------------------------------------------------------
+
+bool wxMSWEventLoopBase::Pending() const
+{
+    MSG msg;
+    return ::PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE) != 0;
+}
+
+bool wxMSWEventLoopBase::GetNextMessage(WXMSG* msg)
+{
+    wxCHECK_MSG( IsRunning(), false, _T("can't get messages if not running") );
+
+    const BOOL rc = ::GetMessage(msg, NULL, 0, 0);
+
+    if ( rc == 0 )
+    {
+        // got WM_QUIT
+        return false;
+    }
+
+    if ( rc == -1 )
+    {
+        // should never happen, but let's test for it nevertheless
+        wxLogLastError(wxT("GetMessage"));
+
+        // still break from the loop
+        return false;
+    }
+
+    return true;
+}
+
+#endif // wxUSE_BASE
+
+#if wxUSE_GUI
+
+// ============================================================================
+// GUI wxEventLoop implementation
+// ============================================================================
+
+wxWindowMSW *wxGUIEventLoop::ms_winCritical = NULL;
+
+bool wxGUIEventLoop::IsChildOfCriticalWindow(wxWindowMSW *win)
+{
+    while ( win )
+    {
+        if ( win == ms_winCritical )
+            return true;
+
+        win = win->GetParent();
+    }
+
+    return false;
+}
+
+bool wxGUIEventLoop::PreProcessMessage(WXMSG *msg)
+{
+    HWND hwnd = msg->hwnd;
+    wxWindow *wndThis = wxGetWindowFromHWND((WXHWND)hwnd);
+    wxWindow *wnd;
+
+    // this might happen if we're in a modeless dialog, or if a wx control has
+    // children which themselves were not created by wx (i.e. wxActiveX control children)
+    if ( !wndThis )
+    {
+        while ( hwnd && (::GetWindowLong(hwnd, GWL_STYLE) & WS_CHILD ))
+        {
+            hwnd = ::GetParent(hwnd);
+
+            // If the control has a wx parent, break and give the parent a chance
+            // to process the window message
+            wndThis = wxGetWindowFromHWND((WXHWND)hwnd);
+            if (wndThis != NULL)
+                break;
+        }
+
+        if ( !wndThis )
+        {
+            // this may happen if the event occurred in a standard modeless dialog (the
+            // only example of which I know of is the find/replace dialog) - then call
+            // IsDialogMessage() to make TAB navigation in it work
+
+            // NOTE: IsDialogMessage() just eats all the messages (i.e. returns true for
+            // them) if we call it for the control itself
+            return hwnd && ::IsDialogMessage(hwnd, msg) != 0;
+        }
+    }
+
+    if ( !AllowProcessing(wndThis) )
+    {
+        // not a child of critical window, so we eat the event but take care to
+        // stop an endless stream of WM_PAINTs which would have resulted if we
+        // didn't validate the invalidated part of the window
+        if ( msg->message == WM_PAINT )
+            ::ValidateRect(hwnd, NULL);
+
+        return true;
+    }
+
+#if wxUSE_TOOLTIPS
+    // we must relay WM_MOUSEMOVE events to the tooltip ctrl if we want it to
+    // popup the tooltip bubbles
+    if ( msg->message == WM_MOUSEMOVE )
+    {
+        // we should do it if one of window children has an associated tooltip
+        // (and not just if the window has a tooltip itself)
+        if ( wndThis->HasToolTips() )
+            wxToolTip::RelayEvent((WXMSG *)msg);
+    }
+#endif // wxUSE_TOOLTIPS
+
+    // allow the window to prevent certain messages from being
+    // translated/processed (this is currently used by wxTextCtrl to always
+    // grab Ctrl-C/V/X, even if they are also accelerators in some parent)
+    if ( !wndThis->MSWShouldPreProcessMessage((WXMSG *)msg) )
+    {
+        return false;
+    }
+
+    // try translations first: the accelerators override everything
+    for ( wnd = wndThis; wnd; wnd = wnd->GetParent() )
+    {
+        if ( wnd->MSWTranslateMessage((WXMSG *)msg))
+            return true;
+
+        // stop at first top level window, i.e. don't try to process the key
+        // strokes originating in a dialog using the accelerators of the parent
+        // frame - this doesn't make much sense
+        if ( wnd->IsTopLevel() )
+            break;
+    }
+
+    // now try the other hooks (kbd navigation is handled here)
+    for ( wnd = wndThis; wnd; wnd = wnd->GetParent() )
+    {
+        if ( wnd->MSWProcessMessage((WXMSG *)msg) )
+            return true;
+
+        // also stop at first top level window here, just as above because
+        // if we don't do this, pressing ESC on a modal dialog shown as child
+        // of a modal dialog with wxID_CANCEL will cause the parent dialog to
+        // be closed, for example
+        if ( wnd->IsTopLevel() )
+            break;
+    }
+
+    // no special preprocessing for this message, dispatch it normally
+    return false;
+}
+
+void wxGUIEventLoop::ProcessMessage(WXMSG *msg)
+{
+    // give us the chance to preprocess the message first
+    if ( !PreProcessMessage(msg) )
+    {
+        // if it wasn't done, dispatch it to the corresponding window
+        ::TranslateMessage(msg);
+        ::DispatchMessage(msg);
+    }
+}
+
+bool wxGUIEventLoop::Dispatch()
+{
+    MSG msg;
+    if ( !GetNextMessage(&msg) )
+        return false;
+
+#if wxUSE_THREADS
+    wxASSERT_MSG( wxThread::IsMain(),
+                  wxT("only the main thread can process Windows messages") );
+
+    static bool s_hadGuiLock = true;
+    static wxMsgList s_aSavedMessages;
+
+    // if a secondary thread owning the mutex is doing GUI calls, save all
+    // messages for later processing - we can't process them right now because
+    // it will lead to recursive library calls (and we're not reentrant)
+    if ( !wxGuiOwnedByMainThread() )
+    {
+        s_hadGuiLock = false;
+
+        // leave out WM_COMMAND messages: too dangerous, sometimes
+        // the message will be processed twice
+        if ( !wxIsWaitingForThread() || msg.message != WM_COMMAND )
+        {
+            MSG* pMsg = new MSG(msg);
+            s_aSavedMessages.Append(pMsg);
+        }
+
+        return true;
+    }
+    else
+    {
+        // have we just regained the GUI lock? if so, post all of the saved
+        // messages
+        //
+        // FIXME of course, it's not _exactly_ the same as processing the
+        //       messages normally - expect some things to break...
+        if ( !s_hadGuiLock )
+        {
+            s_hadGuiLock = true;
+
+            wxMsgList::compatibility_iterator node = s_aSavedMessages.GetFirst();
+            while (node)
+            {
+                MSG* pMsg = node->GetData();
+                s_aSavedMessages.Erase(node);
+
+                ProcessMessage(pMsg);
+                delete pMsg;
+
+                node = s_aSavedMessages.GetFirst();
+            }
+        }
+    }
+#endif // wxUSE_THREADS
+
+    ProcessMessage(&msg);
+
+    return true;
+}
+
+void wxGUIEventLoop::OnNextIteration()
+{
+#if wxUSE_THREADS
+    wxMutexGuiLeaveOrEnter();
+#endif // wxUSE_THREADS
+}
+
+void wxGUIEventLoop::WakeUp()
+{
+    ::PostMessage(NULL, WM_NULL, 0, 0);
+}
+
+#else // !wxUSE_GUI
+
+void wxConsoleEventLoop::OnNextIteration()
+{
+    if ( wxTheApp )
+        wxTheApp->ProcessPendingEvents();
+}
+
+void wxConsoleEventLoop::WakeUp()
+{
+    wxWakeUpMainThread();
+}
+
+bool wxConsoleEventLoop::Dispatch()
+{
+    MSG msg;
+    if ( !GetNextMessage(&msg) )
+        return false;
+
+    if ( msg.message == WM_TIMER )
+    {
+        TIMERPROC proc = (TIMERPROC)msg.lParam;
+        if ( proc )
+            (*proc)(NULL, 0, msg.wParam, 0);
+    }
+    else
+    {
+        wxLogDebug(_T("Ignoring unexpected message %d"), msg.message);
+    }
+
+    return !m_shouldExit;
+}
+
+#endif //wxUSE_GUI
 
 
     LRESULT rc;
 
-    if ( wnd && wxEventLoop::AllowProcessing(wnd) )
+    if ( wnd && wxGUIEventLoop::AllowProcessing(wnd) )
         rc = wnd->MSWWindowProc(message, wParam, lParam);
     else
         rc = ::DefWindowProc(hWnd, message, wParam, lParam);
 
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        src/os2/evtloop.cpp
-// Purpose:     implements wxEventLoop for PM
+// Purpose:     implements wxGUIEventLoop for PM
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     01.06.01
 }
 
 // ============================================================================
-// wxEventLoop implementation
+// wxGUIEventLoop implementation
 // ============================================================================
 
 // ----------------------------------------------------------------------------
-// wxEventLoop running and exiting
+// wxGUIEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 class CallEventLoopMethod
 {
 public:
-    typedef void (wxEventLoop::*FuncType)();
+    typedef void (wxGUIEventLoop::*FuncType)();
 
-    CallEventLoopMethod(wxEventLoop *evtLoop, FuncType fn)
+    CallEventLoopMethod(wxGUIEventLoop *evtLoop, FuncType fn)
         : m_evtLoop(evtLoop), m_fn(fn) { }
     ~CallEventLoopMethod() { (m_evtLoop->*m_fn)(); }
 
 private:
-    wxEventLoop *m_evtLoop;
+    wxGUIEventLoop *m_evtLoop;
     FuncType m_fn;
 };
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     wxEventLoopActivator activate(this);
     wxEventLoopImplTiedPtr impl(&m_impl, new wxEventLoopImpl);
 
-    CallEventLoopMethod  callOnExit(this, &wxEventLoop::OnExit);
+    CallEventLoopMethod  callOnExit(this, &wxGUIEventLoop::OnExit);
 
     for ( ;; )
     {
     return m_impl->GetExitCode();
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 }
 
 // ----------------------------------------------------------------------------
-// wxEventLoop message processing dispatching
+// wxGUIEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     QMSG msg;
     return ::WinPeekMsg(vHabmain, &msg, 0, 0, 0, PM_NOREMOVE) != 0;
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );
 
 
 
 #include "wx/apptrait.h"
 #include "wx/os2/private/timer.h"
+#include "wx/evtloop.h"
 
 #include "wx/os2/private.h"     // includes <windows.h>
 
     return new wxOS2TimerImpl(timer);
 }
 
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
 
 // ---------------------------------------------------------------------------
 // window information functions
 
 #include "wx/apptrait.h"
 #include "wx/filename.h"
 #include "wx/dynlib.h"
+#include "wx/evtloop.h"
 
 #if wxUSE_TOOLTIPS
     #include "wx/tooltip.h"
 {
     return new wxPalmOSTimerImpl(timer);
 };
+
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
 // ===========================================================================
 // wxApp implementation
 // ===========================================================================
 
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        src/palmos/evtloop.cpp
-// Purpose:     implements wxEventLoop for Palm OS
+// Purpose:     implements wxGUIEventLoop for Palm OS
 // Author:      William Osborne - minimal working wxPalmOS port
 // Modified by:
 // Created:     10.14.04
 #include <Form.h>
 
 // ============================================================================
-// wxEventLoop implementation
+// wxGUIEventLoop implementation
 // ============================================================================
 
 // ----------------------------------------------------------------------------
 // ctor/dtor
 // ----------------------------------------------------------------------------
 
-wxEventLoop::wxEventLoop()
+wxGUIEventLoop::wxGUIEventLoop()
 {
     m_shouldExit = false;
     m_exitcode = 0;
 }
 
 // ----------------------------------------------------------------------------
-// wxEventLoop message processing
+// wxGUIEventLoop message processing
 // ----------------------------------------------------------------------------
 
-void wxEventLoop::ProcessMessage(WXMSG *msg)
+void wxGUIEventLoop::ProcessMessage(WXMSG *msg)
 {
 }
 
-bool wxEventLoop::PreProcessMessage(WXMSG *msg)
+bool wxGUIEventLoop::PreProcessMessage(WXMSG *msg)
 {
     return false;
 }
 
 // ----------------------------------------------------------------------------
-// wxEventLoop running and exiting
+// wxGUIEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::IsRunning() const
+bool wxGUIEventLoop::IsRunning() const
 {
     return true;
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     status_t    error;
     EventType    event;
     return 0;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     FrmCloseAllForms();
 
 }
 
 // ----------------------------------------------------------------------------
-// wxEventLoop message processing dispatching
+// wxGUIEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     return false;
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     return false;
 }
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/unix/appunix.cpp
+// Purpose:     wxAppConsole with wxMainLoop implementation
+// Author:      Lukasz Michalski
+// Created:     28/01/2005
+// RCS-ID:      $Id$
+// Copyright:   (c) Lukasz Michalski
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#include "wx/app.h"
+#include "wx/log.h"
+#include "wx/evtloop.h"
+
+#include <signal.h>
+#include <unistd.h>
+
+bool wxAppConsoleUnix::Initialize(int& argc, wxChar** argv)
+{
+    if ( !wxAppConsole::Initialize(argc,argv) )
+        return false;
+
+    if ( !m_mainLoop->IsOk() )
+        return false;
+
+    sigemptyset(&m_signalsCaught);
+
+    return true;
+}
+
+void wxAppConsoleUnix::HandleSignal(int signal)
+{
+    wxAppConsoleUnix * const app = wxTheApp;
+    if ( !app )
+        return;
+
+    sigaddset(&(app->m_signalsCaught), signal);
+    app->WakeUpIdle();
+}
+
+void wxAppConsoleUnix::CheckSignal()
+{
+    for ( SignalHandlerHash::iterator it = m_signalHandlerHash.begin();
+          it != m_signalHandlerHash.end();
+          ++it )
+    {
+        int sig = it->first;
+        if ( sigismember(&m_signalsCaught, sig) )
+        {
+            sigdelset(&m_signalsCaught, sig);
+            (it->second)(sig);
+        }
+    }
+}
+
+bool wxAppConsoleUnix::SetSignalHandler(int signal, SignalHandler handler)
+{
+    const bool install = handler != SIG_DFL && handler != SIG_IGN;
+
+    struct sigaction sa;
+    memset(&sa, 0, sizeof(sa));
+    sa.sa_handler = &wxAppConsoleUnix::HandleSignal;
+    sa.sa_flags = SA_RESTART;
+    int res = sigaction(signal, &sa, 0);
+    if ( res != 0 )
+    {
+        wxLogSysError(_("Failed to install signal handler"));
+        return false;
+    }
+
+    if ( install )
+        m_signalHandlerHash[signal] = handler;
+    else
+        m_signalHandlerHash.erase(signal);
+
+    return true;
+}
 
 
 #include "wx/apptrait.h"
 #include "wx/unix/execute.h"
+#include "wx/evtloop.h"
 #include "wx/unix/private/timer.h"
 
 // for waitpid()
     return exitcode;
 }
 
-wxTimerImpl*
-wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
+wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
 {
     // this doesn't work yet as there is no main loop in console applications
     // (but it will be added later)
     return new wxUnixTimerImpl(timer);
 }
+
+wxEventLoop *wxConsoleAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop();
+}
+
 
--- /dev/null
+///////////////////////////////////////////////////////////////////////////////
+// Name:        src/common/epolldispatcher.cpp
+// Purpose:     implements dispatcher for epoll_wait() call
+// Author:      Lukasz Michalski
+// Created:     April 2007
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Lukasz Michalski
+// License:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// for compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#ifdef HAVE_SYS_EPOLL_H
+
+#include "wx/unix/private/epolldispatcher.h"
+#include "wx/unix/private.h"
+#include "wx/log.h"
+#include "wx/module.h"
+
+#include <sys/epoll.h>
+#include <errno.h>
+
+#define wxEpollDispatcher_Trace wxT("epolldispatcher")
+
+static wxEpollDispatcher *gs_epollDispatcher = NULL;
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// helper: return EPOLLxxx mask corresponding to the given flags (and also log
+// debugging messages about it)
+static uint32_t GetEpollMask(int flags, int fd)
+{
+    uint32_t ep = 0;
+
+    if ( flags & wxFDIO_INPUT )
+    {
+        ep |= EPOLLIN;
+        wxLogTrace(wxEpollDispatcher_Trace,
+                   _T("Registered fd %d for input events"), fd);
+    }
+
+    if ( flags & wxFDIO_OUTPUT )
+    {
+        ep |= EPOLLOUT;
+        wxLogTrace(wxEpollDispatcher_Trace,
+                   _T("Registered fd %d for output events"), fd);
+    }
+
+    if ( flags & wxFDIO_EXCEPTION )
+    {
+        ep |= EPOLLERR | EPOLLHUP;
+        wxLogTrace(wxEpollDispatcher_Trace,
+                   _T("Registered fd %d for exceptional events"), fd);
+    }
+
+    return ep;
+}
+
+// ----------------------------------------------------------------------------
+// wxEpollDispatcher
+// ----------------------------------------------------------------------------
+
+wxEpollDispatcher::wxEpollDispatcher()
+{
+    m_epollDescriptor = epoll_create(1024);
+    if ( m_epollDescriptor == -1 )
+    {
+        wxLogSysError(_("Failed to create epoll descriptor"));
+    }
+}
+
+bool wxEpollDispatcher::RegisterFD(int fd, wxFDIOHandler* handler, int flags)
+{
+    if ( !wxFDIODispatcher::RegisterFD(fd, handler, flags) )
+        return false;
+
+    epoll_event ev;
+    ev.events = GetEpollMask(flags, fd);
+    ev.data.ptr = handler;
+
+    const int ret = epoll_ctl(m_epollDescriptor, EPOLL_CTL_ADD, fd, &ev);
+    if ( ret != 0 )
+    {
+        wxLogSysError(_("Failed to add descriptor %d to epoll descriptor %d"),
+                      fd, m_epollDescriptor);
+
+        return false;
+    }
+
+    return true;
+}
+
+bool wxEpollDispatcher::ModifyFD(int fd, wxFDIOHandler* handler, int flags)
+{
+    if ( !wxFDIODispatcher::ModifyFD(fd, handler, flags) )
+        return false;
+
+    epoll_event ev;
+    ev.events = GetEpollMask(flags, fd);
+    ev.data.ptr = handler;
+
+    const int ret = epoll_ctl(m_epollDescriptor, EPOLL_CTL_MOD, fd, &ev);
+    if ( ret != 0 )
+    {
+        wxLogSysError(_("Failed to modify descriptor %d in epoll descriptor %d"),
+                      fd, m_epollDescriptor);
+
+        return false;
+    }
+
+    return true;
+}
+
+wxFDIOHandler *wxEpollDispatcher::UnregisterFD(int fd, int flags)
+{
+    wxFDIOHandler * const handler = wxFDIODispatcher::UnregisterFD(fd, flags);
+    if ( !handler )
+        return NULL;
+
+    epoll_event ev;
+    ev.events = 0;
+    ev.data.ptr = NULL;
+
+    if ( epoll_ctl(m_epollDescriptor, EPOLL_CTL_DEL, fd, &ev) != 0 )
+    {
+        wxLogSysError(_("Failed to unregister descriptor %d from epoll descriptor %d"),
+                      fd, m_epollDescriptor);
+    }
+
+    return handler;
+}
+
+void wxEpollDispatcher::RunLoop(int timeout)
+{
+    epoll_event events[16];
+
+    const int e_num = epoll_wait
+                      (
+                        m_epollDescriptor,
+                        events,
+                        WXSIZEOF(events),
+                        timeout == TIMEOUT_INFINITE ? -1 : timeout
+                      );
+
+    if ( e_num == -1 )
+    {
+        if ( errno != EINTR )
+        {
+            wxLogSysError(_("Waiting for IO on epoll descriptor %d failed"),
+                          m_epollDescriptor);
+            return;
+        }
+    }
+
+    for ( epoll_event *p = events; p < events + e_num; p++ )
+    {
+        wxFDIOHandler * const handler = (wxFDIOHandler *)(p->data.ptr);
+        if ( !handler )
+        {
+            wxFAIL_MSG( _T("NULL handler in epoll_event?") );
+            continue;
+        }
+
+        if ( p->events & EPOLLIN )
+            handler->OnReadWaiting();
+
+        if ( p->events & EPOLLOUT )
+            handler->OnWriteWaiting();
+
+        if ( p->events & (EPOLLERR | EPOLLHUP) )
+            handler->OnExceptionWaiting();
+    }
+}
+
+/* static */
+wxEpollDispatcher *wxEpollDispatcher::Get()
+{
+    if ( !gs_epollDispatcher )
+    {
+        gs_epollDispatcher = new wxEpollDispatcher;
+        if ( !gs_epollDispatcher->IsOk() )
+        {
+            delete gs_epollDispatcher;
+            gs_epollDispatcher = NULL;
+        }
+    }
+
+    return gs_epollDispatcher;
+}
+
+// ----------------------------------------------------------------------------
+// wxEpollDispatcherModule
+// ----------------------------------------------------------------------------
+
+class wxEpollDispatcherModule : public wxModule
+{
+public:
+    wxEpollDispatcherModule() { }
+
+    virtual bool OnInit() { return true; }
+    virtual void OnExit() { wxDELETE(gs_epollDispatcher); }
+
+    DECLARE_DYNAMIC_CLASS(wxEpollDispatcherModule)
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxEpollDispatcherModule, wxModule)
+
+#endif // HAVE_SYS_EPOLL_H
 
--- /dev/null
+/////////////////////////////////////////////////////////////////////////////
+// Name:        src/unix/evtloopunix.cpp
+// Purpose:     wxEventLoop implementation
+// Author:      Lukasz Michalski (lm@zork.pl)
+// Created:     2007-05-07
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 Zork Lukasz Michalski
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ===========================================================================
+// declarations
+// ===========================================================================
+
+// ---------------------------------------------------------------------------
+// headers
+// ---------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#include "wx/evtloop.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/app.h"
+    #include "wx/log.h"
+#endif
+
+#include <errno.h>
+#include "wx/thread.h"
+#include "wx/module.h"
+#include "wx/generic/private/timer.h"
+#include "wx/unix/private/epolldispatcher.h"
+#include "wx/private/selectdispatcher.h"
+
+#define TRACE_EVENTS _T("events")
+
+// ===========================================================================
+// wxEventLoop::PipeIOHandler implementation
+// ===========================================================================
+
+// ----------------------------------------------------------------------------
+// initialization
+// ----------------------------------------------------------------------------
+
+bool wxConsoleEventLoop::PipeIOHandler::Create()
+{
+    if ( !m_pipe.Create() )
+    {
+        wxLogError(_("Failed to create wake up pipe used by event loop."));
+        return false;
+    }
+
+    const int fdRead = GetReadFd();
+
+    int flags = fcntl(fdRead, F_GETFL, 0);
+    if ( flags == -1 || fcntl(fdRead, F_SETFL, flags | O_NONBLOCK) == -1 )
+    {
+        wxLogSysError(_("Failed to switch wake up pipe to non-blocking mode"));
+        return false;
+    }
+
+    wxLogTrace(TRACE_EVENTS, wxT("Wake up pipe (%d, %d) created"),
+               fdRead, m_pipe[wxPipe::Write]);
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// wakeup handling
+// ----------------------------------------------------------------------------
+
+void wxConsoleEventLoop::PipeIOHandler::WakeUp()
+{
+    if ( write(m_pipe[wxPipe::Write], "s", 1) != 1 )
+    {
+        // don't use wxLog here, we can be in another thread and this could
+        // result in dead locks
+        perror("write(wake up pipe)");
+    }
+}
+
+void wxConsoleEventLoop::PipeIOHandler::OnReadWaiting()
+{
+    // got wakeup from child thread: read all data available in pipe just to
+    // make it empty (evevn though we write one byte at a time from WakeUp(),
+    // it could have been called several times)
+    char buf[4];
+    for ( ;; )
+    {
+        const int size = read(GetReadFd(), buf, WXSIZEOF(buf));
+
+        if ( size == 0 || (size == -1 && errno == EAGAIN) )
+        {
+            // nothing left in the pipe (EAGAIN is expected for an FD with
+            // O_NONBLOCK)
+            break;
+        }
+
+        if ( size == -1 )
+        {
+            wxLogSysError(_("Failed to read from wake-up pipe"));
+
+            break;
+        }
+    }
+
+    wxTheApp->ProcessPendingEvents();
+}
+
+// ===========================================================================
+// wxEventLoop implementation
+// ===========================================================================
+
+//-----------------------------------------------------------------------------
+// initialization
+//-----------------------------------------------------------------------------
+
+wxConsoleEventLoop::wxConsoleEventLoop()
+{
+    if ( !m_wakeupPipe.Create() )
+    {
+        m_dispatcher = NULL;
+        return;
+    }
+
+#ifdef HAVE_SYS_EPOLL_H
+    m_dispatcher = wxEpollDispatcher::Get();
+    if ( !m_dispatcher )
+#endif // HAVE_SYS_EPOLL_H
+    {
+        m_dispatcher = wxSelectDispatcher::Get();
+    }
+
+    wxCHECK_RET( m_dispatcher, _T("failed to create IO dispatcher") );
+
+    m_dispatcher->RegisterFD
+                  (
+                    m_wakeupPipe.GetReadFd(),
+                    &m_wakeupPipe,
+                    wxFDIO_INPUT
+                  );
+};
+
+//-----------------------------------------------------------------------------
+// events dispatch and loop handling
+//-----------------------------------------------------------------------------
+
+bool wxConsoleEventLoop::Pending() const
+{
+    return wxTheApp->HasPendingEvents();
+}
+
+bool wxConsoleEventLoop::Dispatch()
+{
+    wxTheApp->ProcessPendingEvents();
+    return true;
+}
+
+void wxConsoleEventLoop::WakeUp()
+{
+    m_wakeupPipe.WakeUp();
+}
+
+void wxConsoleEventLoop::OnNextIteration()
+{
+    // calculate the timeout until the next timer expiration
+    int timeout;
+
+#if wxUSE_TIMER
+    wxUsecClock_t nextTimer;
+    if ( wxTimerScheduler::Get().GetNext(&nextTimer) )
+    {
+        // timeout is in ms
+        timeout = (nextTimer / 1000).ToLong();
+    }
+    else // no timers, we can block forever
+#endif // wxUSE_TIMER
+    {
+        timeout = wxFDIODispatcher::TIMEOUT_INFINITE;
+    }
+
+    m_dispatcher->RunLoop(timeout);
+
+#if wxUSE_TIMER
+    wxTimerScheduler::Get().NotifyExpired();
+#endif
+
+    // call the signal handlers for any signals we caught recently
+    wxTheApp->CheckSignal();
+}
+
 
 // wxEventLoop running and exiting
 // ----------------------------------------------------------------------------
 
-wxEventLoop::~wxEventLoop()
+wxGUIEventLoop::~wxGUIEventLoop()
 {
     wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
 }
 
-int wxEventLoop::Run()
+int wxGUIEventLoop::Run()
 {
     // event loops are not recursive, you need to create another loop!
     wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
     return exitcode;
 }
 
-void wxEventLoop::Exit(int rc)
+void wxGUIEventLoop::Exit(int rc)
 {
     wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
 
 // wxEventLoop message processing dispatching
 // ----------------------------------------------------------------------------
 
-bool wxEventLoop::Pending() const
+bool wxGUIEventLoop::Pending() const
 {
     XFlush( wxGlobalDisplay() );
     return (XPending( wxGlobalDisplay() ) > 0);
 }
 
-bool wxEventLoop::Dispatch()
+bool wxGUIEventLoop::Dispatch()
 {
     XEvent event;
 
             // An X11 event was pending, get it
             if (wxFD_ISSET( fd, &readset ))
                 XNextEvent( wxGlobalDisplay(), &event );
-        }    
+        }
 #endif
     }
     else
 
 #if wxUSE_SOCKETS
     // handle any pending socket events:
-    wxSelectDispatcher::Get().RunLoop(0);
+    wxSelectDispatcher::DispatchPending();
 #endif
 
     (void) m_impl->ProcessEvent( &event );
 
 
 #include "wx/apptrait.h"
 #include "wx/generic/private/timer.h"
+#include "wx/evtloop.h"
 
 #include <ctype.h>
 #include <stdarg.h>
     return wxPORT_X11;
 }
 
+wxEventLoop* wxGUIAppTraits::CreateEventLoop()
+{
+    return new wxEventLoop;
+}
+
 // ----------------------------------------------------------------------------
 // display info
 // ----------------------------------------------------------------------------
 
 wx/xtistrm.h
 wx/zipstrm.h
 wx/zstream.h
+wx/unix/app.h
 wx/unix/apptbase.h
 wx/unix/apptrait.h
 wx/unix/execute.h
+wx/unix/evtloop.h
 wx/unix/mimetype.h
 wx/unix/pipe.h
 wx/unix/private.h
 
 wx/xtistrm.h
 wx/zipstrm.h
 wx/zstream.h
+wx/unix/app.h
 wx/unix/apptbase.h
 wx/unix/apptrait.h
 wx/unix/execute.h
+wx/unix/evtloop.h
 wx/unix/mimetype.h
 wx/unix/pipe.h
 wx/unix/private.h
 
 wx/xtistrm.h
 wx/zipstrm.h
 wx/zstream.h
+wx/unix/app.h
 wx/unix/apptbase.h
 wx/unix/apptrait.h
 wx/unix/execute.h
+wx/unix/evtloop.h
 wx/unix/mimetype.h
 wx/unix/pipe.h
 wx/unix/private.h