implement event loop for console applications (heavily modified patch 1715735)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-05-14 23:43:39 +00:00
parent 9e9f08b5ed
commit b46b1d59d6
72 changed files with 3181 additions and 1128 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -54,9 +54,14 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<!-- UNIX --> <!-- UNIX -->
<!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- --> <!-- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- -->
<set var="BASE_UNIX_SRC" hints="files"> <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/baseunix.cpp
src/unix/dir.cpp src/unix/dir.cpp
src/unix/dlunix.cpp src/unix/dlunix.cpp
src/unix/epolldispatcher.cpp
src/unix/evtloopunix.cpp
src/unix/mimetype.cpp src/unix/mimetype.cpp
src/unix/snglinst.cpp src/unix/snglinst.cpp
src/unix/stackwalk.cpp src/unix/stackwalk.cpp
@@ -68,9 +73,11 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/unix/utilsunx.cpp src/unix/utilsunx.cpp
</set> </set>
<set var="BASE_UNIX_HDR" hints="files"> <set var="BASE_UNIX_HDR" hints="files">
wx/unix/app.h
wx/unix/apptbase.h wx/unix/apptbase.h
wx/unix/apptrait.h wx/unix/apptrait.h
wx/unix/execute.h wx/unix/execute.h
wx/unix/evtloop.h
wx/unix/mimetype.h wx/unix/mimetype.h
wx/unix/pipe.h wx/unix/pipe.h
wx/unix/private.h wx/unix/private.h
@@ -101,6 +108,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/msw/utilsexc.cpp src/msw/utilsexc.cpp
</set> </set>
<set var="BASE_AND_GUI_WIN32_SRC" hints="files"> <set var="BASE_AND_GUI_WIN32_SRC" hints="files">
src/msw/evtloopmsw.cpp
src/msw/main.cpp src/msw/main.cpp
src/msw/mslu.cpp src/msw/mslu.cpp
src/msw/volume.cpp src/msw/volume.cpp
@@ -199,7 +207,11 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<!-- Base files used only by OS X builds (not CarbonLib or Classic) --> <!-- Base files used only by OS X builds (not CarbonLib or Classic) -->
<set var="BASE_MACOSX_WXMAC_SRC" hints="files"> <set var="BASE_MACOSX_WXMAC_SRC" hints="files">
$(BASE_MAC_SRC) $(BASE_MAC_SRC)
src/common/fdiodispatcher.cpp
src/common/selectdispatcher.cpp
src/unix/appunix.cpp
src/unix/baseunix.cpp src/unix/baseunix.cpp
src/unix/evtloopunix.cpp
src/unix/dlunix.cpp src/unix/dlunix.cpp
src/unix/snglinst.cpp src/unix/snglinst.cpp
src/unix/stdpaths.cpp src/unix/stdpaths.cpp
@@ -207,8 +219,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
</set> </set>
<set var="BASE_MACOSX_WXMAC_HDR" hints="files"> <set var="BASE_MACOSX_WXMAC_HDR" hints="files">
$(BASE_MAC_HDR) $(BASE_MAC_HDR)
wx/unix/app.h
wx/unix/apptbase.h wx/unix/apptbase.h
wx/unix/apptrait.h wx/unix/apptrait.h
wx/unix/evtloop.h
wx/unix/stdpaths.h wx/unix/stdpaths.h
</set> </set>
@@ -308,6 +322,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/dynlib.cpp src/common/dynlib.cpp
src/common/dynload.cpp src/common/dynload.cpp
src/common/encconv.cpp src/common/encconv.cpp
src/common/evtloopcmn.cpp
src/common/extended.c src/common/extended.c
src/common/ffile.cpp src/common/ffile.cpp
src/common/file.cpp src/common/file.cpp
@@ -613,7 +628,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/common/dpycmn.cpp src/common/dpycmn.cpp
src/common/dseldlg.cpp src/common/dseldlg.cpp
src/common/effects.cpp src/common/effects.cpp
src/common/evtloopcmn.cpp
src/common/fddlgcmn.cpp src/common/fddlgcmn.cpp
src/common/filepickercmn.cpp src/common/filepickercmn.cpp
src/common/fontpickercmn.cpp src/common/fontpickercmn.cpp
@@ -1417,7 +1431,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<set var="X11_LOWLEVEL_SRC" hints="files"> <set var="X11_LOWLEVEL_SRC" hints="files">
$(XWIN_LOWLEVEL_SRC) $(XWIN_LOWLEVEL_SRC)
src/common/gsocketiohandler.cpp src/common/gsocketiohandler.cpp
src/common/selectdispatcher.cpp
src/generic/icon.cpp src/generic/icon.cpp
src/generic/timer.cpp src/generic/timer.cpp
src/x11/app.cpp src/x11/app.cpp
@@ -1505,7 +1518,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
src/msw/dib.cpp src/msw/dib.cpp
src/msw/display.cpp src/msw/display.cpp
src/msw/enhmeta.cpp src/msw/enhmeta.cpp
src/msw/evtloop.cpp
src/msw/font.cpp src/msw/font.cpp
src/msw/fontenum.cpp src/msw/fontenum.cpp
src/msw/fontutil.cpp src/msw/fontutil.cpp
@@ -1835,7 +1847,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
<set var="DFB_LOWLEVEL_SRC" hints="files"> <set var="DFB_LOWLEVEL_SRC" hints="files">
src/common/fontmgrcmn.cpp src/common/fontmgrcmn.cpp
src/common/gsocketiohandler.cpp src/common/gsocketiohandler.cpp
src/common/selectdispatcher.cpp
src/generic/caret.cpp src/generic/caret.cpp
src/generic/colour.cpp src/generic/colour.cpp
src/generic/icon.cpp src/generic/icon.cpp

View File

@@ -309,6 +309,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_dynlib.obj \ $(OBJS)\monodll_dynlib.obj \
$(OBJS)\monodll_dynload.obj \ $(OBJS)\monodll_dynload.obj \
$(OBJS)\monodll_encconv.obj \ $(OBJS)\monodll_encconv.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_extended.obj \ $(OBJS)\monodll_extended.obj \
$(OBJS)\monodll_ffile.obj \ $(OBJS)\monodll_ffile.obj \
$(OBJS)\monodll_file.obj \ $(OBJS)\monodll_file.obj \
@@ -387,6 +388,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_fs_mem.obj \ $(OBJS)\monodll_fs_mem.obj \
$(OBJS)\monodll_msgout.obj \ $(OBJS)\monodll_msgout.obj \
$(OBJS)\monodll_utilscmn.obj \ $(OBJS)\monodll_utilscmn.obj \
$(OBJS)\monodll_evtloopmsw.obj \
$(OBJS)\monodll_main.obj \ $(OBJS)\monodll_main.obj \
$(OBJS)\monodll_mslu.obj \ $(OBJS)\monodll_mslu.obj \
$(OBJS)\monodll_volume.obj \ $(OBJS)\monodll_volume.obj \
@@ -441,6 +443,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_dynlib.obj \ $(OBJS)\monolib_dynlib.obj \
$(OBJS)\monolib_dynload.obj \ $(OBJS)\monolib_dynload.obj \
$(OBJS)\monolib_encconv.obj \ $(OBJS)\monolib_encconv.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_extended.obj \ $(OBJS)\monolib_extended.obj \
$(OBJS)\monolib_ffile.obj \ $(OBJS)\monolib_ffile.obj \
$(OBJS)\monolib_file.obj \ $(OBJS)\monolib_file.obj \
@@ -519,6 +522,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_fs_mem.obj \ $(OBJS)\monolib_fs_mem.obj \
$(OBJS)\monolib_msgout.obj \ $(OBJS)\monolib_msgout.obj \
$(OBJS)\monolib_utilscmn.obj \ $(OBJS)\monolib_utilscmn.obj \
$(OBJS)\monolib_evtloopmsw.obj \
$(OBJS)\monolib_main.obj \ $(OBJS)\monolib_main.obj \
$(OBJS)\monolib_mslu.obj \ $(OBJS)\monolib_mslu.obj \
$(OBJS)\monolib_volume.obj \ $(OBJS)\monolib_volume.obj \
@@ -571,6 +575,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_dynlib.obj \ $(OBJS)\basedll_dynlib.obj \
$(OBJS)\basedll_dynload.obj \ $(OBJS)\basedll_dynload.obj \
$(OBJS)\basedll_encconv.obj \ $(OBJS)\basedll_encconv.obj \
$(OBJS)\basedll_evtloopcmn.obj \
$(OBJS)\basedll_extended.obj \ $(OBJS)\basedll_extended.obj \
$(OBJS)\basedll_ffile.obj \ $(OBJS)\basedll_ffile.obj \
$(OBJS)\basedll_file.obj \ $(OBJS)\basedll_file.obj \
@@ -649,6 +654,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_fs_mem.obj \ $(OBJS)\basedll_fs_mem.obj \
$(OBJS)\basedll_msgout.obj \ $(OBJS)\basedll_msgout.obj \
$(OBJS)\basedll_utilscmn.obj \ $(OBJS)\basedll_utilscmn.obj \
$(OBJS)\basedll_evtloopmsw.obj \
$(OBJS)\basedll_main.obj \ $(OBJS)\basedll_main.obj \
$(OBJS)\basedll_mslu.obj \ $(OBJS)\basedll_mslu.obj \
$(OBJS)\basedll_volume.obj $(OBJS)\basedll_volume.obj
@@ -685,6 +691,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_dynlib.obj \ $(OBJS)\baselib_dynlib.obj \
$(OBJS)\baselib_dynload.obj \ $(OBJS)\baselib_dynload.obj \
$(OBJS)\baselib_encconv.obj \ $(OBJS)\baselib_encconv.obj \
$(OBJS)\baselib_evtloopcmn.obj \
$(OBJS)\baselib_extended.obj \ $(OBJS)\baselib_extended.obj \
$(OBJS)\baselib_ffile.obj \ $(OBJS)\baselib_ffile.obj \
$(OBJS)\baselib_file.obj \ $(OBJS)\baselib_file.obj \
@@ -763,6 +770,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_fs_mem.obj \ $(OBJS)\baselib_fs_mem.obj \
$(OBJS)\baselib_msgout.obj \ $(OBJS)\baselib_msgout.obj \
$(OBJS)\baselib_utilscmn.obj \ $(OBJS)\baselib_utilscmn.obj \
$(OBJS)\baselib_evtloopmsw.obj \
$(OBJS)\baselib_main.obj \ $(OBJS)\baselib_main.obj \
$(OBJS)\baselib_mslu.obj \ $(OBJS)\baselib_mslu.obj \
$(OBJS)\baselib_volume.obj $(OBJS)\baselib_volume.obj
@@ -824,6 +832,7 @@ COREDLL_OBJECTS = \
$(OBJS)\coredll_fs_mem.obj \ $(OBJS)\coredll_fs_mem.obj \
$(OBJS)\coredll_msgout.obj \ $(OBJS)\coredll_msgout.obj \
$(OBJS)\coredll_utilscmn.obj \ $(OBJS)\coredll_utilscmn.obj \
$(OBJS)\coredll_evtloopmsw.obj \
$(OBJS)\coredll_main.obj \ $(OBJS)\coredll_main.obj \
$(OBJS)\coredll_mslu.obj \ $(OBJS)\coredll_mslu.obj \
$(OBJS)\coredll_volume.obj \ $(OBJS)\coredll_volume.obj \
@@ -842,6 +851,7 @@ CORELIB_OBJECTS = \
$(OBJS)\corelib_fs_mem.obj \ $(OBJS)\corelib_fs_mem.obj \
$(OBJS)\corelib_msgout.obj \ $(OBJS)\corelib_msgout.obj \
$(OBJS)\corelib_utilscmn.obj \ $(OBJS)\corelib_utilscmn.obj \
$(OBJS)\corelib_evtloopmsw.obj \
$(OBJS)\corelib_main.obj \ $(OBJS)\corelib_main.obj \
$(OBJS)\corelib_mslu.obj \ $(OBJS)\corelib_mslu.obj \
$(OBJS)\corelib_volume.obj \ $(OBJS)\corelib_volume.obj \
@@ -1497,7 +1507,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.obj \ $(OBJS)\monodll_dib.obj \
$(OBJS)\monodll_display.obj \ $(OBJS)\monodll_display.obj \
$(OBJS)\monodll_enhmeta.obj \ $(OBJS)\monodll_enhmeta.obj \
$(OBJS)\monodll_evtloop.obj \
$(OBJS)\monodll_font.obj \ $(OBJS)\monodll_font.obj \
$(OBJS)\monodll_fontenum.obj \ $(OBJS)\monodll_fontenum.obj \
$(OBJS)\monodll_fontutil.obj \ $(OBJS)\monodll_fontutil.obj \
@@ -1611,7 +1620,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.obj \ $(OBJS)\monodll_dpycmn.obj \
$(OBJS)\monodll_dseldlg.obj \ $(OBJS)\monodll_dseldlg.obj \
$(OBJS)\monodll_effects.obj \ $(OBJS)\monodll_effects.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_fddlgcmn.obj \ $(OBJS)\monodll_fddlgcmn.obj \
$(OBJS)\monodll_filepickercmn.obj \ $(OBJS)\monodll_filepickercmn.obj \
$(OBJS)\monodll_fontpickercmn.obj \ $(OBJS)\monodll_fontpickercmn.obj \
@@ -1723,7 +1731,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.obj \ $(OBJS)\monodll_dib.obj \
$(OBJS)\monodll_display.obj \ $(OBJS)\monodll_display.obj \
$(OBJS)\monodll_enhmeta.obj \ $(OBJS)\monodll_enhmeta.obj \
$(OBJS)\monodll_evtloop.obj \
$(OBJS)\monodll_font.obj \ $(OBJS)\monodll_font.obj \
$(OBJS)\monodll_fontenum.obj \ $(OBJS)\monodll_fontenum.obj \
$(OBJS)\monodll_fontutil.obj \ $(OBJS)\monodll_fontutil.obj \
@@ -1840,7 +1847,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.obj \ $(OBJS)\monodll_dpycmn.obj \
$(OBJS)\monodll_dseldlg.obj \ $(OBJS)\monodll_dseldlg.obj \
$(OBJS)\monodll_effects.obj \ $(OBJS)\monodll_effects.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_fddlgcmn.obj \ $(OBJS)\monodll_fddlgcmn.obj \
$(OBJS)\monodll_filepickercmn.obj \ $(OBJS)\monodll_filepickercmn.obj \
$(OBJS)\monodll_fontpickercmn.obj \ $(OBJS)\monodll_fontpickercmn.obj \
@@ -2131,7 +2137,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.obj \ $(OBJS)\monolib_dib.obj \
$(OBJS)\monolib_display.obj \ $(OBJS)\monolib_display.obj \
$(OBJS)\monolib_enhmeta.obj \ $(OBJS)\monolib_enhmeta.obj \
$(OBJS)\monolib_evtloop.obj \
$(OBJS)\monolib_font.obj \ $(OBJS)\monolib_font.obj \
$(OBJS)\monolib_fontenum.obj \ $(OBJS)\monolib_fontenum.obj \
$(OBJS)\monolib_fontutil.obj \ $(OBJS)\monolib_fontutil.obj \
@@ -2245,7 +2250,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.obj \ $(OBJS)\monolib_dpycmn.obj \
$(OBJS)\monolib_dseldlg.obj \ $(OBJS)\monolib_dseldlg.obj \
$(OBJS)\monolib_effects.obj \ $(OBJS)\monolib_effects.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_fddlgcmn.obj \ $(OBJS)\monolib_fddlgcmn.obj \
$(OBJS)\monolib_filepickercmn.obj \ $(OBJS)\monolib_filepickercmn.obj \
$(OBJS)\monolib_fontpickercmn.obj \ $(OBJS)\monolib_fontpickercmn.obj \
@@ -2357,7 +2361,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.obj \ $(OBJS)\monolib_dib.obj \
$(OBJS)\monolib_display.obj \ $(OBJS)\monolib_display.obj \
$(OBJS)\monolib_enhmeta.obj \ $(OBJS)\monolib_enhmeta.obj \
$(OBJS)\monolib_evtloop.obj \
$(OBJS)\monolib_font.obj \ $(OBJS)\monolib_font.obj \
$(OBJS)\monolib_fontenum.obj \ $(OBJS)\monolib_fontenum.obj \
$(OBJS)\monolib_fontutil.obj \ $(OBJS)\monolib_fontutil.obj \
@@ -2474,7 +2477,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.obj \ $(OBJS)\monolib_dpycmn.obj \
$(OBJS)\monolib_dseldlg.obj \ $(OBJS)\monolib_dseldlg.obj \
$(OBJS)\monolib_effects.obj \ $(OBJS)\monolib_effects.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_fddlgcmn.obj \ $(OBJS)\monolib_fddlgcmn.obj \
$(OBJS)\monolib_filepickercmn.obj \ $(OBJS)\monolib_filepickercmn.obj \
$(OBJS)\monolib_fontpickercmn.obj \ $(OBJS)\monolib_fontpickercmn.obj \
@@ -2679,7 +2681,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.obj \ $(OBJS)\coredll_dib.obj \
$(OBJS)\coredll_display.obj \ $(OBJS)\coredll_display.obj \
$(OBJS)\coredll_enhmeta.obj \ $(OBJS)\coredll_enhmeta.obj \
$(OBJS)\coredll_evtloop.obj \
$(OBJS)\coredll_font.obj \ $(OBJS)\coredll_font.obj \
$(OBJS)\coredll_fontenum.obj \ $(OBJS)\coredll_fontenum.obj \
$(OBJS)\coredll_fontutil.obj \ $(OBJS)\coredll_fontutil.obj \
@@ -2793,7 +2794,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.obj \ $(OBJS)\coredll_dpycmn.obj \
$(OBJS)\coredll_dseldlg.obj \ $(OBJS)\coredll_dseldlg.obj \
$(OBJS)\coredll_effects.obj \ $(OBJS)\coredll_effects.obj \
$(OBJS)\coredll_evtloopcmn.obj \
$(OBJS)\coredll_fddlgcmn.obj \ $(OBJS)\coredll_fddlgcmn.obj \
$(OBJS)\coredll_filepickercmn.obj \ $(OBJS)\coredll_filepickercmn.obj \
$(OBJS)\coredll_fontpickercmn.obj \ $(OBJS)\coredll_fontpickercmn.obj \
@@ -2905,7 +2905,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.obj \ $(OBJS)\coredll_dib.obj \
$(OBJS)\coredll_display.obj \ $(OBJS)\coredll_display.obj \
$(OBJS)\coredll_enhmeta.obj \ $(OBJS)\coredll_enhmeta.obj \
$(OBJS)\coredll_evtloop.obj \
$(OBJS)\coredll_font.obj \ $(OBJS)\coredll_font.obj \
$(OBJS)\coredll_fontenum.obj \ $(OBJS)\coredll_fontenum.obj \
$(OBJS)\coredll_fontutil.obj \ $(OBJS)\coredll_fontutil.obj \
@@ -3022,7 +3021,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.obj \ $(OBJS)\coredll_dpycmn.obj \
$(OBJS)\coredll_dseldlg.obj \ $(OBJS)\coredll_dseldlg.obj \
$(OBJS)\coredll_effects.obj \ $(OBJS)\coredll_effects.obj \
$(OBJS)\coredll_evtloopcmn.obj \
$(OBJS)\coredll_fddlgcmn.obj \ $(OBJS)\coredll_fddlgcmn.obj \
$(OBJS)\coredll_filepickercmn.obj \ $(OBJS)\coredll_filepickercmn.obj \
$(OBJS)\coredll_fontpickercmn.obj \ $(OBJS)\coredll_fontpickercmn.obj \
@@ -3138,7 +3136,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.obj \ $(OBJS)\corelib_dib.obj \
$(OBJS)\corelib_display.obj \ $(OBJS)\corelib_display.obj \
$(OBJS)\corelib_enhmeta.obj \ $(OBJS)\corelib_enhmeta.obj \
$(OBJS)\corelib_evtloop.obj \
$(OBJS)\corelib_font.obj \ $(OBJS)\corelib_font.obj \
$(OBJS)\corelib_fontenum.obj \ $(OBJS)\corelib_fontenum.obj \
$(OBJS)\corelib_fontutil.obj \ $(OBJS)\corelib_fontutil.obj \
@@ -3252,7 +3249,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.obj \ $(OBJS)\corelib_dpycmn.obj \
$(OBJS)\corelib_dseldlg.obj \ $(OBJS)\corelib_dseldlg.obj \
$(OBJS)\corelib_effects.obj \ $(OBJS)\corelib_effects.obj \
$(OBJS)\corelib_evtloopcmn.obj \
$(OBJS)\corelib_fddlgcmn.obj \ $(OBJS)\corelib_fddlgcmn.obj \
$(OBJS)\corelib_filepickercmn.obj \ $(OBJS)\corelib_filepickercmn.obj \
$(OBJS)\corelib_fontpickercmn.obj \ $(OBJS)\corelib_fontpickercmn.obj \
@@ -3364,7 +3360,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.obj \ $(OBJS)\corelib_dib.obj \
$(OBJS)\corelib_display.obj \ $(OBJS)\corelib_display.obj \
$(OBJS)\corelib_enhmeta.obj \ $(OBJS)\corelib_enhmeta.obj \
$(OBJS)\corelib_evtloop.obj \
$(OBJS)\corelib_font.obj \ $(OBJS)\corelib_font.obj \
$(OBJS)\corelib_fontenum.obj \ $(OBJS)\corelib_fontenum.obj \
$(OBJS)\corelib_fontutil.obj \ $(OBJS)\corelib_fontutil.obj \
@@ -3481,7 +3476,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.obj \ $(OBJS)\corelib_dpycmn.obj \
$(OBJS)\corelib_dseldlg.obj \ $(OBJS)\corelib_dseldlg.obj \
$(OBJS)\corelib_effects.obj \ $(OBJS)\corelib_effects.obj \
$(OBJS)\corelib_evtloopcmn.obj \
$(OBJS)\corelib_fddlgcmn.obj \ $(OBJS)\corelib_fddlgcmn.obj \
$(OBJS)\corelib_filepickercmn.obj \ $(OBJS)\corelib_filepickercmn.obj \
$(OBJS)\corelib_fontpickercmn.obj \ $(OBJS)\corelib_fontpickercmn.obj \
@@ -5226,6 +5220,9 @@ $(OBJS)\monodll_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(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 $(OBJS)\monodll_extended.obj: ..\..\src\common\extended.c
$(CC) -q -c -P- -o$@ $(MONODLL_CFLAGS) $** $(CC) -q -c -P- -o$@ $(MONODLL_CFLAGS) $**
@@ -5460,6 +5457,9 @@ $(OBJS)\monodll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(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 $(OBJS)\monodll_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -6058,11 +6058,6 @@ $(OBJS)\monodll_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp $(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -6643,11 +6638,6 @@ $(OBJS)\monodll_effects.obj: ..\..\src\common\effects.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $**
@@ -7292,6 +7282,9 @@ $(OBJS)\monolib_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(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 $(OBJS)\monolib_extended.obj: ..\..\src\common\extended.c
$(CC) -q -c -P- -o$@ $(MONOLIB_CFLAGS) $** $(CC) -q -c -P- -o$@ $(MONOLIB_CFLAGS) $**
@@ -7526,6 +7519,9 @@ $(OBJS)\monolib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(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 $(OBJS)\monolib_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -8124,11 +8120,6 @@ $(OBJS)\monolib_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp $(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -8709,11 +8700,6 @@ $(OBJS)\monolib_effects.obj: ..\..\src\common\effects.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $**
@@ -9358,6 +9344,9 @@ $(OBJS)\basedll_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** $(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 $(OBJS)\basedll_extended.obj: ..\..\src\common\extended.c
$(CC) -q -c -P- -o$@ $(BASEDLL_CFLAGS) $** $(CC) -q -c -P- -o$@ $(BASEDLL_CFLAGS) $**
@@ -9592,6 +9581,9 @@ $(OBJS)\basedll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** $(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 $(OBJS)\basedll_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $**
@@ -9652,6 +9644,9 @@ $(OBJS)\baselib_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** $(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 $(OBJS)\baselib_extended.obj: ..\..\src\common\extended.c
$(CC) -q -c -P- -o$@ $(BASELIB_CFLAGS) $** $(CC) -q -c -P- -o$@ $(BASELIB_CFLAGS) $**
@@ -9886,6 +9881,9 @@ $(OBJS)\baselib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** $(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 $(OBJS)\baselib_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $**
@@ -9994,6 +9992,9 @@ $(OBJS)\coredll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(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 $(OBJS)\coredll_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -10229,11 +10230,6 @@ $(OBJS)\coredll_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp $(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -10814,11 +10810,6 @@ $(OBJS)\coredll_effects.obj: ..\..\src\common\effects.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(COREDLL_CXXFLAGS) $**
@@ -11289,6 +11280,9 @@ $(OBJS)\corelib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(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 $(OBJS)\corelib_main.obj: ..\..\src\msw\main.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -11524,11 +11518,6 @@ $(OBJS)\corelib_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp $(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
@@ -12109,11 +12098,6 @@ $(OBJS)\corelib_effects.obj: ..\..\src\common\effects.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $** $(CXX) -q -c -P -o$@ $(CORELIB_CXXFLAGS) $**

View File

@@ -293,6 +293,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_dynlib.o \ $(OBJS)\monodll_dynlib.o \
$(OBJS)\monodll_dynload.o \ $(OBJS)\monodll_dynload.o \
$(OBJS)\monodll_encconv.o \ $(OBJS)\monodll_encconv.o \
$(OBJS)\monodll_evtloopcmn.o \
$(OBJS)\monodll_extended.o \ $(OBJS)\monodll_extended.o \
$(OBJS)\monodll_ffile.o \ $(OBJS)\monodll_ffile.o \
$(OBJS)\monodll_file.o \ $(OBJS)\monodll_file.o \
@@ -371,6 +372,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_fs_mem.o \ $(OBJS)\monodll_fs_mem.o \
$(OBJS)\monodll_msgout.o \ $(OBJS)\monodll_msgout.o \
$(OBJS)\monodll_utilscmn.o \ $(OBJS)\monodll_utilscmn.o \
$(OBJS)\monodll_evtloopmsw.o \
$(OBJS)\monodll_main.o \ $(OBJS)\monodll_main.o \
$(OBJS)\monodll_mslu.o \ $(OBJS)\monodll_mslu.o \
$(OBJS)\monodll_volume.o \ $(OBJS)\monodll_volume.o \
@@ -427,6 +429,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_dynlib.o \ $(OBJS)\monolib_dynlib.o \
$(OBJS)\monolib_dynload.o \ $(OBJS)\monolib_dynload.o \
$(OBJS)\monolib_encconv.o \ $(OBJS)\monolib_encconv.o \
$(OBJS)\monolib_evtloopcmn.o \
$(OBJS)\monolib_extended.o \ $(OBJS)\monolib_extended.o \
$(OBJS)\monolib_ffile.o \ $(OBJS)\monolib_ffile.o \
$(OBJS)\monolib_file.o \ $(OBJS)\monolib_file.o \
@@ -505,6 +508,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_fs_mem.o \ $(OBJS)\monolib_fs_mem.o \
$(OBJS)\monolib_msgout.o \ $(OBJS)\monolib_msgout.o \
$(OBJS)\monolib_utilscmn.o \ $(OBJS)\monolib_utilscmn.o \
$(OBJS)\monolib_evtloopmsw.o \
$(OBJS)\monolib_main.o \ $(OBJS)\monolib_main.o \
$(OBJS)\monolib_mslu.o \ $(OBJS)\monolib_mslu.o \
$(OBJS)\monolib_volume.o \ $(OBJS)\monolib_volume.o \
@@ -558,6 +562,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_dynlib.o \ $(OBJS)\basedll_dynlib.o \
$(OBJS)\basedll_dynload.o \ $(OBJS)\basedll_dynload.o \
$(OBJS)\basedll_encconv.o \ $(OBJS)\basedll_encconv.o \
$(OBJS)\basedll_evtloopcmn.o \
$(OBJS)\basedll_extended.o \ $(OBJS)\basedll_extended.o \
$(OBJS)\basedll_ffile.o \ $(OBJS)\basedll_ffile.o \
$(OBJS)\basedll_file.o \ $(OBJS)\basedll_file.o \
@@ -636,6 +641,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_fs_mem.o \ $(OBJS)\basedll_fs_mem.o \
$(OBJS)\basedll_msgout.o \ $(OBJS)\basedll_msgout.o \
$(OBJS)\basedll_utilscmn.o \ $(OBJS)\basedll_utilscmn.o \
$(OBJS)\basedll_evtloopmsw.o \
$(OBJS)\basedll_main.o \ $(OBJS)\basedll_main.o \
$(OBJS)\basedll_mslu.o \ $(OBJS)\basedll_mslu.o \
$(OBJS)\basedll_volume.o $(OBJS)\basedll_volume.o
@@ -672,6 +678,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_dynlib.o \ $(OBJS)\baselib_dynlib.o \
$(OBJS)\baselib_dynload.o \ $(OBJS)\baselib_dynload.o \
$(OBJS)\baselib_encconv.o \ $(OBJS)\baselib_encconv.o \
$(OBJS)\baselib_evtloopcmn.o \
$(OBJS)\baselib_extended.o \ $(OBJS)\baselib_extended.o \
$(OBJS)\baselib_ffile.o \ $(OBJS)\baselib_ffile.o \
$(OBJS)\baselib_file.o \ $(OBJS)\baselib_file.o \
@@ -750,6 +757,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_fs_mem.o \ $(OBJS)\baselib_fs_mem.o \
$(OBJS)\baselib_msgout.o \ $(OBJS)\baselib_msgout.o \
$(OBJS)\baselib_utilscmn.o \ $(OBJS)\baselib_utilscmn.o \
$(OBJS)\baselib_evtloopmsw.o \
$(OBJS)\baselib_main.o \ $(OBJS)\baselib_main.o \
$(OBJS)\baselib_mslu.o \ $(OBJS)\baselib_mslu.o \
$(OBJS)\baselib_volume.o $(OBJS)\baselib_volume.o
@@ -814,6 +822,7 @@ COREDLL_OBJECTS = \
$(OBJS)\coredll_fs_mem.o \ $(OBJS)\coredll_fs_mem.o \
$(OBJS)\coredll_msgout.o \ $(OBJS)\coredll_msgout.o \
$(OBJS)\coredll_utilscmn.o \ $(OBJS)\coredll_utilscmn.o \
$(OBJS)\coredll_evtloopmsw.o \
$(OBJS)\coredll_main.o \ $(OBJS)\coredll_main.o \
$(OBJS)\coredll_mslu.o \ $(OBJS)\coredll_mslu.o \
$(OBJS)\coredll_volume.o \ $(OBJS)\coredll_volume.o \
@@ -832,6 +841,7 @@ CORELIB_OBJECTS = \
$(OBJS)\corelib_fs_mem.o \ $(OBJS)\corelib_fs_mem.o \
$(OBJS)\corelib_msgout.o \ $(OBJS)\corelib_msgout.o \
$(OBJS)\corelib_utilscmn.o \ $(OBJS)\corelib_utilscmn.o \
$(OBJS)\corelib_evtloopmsw.o \
$(OBJS)\corelib_main.o \ $(OBJS)\corelib_main.o \
$(OBJS)\corelib_mslu.o \ $(OBJS)\corelib_mslu.o \
$(OBJS)\corelib_volume.o \ $(OBJS)\corelib_volume.o \
@@ -1507,7 +1517,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.o \ $(OBJS)\monodll_dib.o \
$(OBJS)\monodll_display.o \ $(OBJS)\monodll_display.o \
$(OBJS)\monodll_enhmeta.o \ $(OBJS)\monodll_enhmeta.o \
$(OBJS)\monodll_evtloop.o \
$(OBJS)\monodll_font.o \ $(OBJS)\monodll_font.o \
$(OBJS)\monodll_fontenum.o \ $(OBJS)\monodll_fontenum.o \
$(OBJS)\monodll_fontutil.o \ $(OBJS)\monodll_fontutil.o \
@@ -1621,7 +1630,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.o \ $(OBJS)\monodll_dpycmn.o \
$(OBJS)\monodll_dseldlg.o \ $(OBJS)\monodll_dseldlg.o \
$(OBJS)\monodll_effects.o \ $(OBJS)\monodll_effects.o \
$(OBJS)\monodll_evtloopcmn.o \
$(OBJS)\monodll_fddlgcmn.o \ $(OBJS)\monodll_fddlgcmn.o \
$(OBJS)\monodll_filepickercmn.o \ $(OBJS)\monodll_filepickercmn.o \
$(OBJS)\monodll_fontpickercmn.o \ $(OBJS)\monodll_fontpickercmn.o \
@@ -1735,7 +1743,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.o \ $(OBJS)\monodll_dib.o \
$(OBJS)\monodll_display.o \ $(OBJS)\monodll_display.o \
$(OBJS)\monodll_enhmeta.o \ $(OBJS)\monodll_enhmeta.o \
$(OBJS)\monodll_evtloop.o \
$(OBJS)\monodll_font.o \ $(OBJS)\monodll_font.o \
$(OBJS)\monodll_fontenum.o \ $(OBJS)\monodll_fontenum.o \
$(OBJS)\monodll_fontutil.o \ $(OBJS)\monodll_fontutil.o \
@@ -1852,7 +1859,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.o \ $(OBJS)\monodll_dpycmn.o \
$(OBJS)\monodll_dseldlg.o \ $(OBJS)\monodll_dseldlg.o \
$(OBJS)\monodll_effects.o \ $(OBJS)\monodll_effects.o \
$(OBJS)\monodll_evtloopcmn.o \
$(OBJS)\monodll_fddlgcmn.o \ $(OBJS)\monodll_fddlgcmn.o \
$(OBJS)\monodll_filepickercmn.o \ $(OBJS)\monodll_filepickercmn.o \
$(OBJS)\monodll_fontpickercmn.o \ $(OBJS)\monodll_fontpickercmn.o \
@@ -2147,7 +2153,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.o \ $(OBJS)\monolib_dib.o \
$(OBJS)\monolib_display.o \ $(OBJS)\monolib_display.o \
$(OBJS)\monolib_enhmeta.o \ $(OBJS)\monolib_enhmeta.o \
$(OBJS)\monolib_evtloop.o \
$(OBJS)\monolib_font.o \ $(OBJS)\monolib_font.o \
$(OBJS)\monolib_fontenum.o \ $(OBJS)\monolib_fontenum.o \
$(OBJS)\monolib_fontutil.o \ $(OBJS)\monolib_fontutil.o \
@@ -2261,7 +2266,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.o \ $(OBJS)\monolib_dpycmn.o \
$(OBJS)\monolib_dseldlg.o \ $(OBJS)\monolib_dseldlg.o \
$(OBJS)\monolib_effects.o \ $(OBJS)\monolib_effects.o \
$(OBJS)\monolib_evtloopcmn.o \
$(OBJS)\monolib_fddlgcmn.o \ $(OBJS)\monolib_fddlgcmn.o \
$(OBJS)\monolib_filepickercmn.o \ $(OBJS)\monolib_filepickercmn.o \
$(OBJS)\monolib_fontpickercmn.o \ $(OBJS)\monolib_fontpickercmn.o \
@@ -2375,7 +2379,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.o \ $(OBJS)\monolib_dib.o \
$(OBJS)\monolib_display.o \ $(OBJS)\monolib_display.o \
$(OBJS)\monolib_enhmeta.o \ $(OBJS)\monolib_enhmeta.o \
$(OBJS)\monolib_evtloop.o \
$(OBJS)\monolib_font.o \ $(OBJS)\monolib_font.o \
$(OBJS)\monolib_fontenum.o \ $(OBJS)\monolib_fontenum.o \
$(OBJS)\monolib_fontutil.o \ $(OBJS)\monolib_fontutil.o \
@@ -2492,7 +2495,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.o \ $(OBJS)\monolib_dpycmn.o \
$(OBJS)\monolib_dseldlg.o \ $(OBJS)\monolib_dseldlg.o \
$(OBJS)\monolib_effects.o \ $(OBJS)\monolib_effects.o \
$(OBJS)\monolib_evtloopcmn.o \
$(OBJS)\monolib_fddlgcmn.o \ $(OBJS)\monolib_fddlgcmn.o \
$(OBJS)\monolib_filepickercmn.o \ $(OBJS)\monolib_filepickercmn.o \
$(OBJS)\monolib_fontpickercmn.o \ $(OBJS)\monolib_fontpickercmn.o \
@@ -2711,7 +2713,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.o \ $(OBJS)\coredll_dib.o \
$(OBJS)\coredll_display.o \ $(OBJS)\coredll_display.o \
$(OBJS)\coredll_enhmeta.o \ $(OBJS)\coredll_enhmeta.o \
$(OBJS)\coredll_evtloop.o \
$(OBJS)\coredll_font.o \ $(OBJS)\coredll_font.o \
$(OBJS)\coredll_fontenum.o \ $(OBJS)\coredll_fontenum.o \
$(OBJS)\coredll_fontutil.o \ $(OBJS)\coredll_fontutil.o \
@@ -2825,7 +2826,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.o \ $(OBJS)\coredll_dpycmn.o \
$(OBJS)\coredll_dseldlg.o \ $(OBJS)\coredll_dseldlg.o \
$(OBJS)\coredll_effects.o \ $(OBJS)\coredll_effects.o \
$(OBJS)\coredll_evtloopcmn.o \
$(OBJS)\coredll_fddlgcmn.o \ $(OBJS)\coredll_fddlgcmn.o \
$(OBJS)\coredll_filepickercmn.o \ $(OBJS)\coredll_filepickercmn.o \
$(OBJS)\coredll_fontpickercmn.o \ $(OBJS)\coredll_fontpickercmn.o \
@@ -2939,7 +2939,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.o \ $(OBJS)\coredll_dib.o \
$(OBJS)\coredll_display.o \ $(OBJS)\coredll_display.o \
$(OBJS)\coredll_enhmeta.o \ $(OBJS)\coredll_enhmeta.o \
$(OBJS)\coredll_evtloop.o \
$(OBJS)\coredll_font.o \ $(OBJS)\coredll_font.o \
$(OBJS)\coredll_fontenum.o \ $(OBJS)\coredll_fontenum.o \
$(OBJS)\coredll_fontutil.o \ $(OBJS)\coredll_fontutil.o \
@@ -3056,7 +3055,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.o \ $(OBJS)\coredll_dpycmn.o \
$(OBJS)\coredll_dseldlg.o \ $(OBJS)\coredll_dseldlg.o \
$(OBJS)\coredll_effects.o \ $(OBJS)\coredll_effects.o \
$(OBJS)\coredll_evtloopcmn.o \
$(OBJS)\coredll_fddlgcmn.o \ $(OBJS)\coredll_fddlgcmn.o \
$(OBJS)\coredll_filepickercmn.o \ $(OBJS)\coredll_filepickercmn.o \
$(OBJS)\coredll_fontpickercmn.o \ $(OBJS)\coredll_fontpickercmn.o \
@@ -3178,7 +3176,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.o \ $(OBJS)\corelib_dib.o \
$(OBJS)\corelib_display.o \ $(OBJS)\corelib_display.o \
$(OBJS)\corelib_enhmeta.o \ $(OBJS)\corelib_enhmeta.o \
$(OBJS)\corelib_evtloop.o \
$(OBJS)\corelib_font.o \ $(OBJS)\corelib_font.o \
$(OBJS)\corelib_fontenum.o \ $(OBJS)\corelib_fontenum.o \
$(OBJS)\corelib_fontutil.o \ $(OBJS)\corelib_fontutil.o \
@@ -3292,7 +3289,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.o \ $(OBJS)\corelib_dpycmn.o \
$(OBJS)\corelib_dseldlg.o \ $(OBJS)\corelib_dseldlg.o \
$(OBJS)\corelib_effects.o \ $(OBJS)\corelib_effects.o \
$(OBJS)\corelib_evtloopcmn.o \
$(OBJS)\corelib_fddlgcmn.o \ $(OBJS)\corelib_fddlgcmn.o \
$(OBJS)\corelib_filepickercmn.o \ $(OBJS)\corelib_filepickercmn.o \
$(OBJS)\corelib_fontpickercmn.o \ $(OBJS)\corelib_fontpickercmn.o \
@@ -3406,7 +3402,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.o \ $(OBJS)\corelib_dib.o \
$(OBJS)\corelib_display.o \ $(OBJS)\corelib_display.o \
$(OBJS)\corelib_enhmeta.o \ $(OBJS)\corelib_enhmeta.o \
$(OBJS)\corelib_evtloop.o \
$(OBJS)\corelib_font.o \ $(OBJS)\corelib_font.o \
$(OBJS)\corelib_fontenum.o \ $(OBJS)\corelib_fontenum.o \
$(OBJS)\corelib_fontutil.o \ $(OBJS)\corelib_fontutil.o \
@@ -3523,7 +3518,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.o \ $(OBJS)\corelib_dpycmn.o \
$(OBJS)\corelib_dseldlg.o \ $(OBJS)\corelib_dseldlg.o \
$(OBJS)\corelib_effects.o \ $(OBJS)\corelib_effects.o \
$(OBJS)\corelib_evtloopcmn.o \
$(OBJS)\corelib_fddlgcmn.o \ $(OBJS)\corelib_fddlgcmn.o \
$(OBJS)\corelib_filepickercmn.o \ $(OBJS)\corelib_filepickercmn.o \
$(OBJS)\corelib_fontpickercmn.o \ $(OBJS)\corelib_fontpickercmn.o \
@@ -5387,6 +5381,9 @@ $(OBJS)\monodll_dynload.o: ../../src/common/dynload.cpp
$(OBJS)\monodll_encconv.o: ../../src/common/encconv.cpp $(OBJS)\monodll_encconv.o: ../../src/common/encconv.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\monodll_extended.o: ../../src/common/extended.c
$(CC) -c -o $@ $(MONODLL_CFLAGS) $(CPPDEPS) $< $(CC) -c -o $@ $(MONODLL_CFLAGS) $(CPPDEPS) $<
@@ -5621,6 +5618,9 @@ $(OBJS)\monodll_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\monodll_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\monodll_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\monodll_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -6219,11 +6219,6 @@ $(OBJS)\monodll_enhmeta.o: ../../src/msw/enhmeta.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_evtloop.o: ../../src/msw/evtloop.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\monodll_font.o: ../../src/msw/font.cpp $(OBJS)\monodll_font.o: ../../src/msw/font.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -6904,11 +6899,6 @@ $(OBJS)\monodll_effects.o: ../../src/common/effects.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\monodll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\monodll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp $(OBJS)\monodll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
$(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $<
@@ -7553,6 +7543,9 @@ $(OBJS)\monolib_dynload.o: ../../src/common/dynload.cpp
$(OBJS)\monolib_encconv.o: ../../src/common/encconv.cpp $(OBJS)\monolib_encconv.o: ../../src/common/encconv.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\monolib_extended.o: ../../src/common/extended.c
$(CC) -c -o $@ $(MONOLIB_CFLAGS) $(CPPDEPS) $< $(CC) -c -o $@ $(MONOLIB_CFLAGS) $(CPPDEPS) $<
@@ -7787,6 +7780,9 @@ $(OBJS)\monolib_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\monolib_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\monolib_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\monolib_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -8385,11 +8381,6 @@ $(OBJS)\monolib_enhmeta.o: ../../src/msw/enhmeta.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_evtloop.o: ../../src/msw/evtloop.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\monolib_font.o: ../../src/msw/font.cpp $(OBJS)\monolib_font.o: ../../src/msw/font.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -9070,11 +9061,6 @@ $(OBJS)\monolib_effects.o: ../../src/common/effects.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\monolib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\monolib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp $(OBJS)\monolib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
$(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $<
@@ -9719,6 +9705,9 @@ $(OBJS)\basedll_dynload.o: ../../src/common/dynload.cpp
$(OBJS)\basedll_encconv.o: ../../src/common/encconv.cpp $(OBJS)\basedll_encconv.o: ../../src/common/encconv.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\basedll_extended.o: ../../src/common/extended.c
$(CC) -c -o $@ $(BASEDLL_CFLAGS) $(CPPDEPS) $< $(CC) -c -o $@ $(BASEDLL_CFLAGS) $(CPPDEPS) $<
@@ -9953,6 +9942,9 @@ $(OBJS)\basedll_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\basedll_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\basedll_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\basedll_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -10013,6 +10005,9 @@ $(OBJS)\baselib_dynload.o: ../../src/common/dynload.cpp
$(OBJS)\baselib_encconv.o: ../../src/common/encconv.cpp $(OBJS)\baselib_encconv.o: ../../src/common/encconv.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\baselib_extended.o: ../../src/common/extended.c
$(CC) -c -o $@ $(BASELIB_CFLAGS) $(CPPDEPS) $< $(CC) -c -o $@ $(BASELIB_CFLAGS) $(CPPDEPS) $<
@@ -10247,6 +10242,9 @@ $(OBJS)\baselib_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\baselib_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\baselib_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\baselib_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -10355,6 +10353,9 @@ $(OBJS)\coredll_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\coredll_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\coredll_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\coredll_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -10590,11 +10591,6 @@ $(OBJS)\coredll_enhmeta.o: ../../src/msw/enhmeta.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\coredll_evtloop.o: ../../src/msw/evtloop.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\coredll_font.o: ../../src/msw/font.cpp $(OBJS)\coredll_font.o: ../../src/msw/font.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -11275,11 +11271,6 @@ $(OBJS)\coredll_effects.o: ../../src/common/effects.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\coredll_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\coredll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp $(OBJS)\coredll_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
$(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(COREDLL_CXXFLAGS) $(CPPDEPS) $<
@@ -11750,6 +11741,9 @@ $(OBJS)\corelib_msgout.o: ../../src/common/msgout.cpp
$(OBJS)\corelib_utilscmn.o: ../../src/common/utilscmn.cpp $(OBJS)\corelib_utilscmn.o: ../../src/common/utilscmn.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(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 $(OBJS)\corelib_main.o: ../../src/msw/main.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -11985,11 +11979,6 @@ $(OBJS)\corelib_enhmeta.o: ../../src/msw/enhmeta.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\corelib_evtloop.o: ../../src/msw/evtloop.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\corelib_font.o: ../../src/msw/font.cpp $(OBJS)\corelib_font.o: ../../src/msw/font.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
@@ -12670,11 +12659,6 @@ $(OBJS)\corelib_effects.o: ../../src/common/effects.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif endif
ifeq ($(USE_GUI),1)
$(OBJS)\corelib_evtloopcmn.o: ../../src/common/evtloopcmn.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<
endif
ifeq ($(USE_GUI),1) ifeq ($(USE_GUI),1)
$(OBJS)\corelib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp $(OBJS)\corelib_fddlgcmn.o: ../../src/common/fddlgcmn.cpp
$(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $< $(CXX) -c -o $@ $(CORELIB_CXXFLAGS) $(CPPDEPS) $<

View File

@@ -308,6 +308,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_dynlib.obj \ $(OBJS)\monodll_dynlib.obj \
$(OBJS)\monodll_dynload.obj \ $(OBJS)\monodll_dynload.obj \
$(OBJS)\monodll_encconv.obj \ $(OBJS)\monodll_encconv.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_extended.obj \ $(OBJS)\monodll_extended.obj \
$(OBJS)\monodll_ffile.obj \ $(OBJS)\monodll_ffile.obj \
$(OBJS)\monodll_file.obj \ $(OBJS)\monodll_file.obj \
@@ -386,6 +387,7 @@ MONODLL_OBJECTS = \
$(OBJS)\monodll_fs_mem.obj \ $(OBJS)\monodll_fs_mem.obj \
$(OBJS)\monodll_msgout.obj \ $(OBJS)\monodll_msgout.obj \
$(OBJS)\monodll_utilscmn.obj \ $(OBJS)\monodll_utilscmn.obj \
$(OBJS)\monodll_evtloopmsw.obj \
$(OBJS)\monodll_main.obj \ $(OBJS)\monodll_main.obj \
$(OBJS)\monodll_mslu.obj \ $(OBJS)\monodll_mslu.obj \
$(OBJS)\monodll_volume.obj \ $(OBJS)\monodll_volume.obj \
@@ -446,6 +448,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_dynlib.obj \ $(OBJS)\monolib_dynlib.obj \
$(OBJS)\monolib_dynload.obj \ $(OBJS)\monolib_dynload.obj \
$(OBJS)\monolib_encconv.obj \ $(OBJS)\monolib_encconv.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_extended.obj \ $(OBJS)\monolib_extended.obj \
$(OBJS)\monolib_ffile.obj \ $(OBJS)\monolib_ffile.obj \
$(OBJS)\monolib_file.obj \ $(OBJS)\monolib_file.obj \
@@ -524,6 +527,7 @@ MONOLIB_OBJECTS = \
$(OBJS)\monolib_fs_mem.obj \ $(OBJS)\monolib_fs_mem.obj \
$(OBJS)\monolib_msgout.obj \ $(OBJS)\monolib_msgout.obj \
$(OBJS)\monolib_utilscmn.obj \ $(OBJS)\monolib_utilscmn.obj \
$(OBJS)\monolib_evtloopmsw.obj \
$(OBJS)\monolib_main.obj \ $(OBJS)\monolib_main.obj \
$(OBJS)\monolib_mslu.obj \ $(OBJS)\monolib_mslu.obj \
$(OBJS)\monolib_volume.obj \ $(OBJS)\monolib_volume.obj \
@@ -582,6 +586,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_dynlib.obj \ $(OBJS)\basedll_dynlib.obj \
$(OBJS)\basedll_dynload.obj \ $(OBJS)\basedll_dynload.obj \
$(OBJS)\basedll_encconv.obj \ $(OBJS)\basedll_encconv.obj \
$(OBJS)\basedll_evtloopcmn.obj \
$(OBJS)\basedll_extended.obj \ $(OBJS)\basedll_extended.obj \
$(OBJS)\basedll_ffile.obj \ $(OBJS)\basedll_ffile.obj \
$(OBJS)\basedll_file.obj \ $(OBJS)\basedll_file.obj \
@@ -660,6 +665,7 @@ BASEDLL_OBJECTS = \
$(OBJS)\basedll_fs_mem.obj \ $(OBJS)\basedll_fs_mem.obj \
$(OBJS)\basedll_msgout.obj \ $(OBJS)\basedll_msgout.obj \
$(OBJS)\basedll_utilscmn.obj \ $(OBJS)\basedll_utilscmn.obj \
$(OBJS)\basedll_evtloopmsw.obj \
$(OBJS)\basedll_main.obj \ $(OBJS)\basedll_main.obj \
$(OBJS)\basedll_mslu.obj \ $(OBJS)\basedll_mslu.obj \
$(OBJS)\basedll_volume.obj $(OBJS)\basedll_volume.obj
@@ -702,6 +708,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_dynlib.obj \ $(OBJS)\baselib_dynlib.obj \
$(OBJS)\baselib_dynload.obj \ $(OBJS)\baselib_dynload.obj \
$(OBJS)\baselib_encconv.obj \ $(OBJS)\baselib_encconv.obj \
$(OBJS)\baselib_evtloopcmn.obj \
$(OBJS)\baselib_extended.obj \ $(OBJS)\baselib_extended.obj \
$(OBJS)\baselib_ffile.obj \ $(OBJS)\baselib_ffile.obj \
$(OBJS)\baselib_file.obj \ $(OBJS)\baselib_file.obj \
@@ -780,6 +787,7 @@ BASELIB_OBJECTS = \
$(OBJS)\baselib_fs_mem.obj \ $(OBJS)\baselib_fs_mem.obj \
$(OBJS)\baselib_msgout.obj \ $(OBJS)\baselib_msgout.obj \
$(OBJS)\baselib_utilscmn.obj \ $(OBJS)\baselib_utilscmn.obj \
$(OBJS)\baselib_evtloopmsw.obj \
$(OBJS)\baselib_main.obj \ $(OBJS)\baselib_main.obj \
$(OBJS)\baselib_mslu.obj \ $(OBJS)\baselib_mslu.obj \
$(OBJS)\baselib_volume.obj $(OBJS)\baselib_volume.obj
@@ -852,6 +860,7 @@ COREDLL_OBJECTS = \
$(OBJS)\coredll_fs_mem.obj \ $(OBJS)\coredll_fs_mem.obj \
$(OBJS)\coredll_msgout.obj \ $(OBJS)\coredll_msgout.obj \
$(OBJS)\coredll_utilscmn.obj \ $(OBJS)\coredll_utilscmn.obj \
$(OBJS)\coredll_evtloopmsw.obj \
$(OBJS)\coredll_main.obj \ $(OBJS)\coredll_main.obj \
$(OBJS)\coredll_mslu.obj \ $(OBJS)\coredll_mslu.obj \
$(OBJS)\coredll_volume.obj \ $(OBJS)\coredll_volume.obj \
@@ -873,6 +882,7 @@ CORELIB_OBJECTS = \
$(OBJS)\corelib_fs_mem.obj \ $(OBJS)\corelib_fs_mem.obj \
$(OBJS)\corelib_msgout.obj \ $(OBJS)\corelib_msgout.obj \
$(OBJS)\corelib_utilscmn.obj \ $(OBJS)\corelib_utilscmn.obj \
$(OBJS)\corelib_evtloopmsw.obj \
$(OBJS)\corelib_main.obj \ $(OBJS)\corelib_main.obj \
$(OBJS)\corelib_mslu.obj \ $(OBJS)\corelib_mslu.obj \
$(OBJS)\corelib_volume.obj \ $(OBJS)\corelib_volume.obj \
@@ -1675,7 +1685,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.obj \ $(OBJS)\monodll_dib.obj \
$(OBJS)\monodll_display.obj \ $(OBJS)\monodll_display.obj \
$(OBJS)\monodll_enhmeta.obj \ $(OBJS)\monodll_enhmeta.obj \
$(OBJS)\monodll_evtloop.obj \
$(OBJS)\monodll_font.obj \ $(OBJS)\monodll_font.obj \
$(OBJS)\monodll_fontenum.obj \ $(OBJS)\monodll_fontenum.obj \
$(OBJS)\monodll_fontutil.obj \ $(OBJS)\monodll_fontutil.obj \
@@ -1789,7 +1798,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.obj \ $(OBJS)\monodll_dpycmn.obj \
$(OBJS)\monodll_dseldlg.obj \ $(OBJS)\monodll_dseldlg.obj \
$(OBJS)\monodll_effects.obj \ $(OBJS)\monodll_effects.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_fddlgcmn.obj \ $(OBJS)\monodll_fddlgcmn.obj \
$(OBJS)\monodll_filepickercmn.obj \ $(OBJS)\monodll_filepickercmn.obj \
$(OBJS)\monodll_fontpickercmn.obj \ $(OBJS)\monodll_fontpickercmn.obj \
@@ -1901,7 +1909,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dib.obj \ $(OBJS)\monodll_dib.obj \
$(OBJS)\monodll_display.obj \ $(OBJS)\monodll_display.obj \
$(OBJS)\monodll_enhmeta.obj \ $(OBJS)\monodll_enhmeta.obj \
$(OBJS)\monodll_evtloop.obj \
$(OBJS)\monodll_font.obj \ $(OBJS)\monodll_font.obj \
$(OBJS)\monodll_fontenum.obj \ $(OBJS)\monodll_fontenum.obj \
$(OBJS)\monodll_fontutil.obj \ $(OBJS)\monodll_fontutil.obj \
@@ -2018,7 +2025,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = \
$(OBJS)\monodll_dpycmn.obj \ $(OBJS)\monodll_dpycmn.obj \
$(OBJS)\monodll_dseldlg.obj \ $(OBJS)\monodll_dseldlg.obj \
$(OBJS)\monodll_effects.obj \ $(OBJS)\monodll_effects.obj \
$(OBJS)\monodll_evtloopcmn.obj \
$(OBJS)\monodll_fddlgcmn.obj \ $(OBJS)\monodll_fddlgcmn.obj \
$(OBJS)\monodll_filepickercmn.obj \ $(OBJS)\monodll_filepickercmn.obj \
$(OBJS)\monodll_fontpickercmn.obj \ $(OBJS)\monodll_fontpickercmn.obj \
@@ -2315,7 +2321,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.obj \ $(OBJS)\monolib_dib.obj \
$(OBJS)\monolib_display.obj \ $(OBJS)\monolib_display.obj \
$(OBJS)\monolib_enhmeta.obj \ $(OBJS)\monolib_enhmeta.obj \
$(OBJS)\monolib_evtloop.obj \
$(OBJS)\monolib_font.obj \ $(OBJS)\monolib_font.obj \
$(OBJS)\monolib_fontenum.obj \ $(OBJS)\monolib_fontenum.obj \
$(OBJS)\monolib_fontutil.obj \ $(OBJS)\monolib_fontutil.obj \
@@ -2429,7 +2434,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.obj \ $(OBJS)\monolib_dpycmn.obj \
$(OBJS)\monolib_dseldlg.obj \ $(OBJS)\monolib_dseldlg.obj \
$(OBJS)\monolib_effects.obj \ $(OBJS)\monolib_effects.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_fddlgcmn.obj \ $(OBJS)\monolib_fddlgcmn.obj \
$(OBJS)\monolib_filepickercmn.obj \ $(OBJS)\monolib_filepickercmn.obj \
$(OBJS)\monolib_fontpickercmn.obj \ $(OBJS)\monolib_fontpickercmn.obj \
@@ -2541,7 +2545,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dib.obj \ $(OBJS)\monolib_dib.obj \
$(OBJS)\monolib_display.obj \ $(OBJS)\monolib_display.obj \
$(OBJS)\monolib_enhmeta.obj \ $(OBJS)\monolib_enhmeta.obj \
$(OBJS)\monolib_evtloop.obj \
$(OBJS)\monolib_font.obj \ $(OBJS)\monolib_font.obj \
$(OBJS)\monolib_fontenum.obj \ $(OBJS)\monolib_fontenum.obj \
$(OBJS)\monolib_fontutil.obj \ $(OBJS)\monolib_fontutil.obj \
@@ -2658,7 +2661,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = \
$(OBJS)\monolib_dpycmn.obj \ $(OBJS)\monolib_dpycmn.obj \
$(OBJS)\monolib_dseldlg.obj \ $(OBJS)\monolib_dseldlg.obj \
$(OBJS)\monolib_effects.obj \ $(OBJS)\monolib_effects.obj \
$(OBJS)\monolib_evtloopcmn.obj \
$(OBJS)\monolib_fddlgcmn.obj \ $(OBJS)\monolib_fddlgcmn.obj \
$(OBJS)\monolib_filepickercmn.obj \ $(OBJS)\monolib_filepickercmn.obj \
$(OBJS)\monolib_fontpickercmn.obj \ $(OBJS)\monolib_fontpickercmn.obj \
@@ -2893,7 +2895,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.obj \ $(OBJS)\coredll_dib.obj \
$(OBJS)\coredll_display.obj \ $(OBJS)\coredll_display.obj \
$(OBJS)\coredll_enhmeta.obj \ $(OBJS)\coredll_enhmeta.obj \
$(OBJS)\coredll_evtloop.obj \
$(OBJS)\coredll_font.obj \ $(OBJS)\coredll_font.obj \
$(OBJS)\coredll_fontenum.obj \ $(OBJS)\coredll_fontenum.obj \
$(OBJS)\coredll_fontutil.obj \ $(OBJS)\coredll_fontutil.obj \
@@ -3007,7 +3008,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.obj \ $(OBJS)\coredll_dpycmn.obj \
$(OBJS)\coredll_dseldlg.obj \ $(OBJS)\coredll_dseldlg.obj \
$(OBJS)\coredll_effects.obj \ $(OBJS)\coredll_effects.obj \
$(OBJS)\coredll_evtloopcmn.obj \
$(OBJS)\coredll_fddlgcmn.obj \ $(OBJS)\coredll_fddlgcmn.obj \
$(OBJS)\coredll_filepickercmn.obj \ $(OBJS)\coredll_filepickercmn.obj \
$(OBJS)\coredll_fontpickercmn.obj \ $(OBJS)\coredll_fontpickercmn.obj \
@@ -3119,7 +3119,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dib.obj \ $(OBJS)\coredll_dib.obj \
$(OBJS)\coredll_display.obj \ $(OBJS)\coredll_display.obj \
$(OBJS)\coredll_enhmeta.obj \ $(OBJS)\coredll_enhmeta.obj \
$(OBJS)\coredll_evtloop.obj \
$(OBJS)\coredll_font.obj \ $(OBJS)\coredll_font.obj \
$(OBJS)\coredll_fontenum.obj \ $(OBJS)\coredll_fontenum.obj \
$(OBJS)\coredll_fontutil.obj \ $(OBJS)\coredll_fontutil.obj \
@@ -3236,7 +3235,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = \
$(OBJS)\coredll_dpycmn.obj \ $(OBJS)\coredll_dpycmn.obj \
$(OBJS)\coredll_dseldlg.obj \ $(OBJS)\coredll_dseldlg.obj \
$(OBJS)\coredll_effects.obj \ $(OBJS)\coredll_effects.obj \
$(OBJS)\coredll_evtloopcmn.obj \
$(OBJS)\coredll_fddlgcmn.obj \ $(OBJS)\coredll_fddlgcmn.obj \
$(OBJS)\coredll_filepickercmn.obj \ $(OBJS)\coredll_filepickercmn.obj \
$(OBJS)\coredll_fontpickercmn.obj \ $(OBJS)\coredll_fontpickercmn.obj \
@@ -3358,7 +3356,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.obj \ $(OBJS)\corelib_dib.obj \
$(OBJS)\corelib_display.obj \ $(OBJS)\corelib_display.obj \
$(OBJS)\corelib_enhmeta.obj \ $(OBJS)\corelib_enhmeta.obj \
$(OBJS)\corelib_evtloop.obj \
$(OBJS)\corelib_font.obj \ $(OBJS)\corelib_font.obj \
$(OBJS)\corelib_fontenum.obj \ $(OBJS)\corelib_fontenum.obj \
$(OBJS)\corelib_fontutil.obj \ $(OBJS)\corelib_fontutil.obj \
@@ -3472,7 +3469,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.obj \ $(OBJS)\corelib_dpycmn.obj \
$(OBJS)\corelib_dseldlg.obj \ $(OBJS)\corelib_dseldlg.obj \
$(OBJS)\corelib_effects.obj \ $(OBJS)\corelib_effects.obj \
$(OBJS)\corelib_evtloopcmn.obj \
$(OBJS)\corelib_fddlgcmn.obj \ $(OBJS)\corelib_fddlgcmn.obj \
$(OBJS)\corelib_filepickercmn.obj \ $(OBJS)\corelib_filepickercmn.obj \
$(OBJS)\corelib_fontpickercmn.obj \ $(OBJS)\corelib_fontpickercmn.obj \
@@ -3584,7 +3580,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dib.obj \ $(OBJS)\corelib_dib.obj \
$(OBJS)\corelib_display.obj \ $(OBJS)\corelib_display.obj \
$(OBJS)\corelib_enhmeta.obj \ $(OBJS)\corelib_enhmeta.obj \
$(OBJS)\corelib_evtloop.obj \
$(OBJS)\corelib_font.obj \ $(OBJS)\corelib_font.obj \
$(OBJS)\corelib_fontenum.obj \ $(OBJS)\corelib_fontenum.obj \
$(OBJS)\corelib_fontutil.obj \ $(OBJS)\corelib_fontutil.obj \
@@ -3701,7 +3696,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = \
$(OBJS)\corelib_dpycmn.obj \ $(OBJS)\corelib_dpycmn.obj \
$(OBJS)\corelib_dseldlg.obj \ $(OBJS)\corelib_dseldlg.obj \
$(OBJS)\corelib_effects.obj \ $(OBJS)\corelib_effects.obj \
$(OBJS)\corelib_evtloopcmn.obj \
$(OBJS)\corelib_fddlgcmn.obj \ $(OBJS)\corelib_fddlgcmn.obj \
$(OBJS)\corelib_filepickercmn.obj \ $(OBJS)\corelib_filepickercmn.obj \
$(OBJS)\corelib_fontpickercmn.obj \ $(OBJS)\corelib_fontpickercmn.obj \
@@ -5578,6 +5572,9 @@ $(OBJS)\monodll_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\monodll_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(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 $(OBJS)\monodll_extended.obj: ..\..\src\common\extended.c
$(CC) /c /nologo /TC /Fo$@ $(MONODLL_CFLAGS) $** $(CC) /c /nologo /TC /Fo$@ $(MONODLL_CFLAGS) $**
@@ -5812,6 +5809,9 @@ $(OBJS)\monodll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\monodll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(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 $(OBJS)\monodll_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -6410,11 +6410,6 @@ $(OBJS)\monodll_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp $(OBJS)\monodll_font.obj: ..\..\src\msw\font.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -6995,11 +6990,6 @@ $(OBJS)\monodll_effects.obj: ..\..\src\common\effects.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\monodll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $**
@@ -7644,6 +7634,9 @@ $(OBJS)\monolib_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\monolib_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(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 $(OBJS)\monolib_extended.obj: ..\..\src\common\extended.c
$(CC) /c /nologo /TC /Fo$@ $(MONOLIB_CFLAGS) $** $(CC) /c /nologo /TC /Fo$@ $(MONOLIB_CFLAGS) $**
@@ -7878,6 +7871,9 @@ $(OBJS)\monolib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\monolib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(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 $(OBJS)\monolib_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -8476,11 +8472,6 @@ $(OBJS)\monolib_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp $(OBJS)\monolib_font.obj: ..\..\src\msw\font.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -9061,11 +9052,6 @@ $(OBJS)\monolib_effects.obj: ..\..\src\common\effects.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\monolib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $**
@@ -9710,6 +9696,9 @@ $(OBJS)\basedll_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\basedll_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** $(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 $(OBJS)\basedll_extended.obj: ..\..\src\common\extended.c
$(CC) /c /nologo /TC /Fo$@ $(BASEDLL_CFLAGS) $** $(CC) /c /nologo /TC /Fo$@ $(BASEDLL_CFLAGS) $**
@@ -9944,6 +9933,9 @@ $(OBJS)\basedll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\basedll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** $(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 $(OBJS)\basedll_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $**
@@ -10004,6 +9996,9 @@ $(OBJS)\baselib_dynload.obj: ..\..\src\common\dynload.cpp
$(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp $(OBJS)\baselib_encconv.obj: ..\..\src\common\encconv.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** $(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 $(OBJS)\baselib_extended.obj: ..\..\src\common\extended.c
$(CC) /c /nologo /TC /Fo$@ $(BASELIB_CFLAGS) $** $(CC) /c /nologo /TC /Fo$@ $(BASELIB_CFLAGS) $**
@@ -10238,6 +10233,9 @@ $(OBJS)\baselib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\baselib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** $(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 $(OBJS)\baselib_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $**
@@ -10346,6 +10344,9 @@ $(OBJS)\coredll_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\coredll_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(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 $(OBJS)\coredll_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -10581,11 +10582,6 @@ $(OBJS)\coredll_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp $(OBJS)\coredll_font.obj: ..\..\src\msw\font.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -11166,11 +11162,6 @@ $(OBJS)\coredll_effects.obj: ..\..\src\common\effects.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\coredll_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(COREDLL_CXXFLAGS) $**
@@ -11641,6 +11632,9 @@ $(OBJS)\corelib_msgout.obj: ..\..\src\common\msgout.cpp
$(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp $(OBJS)\corelib_utilscmn.obj: ..\..\src\common\utilscmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(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 $(OBJS)\corelib_main.obj: ..\..\src\msw\main.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -11876,11 +11870,6 @@ $(OBJS)\corelib_enhmeta.obj: ..\..\src\msw\enhmeta.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp $(OBJS)\corelib_font.obj: ..\..\src\msw\font.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
@@ -12461,11 +12450,6 @@ $(OBJS)\corelib_effects.obj: ..\..\src\common\effects.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**
!endif !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" !if "$(USE_GUI)" == "1"
$(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp $(OBJS)\corelib_fddlgcmn.obj: ..\..\src\common\fddlgcmn.cpp
$(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $** $(CXX) /c /nologo /TP /Fo$@ $(CORELIB_CXXFLAGS) $**

View File

@@ -228,7 +228,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_dib.obj & $(OBJS)\monodll_dib.obj &
$(OBJS)\monodll_display.obj & $(OBJS)\monodll_display.obj &
$(OBJS)\monodll_enhmeta.obj & $(OBJS)\monodll_enhmeta.obj &
$(OBJS)\monodll_evtloop.obj &
$(OBJS)\monodll_font.obj & $(OBJS)\monodll_font.obj &
$(OBJS)\monodll_fontenum.obj & $(OBJS)\monodll_fontenum.obj &
$(OBJS)\monodll_fontutil.obj & $(OBJS)\monodll_fontutil.obj &
@@ -342,7 +341,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_dpycmn.obj & $(OBJS)\monodll_dpycmn.obj &
$(OBJS)\monodll_dseldlg.obj & $(OBJS)\monodll_dseldlg.obj &
$(OBJS)\monodll_effects.obj & $(OBJS)\monodll_effects.obj &
$(OBJS)\monodll_evtloopcmn.obj &
$(OBJS)\monodll_fddlgcmn.obj & $(OBJS)\monodll_fddlgcmn.obj &
$(OBJS)\monodll_filepickercmn.obj & $(OBJS)\monodll_filepickercmn.obj &
$(OBJS)\monodll_fontpickercmn.obj & $(OBJS)\monodll_fontpickercmn.obj &
@@ -456,7 +454,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_dib.obj & $(OBJS)\monodll_dib.obj &
$(OBJS)\monodll_display.obj & $(OBJS)\monodll_display.obj &
$(OBJS)\monodll_enhmeta.obj & $(OBJS)\monodll_enhmeta.obj &
$(OBJS)\monodll_evtloop.obj &
$(OBJS)\monodll_font.obj & $(OBJS)\monodll_font.obj &
$(OBJS)\monodll_fontenum.obj & $(OBJS)\monodll_fontenum.obj &
$(OBJS)\monodll_fontutil.obj & $(OBJS)\monodll_fontutil.obj &
@@ -573,7 +570,6 @@ ____CORE_SRC_FILENAMES_OBJECTS = &
$(OBJS)\monodll_dpycmn.obj & $(OBJS)\monodll_dpycmn.obj &
$(OBJS)\monodll_dseldlg.obj & $(OBJS)\monodll_dseldlg.obj &
$(OBJS)\monodll_effects.obj & $(OBJS)\monodll_effects.obj &
$(OBJS)\monodll_evtloopcmn.obj &
$(OBJS)\monodll_fddlgcmn.obj & $(OBJS)\monodll_fddlgcmn.obj &
$(OBJS)\monodll_filepickercmn.obj & $(OBJS)\monodll_filepickercmn.obj &
$(OBJS)\monodll_fontpickercmn.obj & $(OBJS)\monodll_fontpickercmn.obj &
@@ -873,7 +869,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_dib.obj & $(OBJS)\monolib_dib.obj &
$(OBJS)\monolib_display.obj & $(OBJS)\monolib_display.obj &
$(OBJS)\monolib_enhmeta.obj & $(OBJS)\monolib_enhmeta.obj &
$(OBJS)\monolib_evtloop.obj &
$(OBJS)\monolib_font.obj & $(OBJS)\monolib_font.obj &
$(OBJS)\monolib_fontenum.obj & $(OBJS)\monolib_fontenum.obj &
$(OBJS)\monolib_fontutil.obj & $(OBJS)\monolib_fontutil.obj &
@@ -987,7 +982,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_dpycmn.obj & $(OBJS)\monolib_dpycmn.obj &
$(OBJS)\monolib_dseldlg.obj & $(OBJS)\monolib_dseldlg.obj &
$(OBJS)\monolib_effects.obj & $(OBJS)\monolib_effects.obj &
$(OBJS)\monolib_evtloopcmn.obj &
$(OBJS)\monolib_fddlgcmn.obj & $(OBJS)\monolib_fddlgcmn.obj &
$(OBJS)\monolib_filepickercmn.obj & $(OBJS)\monolib_filepickercmn.obj &
$(OBJS)\monolib_fontpickercmn.obj & $(OBJS)\monolib_fontpickercmn.obj &
@@ -1101,7 +1095,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_dib.obj & $(OBJS)\monolib_dib.obj &
$(OBJS)\monolib_display.obj & $(OBJS)\monolib_display.obj &
$(OBJS)\monolib_enhmeta.obj & $(OBJS)\monolib_enhmeta.obj &
$(OBJS)\monolib_evtloop.obj &
$(OBJS)\monolib_font.obj & $(OBJS)\monolib_font.obj &
$(OBJS)\monolib_fontenum.obj & $(OBJS)\monolib_fontenum.obj &
$(OBJS)\monolib_fontutil.obj & $(OBJS)\monolib_fontutil.obj &
@@ -1218,7 +1211,6 @@ ____CORE_SRC_FILENAMES_1_OBJECTS = &
$(OBJS)\monolib_dpycmn.obj & $(OBJS)\monolib_dpycmn.obj &
$(OBJS)\monolib_dseldlg.obj & $(OBJS)\monolib_dseldlg.obj &
$(OBJS)\monolib_effects.obj & $(OBJS)\monolib_effects.obj &
$(OBJS)\monolib_evtloopcmn.obj &
$(OBJS)\monolib_fddlgcmn.obj & $(OBJS)\monolib_fddlgcmn.obj &
$(OBJS)\monolib_filepickercmn.obj & $(OBJS)\monolib_filepickercmn.obj &
$(OBJS)\monolib_fontpickercmn.obj & $(OBJS)\monolib_fontpickercmn.obj &
@@ -1448,7 +1440,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\coredll_dib.obj & $(OBJS)\coredll_dib.obj &
$(OBJS)\coredll_display.obj & $(OBJS)\coredll_display.obj &
$(OBJS)\coredll_enhmeta.obj & $(OBJS)\coredll_enhmeta.obj &
$(OBJS)\coredll_evtloop.obj &
$(OBJS)\coredll_font.obj & $(OBJS)\coredll_font.obj &
$(OBJS)\coredll_fontenum.obj & $(OBJS)\coredll_fontenum.obj &
$(OBJS)\coredll_fontutil.obj & $(OBJS)\coredll_fontutil.obj &
@@ -1562,7 +1553,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\coredll_dpycmn.obj & $(OBJS)\coredll_dpycmn.obj &
$(OBJS)\coredll_dseldlg.obj & $(OBJS)\coredll_dseldlg.obj &
$(OBJS)\coredll_effects.obj & $(OBJS)\coredll_effects.obj &
$(OBJS)\coredll_evtloopcmn.obj &
$(OBJS)\coredll_fddlgcmn.obj & $(OBJS)\coredll_fddlgcmn.obj &
$(OBJS)\coredll_filepickercmn.obj & $(OBJS)\coredll_filepickercmn.obj &
$(OBJS)\coredll_fontpickercmn.obj & $(OBJS)\coredll_fontpickercmn.obj &
@@ -1676,7 +1666,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\coredll_dib.obj & $(OBJS)\coredll_dib.obj &
$(OBJS)\coredll_display.obj & $(OBJS)\coredll_display.obj &
$(OBJS)\coredll_enhmeta.obj & $(OBJS)\coredll_enhmeta.obj &
$(OBJS)\coredll_evtloop.obj &
$(OBJS)\coredll_font.obj & $(OBJS)\coredll_font.obj &
$(OBJS)\coredll_fontenum.obj & $(OBJS)\coredll_fontenum.obj &
$(OBJS)\coredll_fontutil.obj & $(OBJS)\coredll_fontutil.obj &
@@ -1793,7 +1782,6 @@ ____CORE_SRC_FILENAMES_2_OBJECTS = &
$(OBJS)\coredll_dpycmn.obj & $(OBJS)\coredll_dpycmn.obj &
$(OBJS)\coredll_dseldlg.obj & $(OBJS)\coredll_dseldlg.obj &
$(OBJS)\coredll_effects.obj & $(OBJS)\coredll_effects.obj &
$(OBJS)\coredll_evtloopcmn.obj &
$(OBJS)\coredll_fddlgcmn.obj & $(OBJS)\coredll_fddlgcmn.obj &
$(OBJS)\coredll_filepickercmn.obj & $(OBJS)\coredll_filepickercmn.obj &
$(OBJS)\coredll_fontpickercmn.obj & $(OBJS)\coredll_fontpickercmn.obj &
@@ -1917,7 +1905,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\corelib_dib.obj & $(OBJS)\corelib_dib.obj &
$(OBJS)\corelib_display.obj & $(OBJS)\corelib_display.obj &
$(OBJS)\corelib_enhmeta.obj & $(OBJS)\corelib_enhmeta.obj &
$(OBJS)\corelib_evtloop.obj &
$(OBJS)\corelib_font.obj & $(OBJS)\corelib_font.obj &
$(OBJS)\corelib_fontenum.obj & $(OBJS)\corelib_fontenum.obj &
$(OBJS)\corelib_fontutil.obj & $(OBJS)\corelib_fontutil.obj &
@@ -2031,7 +2018,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\corelib_dpycmn.obj & $(OBJS)\corelib_dpycmn.obj &
$(OBJS)\corelib_dseldlg.obj & $(OBJS)\corelib_dseldlg.obj &
$(OBJS)\corelib_effects.obj & $(OBJS)\corelib_effects.obj &
$(OBJS)\corelib_evtloopcmn.obj &
$(OBJS)\corelib_fddlgcmn.obj & $(OBJS)\corelib_fddlgcmn.obj &
$(OBJS)\corelib_filepickercmn.obj & $(OBJS)\corelib_filepickercmn.obj &
$(OBJS)\corelib_fontpickercmn.obj & $(OBJS)\corelib_fontpickercmn.obj &
@@ -2145,7 +2131,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\corelib_dib.obj & $(OBJS)\corelib_dib.obj &
$(OBJS)\corelib_display.obj & $(OBJS)\corelib_display.obj &
$(OBJS)\corelib_enhmeta.obj & $(OBJS)\corelib_enhmeta.obj &
$(OBJS)\corelib_evtloop.obj &
$(OBJS)\corelib_font.obj & $(OBJS)\corelib_font.obj &
$(OBJS)\corelib_fontenum.obj & $(OBJS)\corelib_fontenum.obj &
$(OBJS)\corelib_fontutil.obj & $(OBJS)\corelib_fontutil.obj &
@@ -2262,7 +2247,6 @@ ____CORE_SRC_FILENAMES_3_OBJECTS = &
$(OBJS)\corelib_dpycmn.obj & $(OBJS)\corelib_dpycmn.obj &
$(OBJS)\corelib_dseldlg.obj & $(OBJS)\corelib_dseldlg.obj &
$(OBJS)\corelib_effects.obj & $(OBJS)\corelib_effects.obj &
$(OBJS)\corelib_evtloopcmn.obj &
$(OBJS)\corelib_fddlgcmn.obj & $(OBJS)\corelib_fddlgcmn.obj &
$(OBJS)\corelib_filepickercmn.obj & $(OBJS)\corelib_filepickercmn.obj &
$(OBJS)\corelib_fontpickercmn.obj & $(OBJS)\corelib_fontpickercmn.obj &
@@ -3253,6 +3237,7 @@ MONODLL_OBJECTS = &
$(OBJS)\monodll_dynlib.obj & $(OBJS)\monodll_dynlib.obj &
$(OBJS)\monodll_dynload.obj & $(OBJS)\monodll_dynload.obj &
$(OBJS)\monodll_encconv.obj & $(OBJS)\monodll_encconv.obj &
$(OBJS)\monodll_evtloopcmn.obj &
$(OBJS)\monodll_extended.obj & $(OBJS)\monodll_extended.obj &
$(OBJS)\monodll_ffile.obj & $(OBJS)\monodll_ffile.obj &
$(OBJS)\monodll_file.obj & $(OBJS)\monodll_file.obj &
@@ -3331,6 +3316,7 @@ MONODLL_OBJECTS = &
$(OBJS)\monodll_fs_mem.obj & $(OBJS)\monodll_fs_mem.obj &
$(OBJS)\monodll_msgout.obj & $(OBJS)\monodll_msgout.obj &
$(OBJS)\monodll_utilscmn.obj & $(OBJS)\monodll_utilscmn.obj &
$(OBJS)\monodll_evtloopmsw.obj &
$(OBJS)\monodll_main.obj & $(OBJS)\monodll_main.obj &
$(OBJS)\monodll_mslu.obj & $(OBJS)\monodll_mslu.obj &
$(OBJS)\monodll_volume.obj & $(OBJS)\monodll_volume.obj &
@@ -3386,6 +3372,7 @@ MONOLIB_OBJECTS = &
$(OBJS)\monolib_dynlib.obj & $(OBJS)\monolib_dynlib.obj &
$(OBJS)\monolib_dynload.obj & $(OBJS)\monolib_dynload.obj &
$(OBJS)\monolib_encconv.obj & $(OBJS)\monolib_encconv.obj &
$(OBJS)\monolib_evtloopcmn.obj &
$(OBJS)\monolib_extended.obj & $(OBJS)\monolib_extended.obj &
$(OBJS)\monolib_ffile.obj & $(OBJS)\monolib_ffile.obj &
$(OBJS)\monolib_file.obj & $(OBJS)\monolib_file.obj &
@@ -3464,6 +3451,7 @@ MONOLIB_OBJECTS = &
$(OBJS)\monolib_fs_mem.obj & $(OBJS)\monolib_fs_mem.obj &
$(OBJS)\monolib_msgout.obj & $(OBJS)\monolib_msgout.obj &
$(OBJS)\monolib_utilscmn.obj & $(OBJS)\monolib_utilscmn.obj &
$(OBJS)\monolib_evtloopmsw.obj &
$(OBJS)\monolib_main.obj & $(OBJS)\monolib_main.obj &
$(OBJS)\monolib_mslu.obj & $(OBJS)\monolib_mslu.obj &
$(OBJS)\monolib_volume.obj & $(OBJS)\monolib_volume.obj &
@@ -3517,6 +3505,7 @@ BASEDLL_OBJECTS = &
$(OBJS)\basedll_dynlib.obj & $(OBJS)\basedll_dynlib.obj &
$(OBJS)\basedll_dynload.obj & $(OBJS)\basedll_dynload.obj &
$(OBJS)\basedll_encconv.obj & $(OBJS)\basedll_encconv.obj &
$(OBJS)\basedll_evtloopcmn.obj &
$(OBJS)\basedll_extended.obj & $(OBJS)\basedll_extended.obj &
$(OBJS)\basedll_ffile.obj & $(OBJS)\basedll_ffile.obj &
$(OBJS)\basedll_file.obj & $(OBJS)\basedll_file.obj &
@@ -3595,6 +3584,7 @@ BASEDLL_OBJECTS = &
$(OBJS)\basedll_fs_mem.obj & $(OBJS)\basedll_fs_mem.obj &
$(OBJS)\basedll_msgout.obj & $(OBJS)\basedll_msgout.obj &
$(OBJS)\basedll_utilscmn.obj & $(OBJS)\basedll_utilscmn.obj &
$(OBJS)\basedll_evtloopmsw.obj &
$(OBJS)\basedll_main.obj & $(OBJS)\basedll_main.obj &
$(OBJS)\basedll_mslu.obj & $(OBJS)\basedll_mslu.obj &
$(OBJS)\basedll_volume.obj $(OBJS)\basedll_volume.obj
@@ -3632,6 +3622,7 @@ BASELIB_OBJECTS = &
$(OBJS)\baselib_dynlib.obj & $(OBJS)\baselib_dynlib.obj &
$(OBJS)\baselib_dynload.obj & $(OBJS)\baselib_dynload.obj &
$(OBJS)\baselib_encconv.obj & $(OBJS)\baselib_encconv.obj &
$(OBJS)\baselib_evtloopcmn.obj &
$(OBJS)\baselib_extended.obj & $(OBJS)\baselib_extended.obj &
$(OBJS)\baselib_ffile.obj & $(OBJS)\baselib_ffile.obj &
$(OBJS)\baselib_file.obj & $(OBJS)\baselib_file.obj &
@@ -3710,6 +3701,7 @@ BASELIB_OBJECTS = &
$(OBJS)\baselib_fs_mem.obj & $(OBJS)\baselib_fs_mem.obj &
$(OBJS)\baselib_msgout.obj & $(OBJS)\baselib_msgout.obj &
$(OBJS)\baselib_utilscmn.obj & $(OBJS)\baselib_utilscmn.obj &
$(OBJS)\baselib_evtloopmsw.obj &
$(OBJS)\baselib_main.obj & $(OBJS)\baselib_main.obj &
$(OBJS)\baselib_mslu.obj & $(OBJS)\baselib_mslu.obj &
$(OBJS)\baselib_volume.obj $(OBJS)\baselib_volume.obj
@@ -3773,6 +3765,7 @@ COREDLL_OBJECTS = &
$(OBJS)\coredll_fs_mem.obj & $(OBJS)\coredll_fs_mem.obj &
$(OBJS)\coredll_msgout.obj & $(OBJS)\coredll_msgout.obj &
$(OBJS)\coredll_utilscmn.obj & $(OBJS)\coredll_utilscmn.obj &
$(OBJS)\coredll_evtloopmsw.obj &
$(OBJS)\coredll_main.obj & $(OBJS)\coredll_main.obj &
$(OBJS)\coredll_mslu.obj & $(OBJS)\coredll_mslu.obj &
$(OBJS)\coredll_volume.obj & $(OBJS)\coredll_volume.obj &
@@ -3791,6 +3784,7 @@ CORELIB_OBJECTS = &
$(OBJS)\corelib_fs_mem.obj & $(OBJS)\corelib_fs_mem.obj &
$(OBJS)\corelib_msgout.obj & $(OBJS)\corelib_msgout.obj &
$(OBJS)\corelib_utilscmn.obj & $(OBJS)\corelib_utilscmn.obj &
$(OBJS)\corelib_evtloopmsw.obj &
$(OBJS)\corelib_main.obj & $(OBJS)\corelib_main.obj &
$(OBJS)\corelib_mslu.obj & $(OBJS)\corelib_mslu.obj &
$(OBJS)\corelib_volume.obj & $(OBJS)\corelib_volume.obj &
@@ -5659,6 +5653,9 @@ $(OBJS)\monodll_dynload.obj : .AUTODEPEND ..\..\src\common\dynload.cpp
$(OBJS)\monodll_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp $(OBJS)\monodll_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(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 $(OBJS)\monodll_extended.obj : .AUTODEPEND ..\..\src\common\extended.c
$(CC) -bt=nt -zq -fo=$^@ $(MONODLL_CFLAGS) $< $(CC) -bt=nt -zq -fo=$^@ $(MONODLL_CFLAGS) $<
@@ -5893,6 +5890,9 @@ $(OBJS)\monodll_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\monodll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\monodll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(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 $(OBJS)\monodll_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -6491,11 +6491,6 @@ $(OBJS)\monodll_enhmeta.obj : .AUTODEPEND ..\..\src\msw\enhmeta.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\monodll_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp $(OBJS)\monodll_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -7176,11 +7171,6 @@ $(OBJS)\monodll_effects.obj : .AUTODEPEND ..\..\src\common\effects.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\monodll_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp $(OBJS)\monodll_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $<
@@ -7825,6 +7815,9 @@ $(OBJS)\monolib_dynload.obj : .AUTODEPEND ..\..\src\common\dynload.cpp
$(OBJS)\monolib_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp $(OBJS)\monolib_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(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 $(OBJS)\monolib_extended.obj : .AUTODEPEND ..\..\src\common\extended.c
$(CC) -bt=nt -zq -fo=$^@ $(MONOLIB_CFLAGS) $< $(CC) -bt=nt -zq -fo=$^@ $(MONOLIB_CFLAGS) $<
@@ -8059,6 +8052,9 @@ $(OBJS)\monolib_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\monolib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\monolib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(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 $(OBJS)\monolib_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -8657,11 +8653,6 @@ $(OBJS)\monolib_enhmeta.obj : .AUTODEPEND ..\..\src\msw\enhmeta.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\monolib_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp $(OBJS)\monolib_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -9342,11 +9333,6 @@ $(OBJS)\monolib_effects.obj : .AUTODEPEND ..\..\src\common\effects.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\monolib_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp $(OBJS)\monolib_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $<
@@ -9991,6 +9977,9 @@ $(OBJS)\basedll_dynload.obj : .AUTODEPEND ..\..\src\common\dynload.cpp
$(OBJS)\basedll_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp $(OBJS)\basedll_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< $(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 $(OBJS)\basedll_extended.obj : .AUTODEPEND ..\..\src\common\extended.c
$(CC) -bt=nt -zq -fo=$^@ $(BASEDLL_CFLAGS) $< $(CC) -bt=nt -zq -fo=$^@ $(BASEDLL_CFLAGS) $<
@@ -10225,6 +10214,9 @@ $(OBJS)\basedll_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\basedll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\basedll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< $(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 $(OBJS)\basedll_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $<
@@ -10285,6 +10277,9 @@ $(OBJS)\baselib_dynload.obj : .AUTODEPEND ..\..\src\common\dynload.cpp
$(OBJS)\baselib_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp $(OBJS)\baselib_encconv.obj : .AUTODEPEND ..\..\src\common\encconv.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< $(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 $(OBJS)\baselib_extended.obj : .AUTODEPEND ..\..\src\common\extended.c
$(CC) -bt=nt -zq -fo=$^@ $(BASELIB_CFLAGS) $< $(CC) -bt=nt -zq -fo=$^@ $(BASELIB_CFLAGS) $<
@@ -10519,6 +10514,9 @@ $(OBJS)\baselib_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\baselib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\baselib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< $(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 $(OBJS)\baselib_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $<
@@ -10627,6 +10625,9 @@ $(OBJS)\coredll_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\coredll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\coredll_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(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 $(OBJS)\coredll_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -10862,11 +10863,6 @@ $(OBJS)\coredll_enhmeta.obj : .AUTODEPEND ..\..\src\msw\enhmeta.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\coredll_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp $(OBJS)\coredll_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -11547,11 +11543,6 @@ $(OBJS)\coredll_effects.obj : .AUTODEPEND ..\..\src\common\effects.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\coredll_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp $(OBJS)\coredll_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(COREDLL_CXXFLAGS) $<
@@ -12022,6 +12013,9 @@ $(OBJS)\corelib_msgout.obj : .AUTODEPEND ..\..\src\common\msgout.cpp
$(OBJS)\corelib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp $(OBJS)\corelib_utilscmn.obj : .AUTODEPEND ..\..\src\common\utilscmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(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 $(OBJS)\corelib_main.obj : .AUTODEPEND ..\..\src\msw\main.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -12257,11 +12251,6 @@ $(OBJS)\corelib_enhmeta.obj : .AUTODEPEND ..\..\src\msw\enhmeta.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\corelib_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp $(OBJS)\corelib_font.obj : .AUTODEPEND ..\..\src\msw\font.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
@@ -12942,11 +12931,6 @@ $(OBJS)\corelib_effects.obj : .AUTODEPEND ..\..\src\common\effects.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<
!endif !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 !ifeq USE_GUI 1
$(OBJS)\corelib_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp $(OBJS)\corelib_fddlgcmn.obj : .AUTODEPEND ..\..\src\common\fddlgcmn.cpp
$(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $< $(CXX) -bt=nt -zq -fo=$^@ $(CORELIB_CXXFLAGS) $<

View File

@@ -526,6 +526,10 @@ SOURCE=..\..\src\common\event.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\src\common\evtloopcmn.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\common\extended.c SOURCE=..\..\src\common\extended.c
# SUBTRACT CPP /YX /Yc /Yu # SUBTRACT CPP /YX /Yc /Yu
# End Source File # End Source File
@@ -795,6 +799,10 @@ SOURCE=..\..\src\msw\dlmsw.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\src\msw\evtloopmsw.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\msw\main.cpp SOURCE=..\..\src\msw\main.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File

View File

@@ -594,10 +594,6 @@ SOURCE=..\..\src\common\event.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\src\common\evtloopcmn.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\common\fddlgcmn.cpp SOURCE=..\..\src\common\fddlgcmn.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
@@ -1820,7 +1816,7 @@ SOURCE=..\..\src\msw\enhmeta.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File
SOURCE=..\..\src\msw\evtloop.cpp SOURCE=..\..\src\msw\evtloopmsw.cpp
# End Source File # End Source File
# Begin Source File # Begin Source File

582
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -1871,6 +1871,9 @@ if test "$USE_UNIX" = 1 ; then
AC_CHECK_HEADER([sys/select.h],,, [AC_INCLUDES_DEFAULT()]) AC_CHECK_HEADER([sys/select.h],,, [AC_INCLUDES_DEFAULT()])
fi fi
dnl defines HAVE_SYS_EPOLL_H - for epoll mainloop implementation in wxbase
AC_CHECK_HEADERS(sys/epoll.h)
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
dnl Checks for compiler characteristics dnl Checks for compiler characteristics
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------

View File

@@ -89,6 +89,7 @@ All:
- Added wxEXEC_BLOCK flag (Hank Schultz) - Added wxEXEC_BLOCK flag (Hank Schultz)
- Add support for wxStream-derived classes to wxRTTI (Stas Sergeev) - Add support for wxStream-derived classes to wxRTTI (Stas Sergeev)
- Added wxStreamBuffer::Truncate() (Stas Sergeev) - Added wxStreamBuffer::Truncate() (Stas Sergeev)
- Allow using wxEventLoop in console applications (Lukasz Michalski)
All (GUI): All (GUI):

View File

@@ -25,6 +25,7 @@
class WXDLLIMPEXP_BASE wxAppConsole; class WXDLLIMPEXP_BASE wxAppConsole;
class WXDLLIMPEXP_BASE wxAppTraits; class WXDLLIMPEXP_BASE wxAppTraits;
class WXDLLIMPEXP_BASE wxCmdLineParser; class WXDLLIMPEXP_BASE wxCmdLineParser;
class WXDLLIMPEXP_BASE wxEventLoop;
class WXDLLIMPEXP_BASE wxLog; class WXDLLIMPEXP_BASE wxLog;
class WXDLLIMPEXP_BASE wxMessageOutput; class WXDLLIMPEXP_BASE wxMessageOutput;
@@ -86,7 +87,7 @@ public:
// This is the replacement for the normal main(): all program work should // This is the replacement for the normal main(): all program work should
// be done here. When OnRun() returns, the programs starts shutting down. // 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 // This is only called if OnInit() returned true so it's a good place to do
// any cleanup matching the initializations done there. // any cleanup matching the initializations done there.
@@ -170,7 +171,7 @@ public:
// either should be configurable by the user (then he can change the // either should be configurable by the user (then he can change the
// default behaviour simply by overriding CreateTraits() and returning his // default behaviour simply by overriding CreateTraits() and returning his
// own traits object) or which is GUI/console dependent as then wxAppTraits // own traits object) or which is GUI/console dependent as then wxAppTraits
// allows us to abstract the differences behind the common fa<66>ade // allows us to abstract the differences behind the common fa<66>de
wxAppTraits *GetTraits(); wxAppTraits *GetTraits();
@@ -203,22 +204,62 @@ public:
virtual void OnUnhandledException() { } virtual void OnUnhandledException() { }
#endif // wxUSE_EXCEPTIONS #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 // process all events in the wxPendingEvents list -- it is necessary to
// call this function to process posted events. This happens during each // 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 // event loop iteration in GUI mode but if there is no main loop, it may be
// also called directly. // also called directly.
virtual void ProcessPendingEvents(); 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 // doesn't do anything in this class, just a hook for GUI wxApp
virtual bool Yield(bool WXUNUSED(onlyIfNeeded) = false) { return true; } virtual bool Yield(bool WXUNUSED(onlyIfNeeded) = false) { return true; }
// make sure that idle events are sent again // 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 // execute the main GUI loop, the function returns when the loop ends
// avoid #ifdefs in the code using it virtual int MainLoop();
static bool IsMainLoopRunning() { return false; }
// 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 // debugging support
// ----------------- // -----------------
@@ -284,6 +325,9 @@ protected:
// the one and only global application object // the one and only global application object
static wxAppConsole *ms_appInstance; 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) // application info (must be set from the user code)
wxString m_vendorName, // vendor name (ACME Inc) wxString m_vendorName, // vendor name (ACME Inc)
@@ -294,6 +338,9 @@ protected:
// by GetTraits() when first needed // by GetTraits() when first needed
wxAppTraits *m_traits; 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 // the application object is a singleton anyhow, there is no sense in
// copying it // copying it
@@ -347,32 +394,7 @@ public:
// the worker functions - usually not used directly by the user code // 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 // process all currently pending events right now
// //
@@ -397,15 +419,6 @@ public:
virtual bool SendIdleEvents(wxWindow* win, wxIdleEvent& event); 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 // top level window functions
// -------------------------- // --------------------------
@@ -494,10 +507,6 @@ protected:
virtual wxAppTraits *CreateTraits(); 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) // the main top level window (may be NULL)
wxWindow *m_topWindow; wxWindow *m_topWindow;
@@ -560,8 +569,15 @@ protected:
#include "wx/os2/app.h" #include "wx/os2/app.h"
#endif #endif
#else // !GUI #else // !GUI
// allow using just wxApp (instead of wxAppConsole) in console programs // wxApp is defined in core and we cannot define another one in wxBase,
typedef wxAppConsole wxApp; // 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 #endif // GUI/!GUI
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -18,6 +18,7 @@
class WXDLLIMPEXP_BASE wxArrayString; class WXDLLIMPEXP_BASE wxArrayString;
class WXDLLIMPEXP_BASE wxObject; class WXDLLIMPEXP_BASE wxObject;
class WXDLLEXPORT wxAppTraits; class WXDLLEXPORT wxAppTraits;
class WXDLLIMPEXP_BASE wxEventLoop;
#if wxUSE_FONTMAP #if wxUSE_FONTMAP
class WXDLLEXPORT wxFontMapper; class WXDLLEXPORT wxFontMapper;
#endif // wxUSE_FONTMAP #endif // wxUSE_FONTMAP
@@ -120,6 +121,9 @@ public:
virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0; virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable() = 0;
#endif #endif
// create a new, port specific, instance of the event loop used by wxApp
virtual wxEventLoop *CreateEventLoop() = 0;
#if wxUSE_TIMER #if wxUSE_TIMER
// return platform and toolkit dependent wxTimer implementation // return platform and toolkit dependent wxTimer implementation
virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer) = 0; virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer) = 0;

View File

@@ -20,10 +20,10 @@ struct wxDFBEvent;
// wxEventLoop // wxEventLoop
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxEventLoop : public wxEventLoopManual class WXDLLIMPEXP_CORE wxGUIEventLoop : public wxEventLoopManual
{ {
public: public:
wxEventLoop(); wxGUIEventLoop();
virtual bool Pending() const; virtual bool Pending() const;
virtual bool Dispatch(); virtual bool Dispatch();
@@ -50,7 +50,7 @@ private:
private: private:
static wxIDirectFBEventBufferPtr ms_buffer; static wxIDirectFBEventBufferPtr ms_buffer;
DECLARE_NO_COPY_CLASS(wxEventLoop) DECLARE_NO_COPY_CLASS(wxGUIEventLoop)
}; };
#endif // _WX_DFB_EVTLOOP_H_ #endif // _WX_DFB_EVTLOOP_H_

View File

@@ -111,8 +111,8 @@ private:
// are we currently painting some area of this TLW? // are we currently painting some area of this TLW?
bool m_isPainting; bool m_isPainting;
friend class wxEventLoop; // for HandleDFBWindowEvent friend class wxGUIEventLoop; // for HandleDFBWindowEvent
friend class wxWindowDFB; // for SetDfbFocus friend class wxWindowDFB; // for SetDfbFocus
}; };
#endif // _WX_DFB_NONOWNEDWND_H_ #endif // _WX_DFB_NONOWNEDWND_H_

View File

@@ -2068,6 +2068,8 @@ private:
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxContextMenuEvent) DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxContextMenuEvent)
}; };
#endif // wxUSE_GUI
// Idle event // Idle event
/* /*
wxEVT_IDLE wxEVT_IDLE
@@ -2087,7 +2089,7 @@ enum wxIdleMode
wxIDLE_PROCESS_SPECIFIED wxIDLE_PROCESS_SPECIFIED
}; };
class WXDLLIMPEXP_CORE wxIdleEvent : public wxEvent class WXDLLIMPEXP_BASE wxIdleEvent : public wxEvent
{ {
public: public:
wxIdleEvent() wxIdleEvent()
@@ -2112,9 +2114,6 @@ public:
// Returns the idle event mode // Returns the idle event mode
static wxIdleMode GetMode() { return sm_idleMode; } static wxIdleMode GetMode() { return sm_idleMode; }
// Can we send an idle event?
static bool CanSend(wxWindow* win);
protected: protected:
bool m_requestMore; bool m_requestMore;
static wxIdleMode sm_idleMode; static wxIdleMode sm_idleMode;
@@ -2123,8 +2122,6 @@ private:
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIdleEvent) DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxIdleEvent)
}; };
#endif // wxUSE_GUI
/* TODO /* TODO
wxEVT_MOUSE_CAPTURE_CHANGED, wxEVT_MOUSE_CAPTURE_CHANGED,
wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95) wxEVT_SETTING_CHANGED, // WM_WININICHANGE (NT) / WM_SETTINGCHANGE (Win95)

View File

@@ -17,10 +17,10 @@
class WXDLLEXPORT wxEventLoop; class WXDLLEXPORT wxEventLoop;
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoop: a GUI event loop // wxEventLoopBase: interface for wxEventLoop
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxEventLoopBase class WXDLLIMPEXP_BASE wxEventLoopBase
{ {
public: public:
// trivial, but needed (because of wxEventLoopBase) ctor // trivial, but needed (because of wxEventLoopBase) ctor
@@ -29,6 +29,10 @@ public:
// dtor // dtor
virtual ~wxEventLoopBase() { } 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 // start the event loop, return the exit code when it is finished
virtual int Run() = 0; virtual int Run() = 0;
@@ -53,6 +57,10 @@ public:
// spawned a nested (e.g. modal) event loop, this would return false // spawned a nested (e.g. modal) event loop, this would return false
bool IsRunning() const; 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: protected:
// this function should be called before the event loop terminates, whether // this function should be called before the event loop terminates, whether
// this happens normally (because of Exit() call) or abnormally (because of // this happens normally (because of Exit() call) or abnormally (because of
@@ -66,13 +74,13 @@ protected:
DECLARE_NO_COPY_CLASS(wxEventLoopBase) 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 // this class can be used to implement a standard event loop logic using
// Pending() and Dispatch() // Pending() and Dispatch()
// //
// it also handles idle processing automatically // it also handles idle processing automatically
class WXDLLEXPORT wxEventLoopManual : public wxEventLoopBase class WXDLLIMPEXP_BASE wxEventLoopManual : public wxEventLoopBase
{ {
public: public:
wxEventLoopManual(); wxEventLoopManual();
@@ -86,10 +94,6 @@ public:
virtual void Exit(int rc = 0); virtual void Exit(int rc = 0);
protected: 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 // may be overridden to perform some action at the start of each new event
// loop iteration // loop iteration
virtual void OnNextIteration() { } virtual void OnNextIteration() { }
@@ -121,28 +125,44 @@ protected:
class WXDLLEXPORT wxEventLoopImpl; class WXDLLEXPORT wxEventLoopImpl;
class WXDLLEXPORT wxEventLoop : public wxEventLoopBase class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
{ {
public: public:
wxEventLoop() { m_impl = NULL; } wxGUIEventLoop() { m_impl = NULL; }
virtual ~wxEventLoop(); virtual ~wxGUIEventLoop();
virtual int Run(); virtual int Run();
virtual void Exit(int rc = 0); virtual void Exit(int rc = 0);
virtual bool Pending() const; virtual bool Pending() const;
virtual bool Dispatch(); virtual bool Dispatch();
virtual void WakeUp() { }
protected: protected:
// the pointer to the port specific implementation class // the pointer to the port specific implementation class
wxEventLoopImpl *m_impl; wxEventLoopImpl *m_impl;
DECLARE_NO_COPY_CLASS(wxEventLoop) DECLARE_NO_COPY_CLASS(wxGUIEventLoop)
}; };
#endif // platforms #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; } inline bool wxEventLoopBase::IsRunning() const { return GetActive() == this; }
#if wxUSE_GUI
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxModalEventLoop // wxModalEventLoop
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -151,7 +171,7 @@ inline bool wxEventLoopBase::IsRunning() const { return GetActive() == this; }
// implement modality, we will surely need platform-specific implementations // implement modality, we will surely need platform-specific implementations
// too, this generic implementation is here only temporarily to see how it // too, this generic implementation is here only temporarily to see how it
// works // works
class WXDLLEXPORT wxModalEventLoop : public wxEventLoop class WXDLLEXPORT wxModalEventLoop : public wxGUIEventLoop
{ {
public: public:
wxModalEventLoop(wxWindow *winModal) wxModalEventLoop(wxWindow *winModal)
@@ -165,13 +185,15 @@ protected:
delete m_windowDisabler; delete m_windowDisabler;
m_windowDisabler = NULL; m_windowDisabler = NULL;
wxEventLoop::OnExit(); wxGUIEventLoop::OnExit();
} }
private: private:
wxWindowDisabler *m_windowDisabler; wxWindowDisabler *m_windowDisabler;
}; };
#endif //wxUSE_GUI
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoopActivator: helper class for wxEventLoop implementations // wxEventLoopActivator: helper class for wxEventLoop implementations
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -182,16 +204,16 @@ private:
class wxEventLoopActivator class wxEventLoopActivator
{ {
public: public:
wxEventLoopActivator(wxEventLoop *evtLoop) wxEventLoopActivator(wxEventLoopBase *evtLoop)
{ {
m_evtLoopOld = wxEventLoop::GetActive(); m_evtLoopOld = wxEventLoopBase::GetActive();
wxEventLoop::SetActive(evtLoop); wxEventLoopBase::SetActive(wx_static_cast(wxEventLoop *, evtLoop));
} }
~wxEventLoopActivator() ~wxEventLoopActivator()
{ {
// restore the previously active event loop // restore the previously active event loop
wxEventLoop::SetActive(m_evtLoopOld); wxEventLoopBase::SetActive(m_evtLoopOld);
} }
private: private:

View File

@@ -1020,7 +1020,8 @@ private:
iterator insert(const iterator& it, const_reference v = value_type())\ iterator insert(const iterator& it, const_reference v = value_type())\
{ \ { \
Insert(it.m_node, (const_base_reference)v); \ 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())\ void insert(const iterator& it, size_type n, const_reference v = value_type())\
{ \ { \

View File

@@ -29,10 +29,10 @@
#if wxMAC_USE_RUN_APP_EVENT_LOOP #if wxMAC_USE_RUN_APP_EVENT_LOOP
class WXDLLEXPORT wxEventLoop : public wxEventLoopBase class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
{ {
public: public:
wxEventLoop() { m_exitcode = 0; } wxGUIEventLoop() { m_exitcode = 0; }
// implement base class pure virtuals // implement base class pure virtuals
virtual int Run(); virtual int Run();
@@ -46,10 +46,10 @@ private:
#else // manual event loop #else // manual event loop
class WXDLLEXPORT wxEventLoop : public wxEventLoopManual class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopManual
{ {
public: public:
wxEventLoop() { } wxGUIEventLoop() { }
virtual bool Pending() const; virtual bool Pending() const;
virtual bool Dispatch(); virtual bool Dispatch();

View File

@@ -14,6 +14,7 @@
#include "wx/defs.h" #include "wx/defs.h"
#include "X11/Xlib.h" #include "X11/Xlib.h"
#include "wx/evtloop.h"
class WXDLLEXPORT wxFont; class WXDLLEXPORT wxFont;
class WXDLLEXPORT wxWindow; class WXDLLEXPORT wxWindow;
@@ -185,11 +186,9 @@ wxSize wxDoGetSingleTextCtrlBestSize( Widget textWidget,
// event-related functions // event-related functions
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class wxEventLoop;
// executes one main loop iteration (implemented in src/motif/evtloop.cpp) // executes one main loop iteration (implemented in src/motif/evtloop.cpp)
// returns true if the loop should be exited // returns true if the loop should be exited
bool wxDoEventLoopIteration( wxEventLoop& evtLoop ); bool wxDoEventLoopIteration( wxGUIEventLoop& evtLoop );
// Consume all events until no more left // Consume all events until no more left
void wxFlushEvents(WXDisplay* display); void wxFlushEvents(WXDisplay* display);

View File

@@ -12,6 +12,10 @@
class wxConsoleAppTraits : public wxConsoleAppTraitsBase class wxConsoleAppTraits : public wxConsoleAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop() { return NULL; }
#if wxUSE_TIMER
virtual wxTimerImpl *CreateTimerImpl(wxTimer *) { return NULL; }
#endif // wxUSE_TIMER
}; };
#if wxUSE_GUI #if wxUSE_GUI
@@ -19,7 +23,12 @@ public:
class wxGUIAppTraits : public wxGUIAppTraitsBase class wxGUIAppTraits : public wxGUIAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop();
virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const; virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
#if wxUSE_TIMER
virtual wxTimerImpl *CreateTimerImpl(wxTimer *timer);
#endif // wxUSE_TIMER
}; };
#endif // wxUSE_GUI #endif // wxUSE_GUI

View File

@@ -19,6 +19,7 @@
class WXDLLIMPEXP_BASE wxConsoleAppTraits : public wxConsoleAppTraitsBase class WXDLLIMPEXP_BASE wxConsoleAppTraits : public wxConsoleAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop();
virtual void *BeforeChildWaitLoop(); virtual void *BeforeChildWaitLoop();
virtual void AlwaysYield(); virtual void AlwaysYield();
virtual void AfterChildWaitLoop(void *data); virtual void AfterChildWaitLoop(void *data);
@@ -34,6 +35,7 @@ public:
class WXDLLIMPEXP_CORE wxGUIAppTraits : public wxGUIAppTraitsBase class WXDLLIMPEXP_CORE wxGUIAppTraits : public wxGUIAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop();
virtual void *BeforeChildWaitLoop(); virtual void *BeforeChildWaitLoop();
virtual void AlwaysYield(); virtual void AlwaysYield();
virtual void AfterChildWaitLoop(void *data); virtual void AfterChildWaitLoop(void *data);

View File

@@ -12,31 +12,43 @@
#ifndef _WX_MSW_EVTLOOP_H_ #ifndef _WX_MSW_EVTLOOP_H_
#define _WX_MSW_EVTLOOP_H_ #define _WX_MSW_EVTLOOP_H_
#if wxUSE_GUI
#include "wx/window.h" #include "wx/window.h"
#endif
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoop // wxEventLoop
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxEventLoop : public wxEventLoopManual class WXDLLIMPEXP_BASE wxMSWEventLoopBase : public wxEventLoopManual
{ {
public: public:
wxEventLoop(); wxMSWEventLoopBase();
// implement base class pure virtuals // implement base class pure virtuals
virtual bool Pending() const; 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 // preprocess a message, return true if processed (i.e. no further
// dispatching required) // dispatching required)
virtual bool PreProcessMessage(WXMSG *msg); 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 // 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 // except those to this window (and its children) stop to be processed
// (typical examples: assert or crash report dialog) // (typical examples: assert or crash report dialog)
@@ -52,11 +64,14 @@ public:
return !ms_winCritical || IsChildOfCriticalWindow(win); return !ms_winCritical || IsChildOfCriticalWindow(win);
} }
protected:
// override/implement base class virtuals // override/implement base class virtuals
virtual bool Dispatch();
virtual void WakeUp(); virtual void WakeUp();
protected:
virtual void OnNextIteration(); virtual void OnNextIteration();
private:
// check if the given window is a child of ms_winCritical (which must be // check if the given window is a child of ms_winCritical (which must be
// non NULL) // non NULL)
static bool IsChildOfCriticalWindow(wxWindowMSW *win); static bool IsChildOfCriticalWindow(wxWindowMSW *win);
@@ -66,4 +81,21 @@ protected:
static wxWindowMSW *ms_winCritical; 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_ #endif // _WX_MSW_EVTLOOP_H_

View File

@@ -16,10 +16,10 @@
// wxEventLoop // wxEventLoop
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class WXDLLEXPORT wxEventLoop : public wxEventLoopBase class WXDLLEXPORT wxGUIEventLoop : public wxEventLoopBase
{ {
public: public:
wxEventLoop(); wxGUIEventLoop();
// implement base class pure virtuals // implement base class pure virtuals
virtual int Run(); virtual int Run();

View File

@@ -0,0 +1,101 @@
/////////////////////////////////////////////////////////////////////////////
// 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_

View File

@@ -25,14 +25,14 @@ class WXDLLIMPEXP_CORE wxGSocketIOHandler : public wxFDIOHandler
public: public:
wxGSocketIOHandler(GSocket* socket); wxGSocketIOHandler(GSocket* socket);
int GetFlags() const; int GetFlags() const;
void RemoveFlag(wxSelectDispatcherEntryFlags flag); void RemoveFlag(wxFDIODispatcherEntryFlags flag);
void AddFlag(wxSelectDispatcherEntryFlags flag); void AddFlag(wxFDIODispatcherEntryFlags flag);
virtual void OnReadWaiting();
virtual void OnWriteWaiting();
virtual void OnExceptionWaiting();
private: private:
virtual void OnReadWaiting(int fd);
virtual void OnWriteWaiting(int fd);
virtual void OnExceptionWaiting(int fd);
GSocket* m_socket; GSocket* m_socket;
int m_flags; int m_flags;
}; };

View File

@@ -1,8 +1,7 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: wx/private/selectdispatcher.h // Name: wx/private/selectdispatcher.h
// Purpose: wxSelectDispatcher class // Purpose: wxSelectDispatcher class
// Authors: Lukasz Michalski // Authors: Lukasz Michalski and Vadim Zeitlin
// Modified by:
// Created: December 2006 // Created: December 2006
// Copyright: (c) Lukasz Michalski // Copyright: (c) Lukasz Michalski
// RCS-ID: $Id$ // RCS-ID: $Id$
@@ -14,82 +13,100 @@
#include "wx/defs.h" #include "wx/defs.h"
#include "wx/hashmap.h" #include "wx/private/fdiodispatcher.h"
static const int wxSELECT_TIMEOUT_INFINITE = -1; // helper class storing all the select() fd sets
class WXDLLIMPEXP_BASE wxSelectSets
// handler used to process events on descriptors
class wxFDIOHandler
{ {
public: public:
// called when descriptor is available for non-blocking read // ctor zeroes out all fd_sets
virtual void OnReadWaiting(int fd) = 0; wxSelectSets();
// called when descriptor is available for non-blocking write // default copy ctor, assignment operator and dtor are ok
virtual void OnWriteWaiting(int fd) = 0;
// called when there is exception on descriptor
virtual void OnExceptionWaiting(int fd) = 0;
// virtual dtor for the base class // return true if fd appears in any of the sets
virtual ~wxFDIOHandler() { } bool HasFD(int fd) const;
};
// those flags describes sets where descriptor should be added // add or remove FD to our sets depending on whether flags contains
enum wxSelectDispatcherEntryFlags // wxFDIO_INPUT/OUTPUT/EXCEPTION bits
{ bool SetFD(int fd, int flags);
wxSelectInput = 1,
wxSelectOutput = 2,
wxSelectException = 4,
wxSelectAll = wxSelectInput | wxSelectOutput | wxSelectException
};
WX_DECLARE_HASH_MAP( // same as SetFD() except it unsets the bits set in the flags for the given
int, // fd
wxFDIOHandler*, bool ClearFD(int fd, int flags)
wxIntegerHash,
wxIntegerEqual,
wxFDIOHandlerMap
);
class WXDLLIMPEXP_CORE wxSelectDispatcher
{
public:
// returns instance of the table
static wxSelectDispatcher& Get();
virtual ~wxSelectDispatcher()
{ {
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 // call select() with our sets: the other parameters are the same as for
wxFDIOHandler* UnregisterFD(int fd, int flags = wxSelectAll); // select() itself
int Select(int nfds, struct timeval *tv);
// return handler for descriptor or null if fd is not registered // call the handler methods corresponding to the sets having this fd
wxFDIOHandler* FindHandler(int fd); void Handle(int fd, wxFDIOHandler& handler) const;
// calls select on registered descriptors and
void RunLoop(int timeout = wxSELECT_TIMEOUT_INFINITE);
protected:
wxSelectDispatcher() { m_maxFD = -1; }
private: private:
void ProcessSets(fd_set* readset, fd_set* writeset, fd_set* exeptset, int max_fd); typedef void (wxFDIOHandler::*Callback)();
fd_set m_readset; // the FD sets indices
fd_set m_writeset; enum
fd_set m_exeptset; {
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();
// 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();
// 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();
private:
// common part of RegisterFD() and ModifyFD()
bool DoUpdateFDAndHandler(int fd, wxFDIOHandler *handler, int flags);
// call the handlers for the fds present in the given sets
void ProcessSets(const wxSelectSets& sets);
// 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);
// the select sets containing all the registered fds
wxSelectSets m_sets;
// the highest registered fd value or -1 if none
int m_maxFD; int m_maxFD;
wxFDIOHandlerMap m_handlers;
static wxSelectDispatcher *ms_instance;
friend class wxSelectDispatcherModule;
}; };

54
include/wx/unix/app.h Normal file
View File

@@ -0,0 +1,54 @@
/////////////////////////////////////////////////////////////////////////////
// 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;
};

View File

@@ -19,6 +19,7 @@
class WXDLLEXPORT wxConsoleAppTraits : public wxConsoleAppTraitsBase class WXDLLEXPORT wxConsoleAppTraits : public wxConsoleAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop();
virtual bool CreateEndProcessPipe(wxExecuteData& execData); virtual bool CreateEndProcessPipe(wxExecuteData& execData);
virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd); virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd);
virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData); virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
@@ -33,6 +34,7 @@ public:
class WXDLLEXPORT wxGUIAppTraits : public wxGUIAppTraitsBase class WXDLLEXPORT wxGUIAppTraits : public wxGUIAppTraitsBase
{ {
public: public:
virtual wxEventLoop *CreateEventLoop();
virtual bool CreateEndProcessPipe(wxExecuteData& execData); virtual bool CreateEndProcessPipe(wxExecuteData& execData);
virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd); virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd);
virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData); virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData);
@@ -46,15 +48,15 @@ public:
#endif #endif
virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const; virtual wxPortId GetToolkitVersion(int *majVer, int *minVer) const;
#ifdef __WXGTK__ #if defined(__WXGTK__) && wxUSE_INTL
#if wxUSE_INTL
virtual void SetLocale(); virtual void SetLocale();
#endif #endif // __WXGTK__
#ifdef __WXGTK20__
virtual wxString GetDesktopEnvironment() const; virtual wxString GetDesktopEnvironment() const;
virtual wxString GetStandardCmdLineOptions(wxArrayString& names, virtual wxString GetStandardCmdLineOptions(wxArrayString& names,
wxArrayString& desc) const; wxArrayString& desc) const;
#endif // __WXGTK__ #endif // __WXGTK20____
#if defined(__WXDEBUG__) && defined(__WXGTK20__) #if defined(__WXDEBUG__) && defined(__WXGTK20__)
virtual bool ShowAssertDialog(const wxString& msg); virtual bool ShowAssertDialog(const wxString& msg);

71
include/wx/unix/evtloop.h Normal file
View File

@@ -0,0 +1,71 @@
///////////////////////////////////////////////////////////////////////////////
// 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_

View File

@@ -0,0 +1,47 @@
/////////////////////////////////////////////////////////////////////////////
// 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_

View File

@@ -1143,6 +1143,9 @@
/* Define if you have the <sys/select.h> header file. */ /* Define if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H #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. */ /* Define if fdopen is available. */
#undef HAVE_FDOPEN #undef HAVE_FDOPEN

View File

@@ -41,19 +41,19 @@ private:
}; };
// ======================================================================== // ========================================================================
// 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()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -73,7 +73,7 @@ int wxEventLoop::Run()
return exitcode; return exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -101,7 +101,7 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // 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 // a pointer to the event is returned if there is one, or nil if not
return [[NSApplication sharedApplication] return [[NSApplication sharedApplication]
@@ -111,7 +111,7 @@ bool wxEventLoop::Pending() const
dequeue: NO]; dequeue: NO];
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
// This check is required by wxGTK but probably not really for wxCocoa // This check is required by wxGTK but probably not really for wxCocoa
// Keep it here to encourage developers to write cross-platform code // Keep it here to encourage developers to write cross-platform code

View File

@@ -39,8 +39,10 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/cmdline.h" #include "wx/cmdline.h"
#include "wx/confbase.h" #include "wx/confbase.h"
#include "wx/evtloop.h"
#include "wx/filename.h" #include "wx/filename.h"
#include "wx/msgout.h" #include "wx/msgout.h"
#include "wx/ptr_scpd.h"
#include "wx/tokenzr.h" #include "wx/tokenzr.h"
#if !defined(__WXMSW__) || defined(__WXMICROWIN__) #if !defined(__WXMSW__) || defined(__WXMICROWIN__)
@@ -112,6 +114,13 @@ wxAppConsole *wxAppConsole::ms_appInstance = NULL;
wxAppInitializerFunction wxAppConsole::ms_appInitFn = NULL; wxAppInitializerFunction wxAppConsole::ms_appInitFn = NULL;
// ----------------------------------------------------------------------------
// wxEventLoopPtr
// ----------------------------------------------------------------------------
// this defines wxEventLoopPtr
wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
// ============================================================================ // ============================================================================
// wxAppConsole implementation // wxAppConsole implementation
// ============================================================================ // ============================================================================
@@ -123,6 +132,7 @@ wxAppInitializerFunction wxAppConsole::ms_appInitFn = NULL;
wxAppConsole::wxAppConsole() wxAppConsole::wxAppConsole()
{ {
m_traits = NULL; m_traits = NULL;
m_mainLoop = NULL;
ms_appInstance = this; ms_appInstance = this;
@@ -157,6 +167,13 @@ bool wxAppConsole::Initialize(int& argcOrig, wxChar **argvOrig)
argc = argcOrig; argc = argcOrig;
argv = argvOrig; argv = argvOrig;
#if wxUSE_THREADS
wxPendingEventsLocker = new wxCriticalSection;
#endif
//create port specific main loop
m_mainLoop = CreateMainLoop();
#ifndef __WXPALMOS__ #ifndef __WXPALMOS__
if ( m_appName.empty() && argv ) if ( m_appName.empty() && argv )
{ {
@@ -168,8 +185,20 @@ bool wxAppConsole::Initialize(int& argcOrig, wxChar **argvOrig)
return true; return true;
} }
wxEventLoop *wxAppConsole::CreateMainLoop()
{
return GetTraits()->CreateEventLoop();
}
void wxAppConsole::CleanUp() void wxAppConsole::CleanUp()
{ {
delete wxPendingEvents;
wxPendingEvents = NULL;
#if wxUSE_THREADS
delete wxPendingEventsLocker;
wxPendingEventsLocker = NULL;
#endif // wxUSE_THREADS
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -206,6 +235,11 @@ bool wxAppConsole::OnInit()
return true; return true;
} }
int wxAppConsole::OnRun()
{
return MainLoop();
};
int wxAppConsole::OnExit() int wxAppConsole::OnExit()
{ {
#if wxUSE_CONFIG #if wxUSE_CONFIG
@@ -219,7 +253,10 @@ int wxAppConsole::OnExit()
void wxAppConsole::Exit() void wxAppConsole::Exit()
{ {
exit(-1); if (m_mainLoop != NULL)
ExitMainLoop();
else
exit(-1);
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -248,6 +285,55 @@ wxAppTraits *wxAppConsole::GetTraits()
// event processing // event processing
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
int wxAppConsole::MainLoop()
{
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 false;
}
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
return true;
};
void wxAppConsole::ProcessPendingEvents() void wxAppConsole::ProcessPendingEvents()
{ {
#if wxUSE_THREADS #if wxUSE_THREADS
@@ -255,14 +341,8 @@ void wxAppConsole::ProcessPendingEvents()
return; return;
#endif #endif
// ensure that we're the only thread to modify the pending events list if ( !HasPendingEvents() )
wxENTER_CRIT_SECT( *wxPendingEventsLocker );
if ( !wxPendingEvents )
{
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker );
return; return;
}
// iterate until the list becomes empty // iterate until the list becomes empty
wxList::compatibility_iterator node = wxPendingEvents->GetFirst(); wxList::compatibility_iterator node = wxPendingEvents->GetFirst();
@@ -285,6 +365,21 @@ void wxAppConsole::ProcessPendingEvents()
wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); 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)) int wxAppConsole::FilterEvent(wxEvent& WXUNUSED(event))
{ {
// process the events normally by default // process the events normally by default
@@ -306,6 +401,25 @@ wxAppConsole::HandleEvent(wxEvtHandler *handler,
(handler->*func)(event); (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 #endif // wxUSE_EXCEPTIONS
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -37,11 +37,9 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/cmdline.h" #include "wx/cmdline.h"
#include "wx/evtloop.h"
#include "wx/msgout.h" #include "wx/msgout.h"
#include "wx/thread.h" #include "wx/thread.h"
#include "wx/vidmode.h" #include "wx/vidmode.h"
#include "wx/ptr_scpd.h"
#ifdef __WXDEBUG__ #ifdef __WXDEBUG__
#if wxUSE_STACKWALKER #if wxUSE_STACKWALKER
@@ -63,13 +61,6 @@ WX_CHECK_BUILD_OPTIONS("wxCore")
WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete;
// ----------------------------------------------------------------------------
// wxEventLoopPtr
// ----------------------------------------------------------------------------
// this defines wxEventLoopPtr
wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoop)
// ============================================================================ // ============================================================================
// wxAppBase implementation // wxAppBase implementation
// ============================================================================ // ============================================================================
@@ -87,8 +78,6 @@ wxAppBase::wxAppBase()
m_isActive = true; m_isActive = true;
m_mainLoop = NULL;
// We don't want to exit the app if the user code shows a dialog from its // 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 // OnInit() -- but this is what would happen if we set m_exitOnFrameDelete
// to Yes initially as this dialog would be the last top level window. // to Yes initially as this dialog would be the last top level window.
@@ -109,10 +98,6 @@ bool wxAppBase::Initialize(int& argcOrig, wxChar **argvOrig)
if ( !wxAppConsole::Initialize(argcOrig, argvOrig) ) if ( !wxAppConsole::Initialize(argcOrig, argvOrig) )
return false; return false;
#if wxUSE_THREADS
wxPendingEventsLocker = new wxCriticalSection;
#endif
wxInitializeStockLists(); wxInitializeStockLists();
wxBitmap::InitStandardHandlers(); wxBitmap::InitStandardHandlers();
@@ -157,9 +142,6 @@ void wxAppBase::CleanUp()
wxPendingEvents = NULL; wxPendingEvents = NULL;
#if wxUSE_THREADS #if wxUSE_THREADS
delete wxPendingEventsLocker;
wxPendingEventsLocker = NULL;
#if wxUSE_VALIDATORS #if wxUSE_VALIDATORS
// If we don't do the following, we get an apparent memory leak. // If we don't do the following, we get an apparent memory leak.
((wxEvtHandler&) wxDefaultValidator).ClearEventLocker(); ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker();
@@ -298,45 +280,6 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
#endif // wxUSE_CMDLINE_PARSER #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 // OnXXX() hooks
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -361,7 +304,7 @@ int wxAppBase::OnRun()
} }
//else: it has been changed, assume the user knows what he is doing //else: it has been changed, assume the user knows what he is doing
return MainLoop(); return wxAppConsole::OnRun();
} }
int wxAppBase::OnExit() int wxAppBase::OnExit()
@@ -373,11 +316,6 @@ int wxAppBase::OnExit()
return wxAppConsole::OnExit(); return wxAppConsole::OnExit();
} }
void wxAppBase::Exit()
{
ExitMainLoop();
}
wxAppTraits *wxAppBase::CreateTraits() wxAppTraits *wxAppBase::CreateTraits()
{ {
return new wxGUIAppTraits; return new wxGUIAppTraits;
@@ -439,10 +377,7 @@ bool wxAppBase::ProcessIdle()
node = node->GetNext(); node = node->GetNext();
} }
event.SetEventObject(this); needMore = wxAppConsole::ProcessIdle();
(void) ProcessEvent(event);
if (event.MoreRequested())
needMore = true;
wxUpdateUIEvent::ResetUpdateTime(); wxUpdateUIEvent::ResetUpdateTime();
@@ -456,7 +391,9 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
win->OnInternalIdle(); 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); event.SetEventObject(win);
win->GetEventHandler()->ProcessEvent(event); win->GetEventHandler()->ProcessEvent(event);
@@ -498,24 +435,6 @@ void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(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 // wxGUIAppTraitsBase
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -48,10 +48,10 @@
#if wxUSE_BASE #if wxUSE_BASE
IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxEvtHandler, wxObject)
IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject) IMPLEMENT_ABSTRACT_CLASS(wxEvent, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
#endif // wxUSE_BASE #endif // wxUSE_BASE
#if wxUSE_GUI #if wxUSE_GUI
IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent) IMPLEMENT_DYNAMIC_CLASS(wxCommandEvent, wxEvent)
IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxNotifyEvent, wxCommandEvent)
IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxScrollEvent, wxCommandEvent)
@@ -309,6 +309,8 @@ DEFINE_EVENT_TYPE(wxEVT_DETAILED_HELP)
#if wxUSE_BASE #if wxUSE_BASE
wxIdleMode wxIdleEvent::sm_idleMode = wxIDLE_PROCESS_ALL;
// ============================================================================ // ============================================================================
// implementation // implementation
// ============================================================================ // ============================================================================
@@ -469,25 +471,6 @@ void wxUpdateUIEvent::ResetUpdateTime()
#endif #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 * Scroll events
*/ */

View File

@@ -37,7 +37,7 @@
wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL; wxEventLoop *wxEventLoopBase::ms_activeLoop = NULL;
// wxEventLoopManual is unused in the other ports // 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 // wxEventLoopManual implementation
@@ -57,7 +57,7 @@ int wxEventLoopManual::Run()
// ProcessIdle() and Dispatch() below may throw so the code here should // ProcessIdle() and Dispatch() below may throw so the code here should
// be exception-safe, hence we must use local objects for all actions we // be exception-safe, hence we must use local objects for all actions we
// should undo // 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 // 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 // from inside Dispatch() but we must call it from Exit() in normal

View File

@@ -0,0 +1,97 @@
///////////////////////////////////////////////////////////////////////////////
// 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;
}

View File

@@ -2,7 +2,6 @@
// Name: src/common/gsocketiohandler.cpp // Name: src/common/gsocketiohandler.cpp
// Purpose: implementation of wxFDIOHandler for GSocket // Purpose: implementation of wxFDIOHandler for GSocket
// Author: Angel Vidal, Lukasz Michalski // Author: Angel Vidal, Lukasz Michalski
// Modified by:
// Created: 08.24.06 // Created: 08.24.06
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) 2006 Angel vidal // Copyright: (c) 2006 Angel vidal
@@ -40,38 +39,38 @@ wxGSocketIOHandler::wxGSocketIOHandler(GSocket* socket)
m_flags(0) m_flags(0)
{ {
}; }
void wxGSocketIOHandler::OnReadWaiting(int fd) void wxGSocketIOHandler::OnReadWaiting()
{ {
m_socket->Detected_Read(); m_socket->Detected_Read();
}; }
void wxGSocketIOHandler::OnWriteWaiting(int fd) void wxGSocketIOHandler::OnWriteWaiting()
{ {
m_socket->Detected_Write(); m_socket->Detected_Write();
}; }
void wxGSocketIOHandler::OnExceptionWaiting(int fd) void wxGSocketIOHandler::OnExceptionWaiting()
{ {
m_socket->Detected_Read(); m_socket->Detected_Read();
}; }
int wxGSocketIOHandler::GetFlags() const int wxGSocketIOHandler::GetFlags() const
{ {
return m_flags; return m_flags;
}; }
void wxGSocketIOHandler::RemoveFlag(wxSelectDispatcherEntryFlags flag) void wxGSocketIOHandler::RemoveFlag(wxFDIODispatcherEntryFlags flag)
{ {
m_flags &= ~flag; m_flags &= ~flag;
}; }
void wxGSocketIOHandler::AddFlag(wxSelectDispatcherEntryFlags flag) void wxGSocketIOHandler::AddFlag(wxFDIODispatcherEntryFlags flag)
{ {
m_flags |= flag; m_flags |= flag;
}; }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// GSocket interface // GSocket interface
@@ -113,11 +112,12 @@ void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket,
GSocketEvent event) GSocketEvent event)
{ {
int *m_id = (int *)(socket->m_gui_dependent); 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; return;
int c;
switch (event) switch (event)
{ {
case GSOCK_LOST: /* fall-through */ case GSOCK_LOST: /* fall-through */
@@ -127,24 +127,29 @@ void GSocketGUIFunctionsTableConcrete::Install_Callback(GSocket *socket,
default: return; default: return;
} }
wxGSocketIOHandler* handler = (wxGSocketIOHandler*)(wxSelectDispatcher::Get().FindHandler(socket->m_fd)); wxSelectDispatcher * const dispatcher = wxSelectDispatcher::Get();
if (handler == NULL) if ( !dispatcher )
return;
wxGSocketIOHandler *
handler = (wxGSocketIOHandler*)dispatcher->FindHandler(fd);
if ( !handler )
{ {
handler = new wxGSocketIOHandler(socket); handler = new wxGSocketIOHandler(socket);
}; }
if (c == 0) if (c == 0)
{ {
m_id[0] = socket->m_fd; m_id[0] = fd;
handler->AddFlag(wxSelectInput); handler->AddFlag(wxFDIO_INPUT);
} }
else else
{ {
m_id[1] = socket->m_fd; m_id[1] = fd;
handler->AddFlag(wxSelectOutput); 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, void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket,
@@ -162,26 +167,27 @@ void GSocketGUIFunctionsTableConcrete::Uninstall_Callback(GSocket *socket,
default: return; 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->RemoveFlag(flag);
{
handler = (wxGSocketIOHandler*)wxSelectDispatcher::Get().UnregisterFD(m_id[c], wxSelectInput); if ( !handler->GetFlags() )
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)
delete handler; delete handler;
} }
m_id[c] = -1;
} }
void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket) void GSocketGUIFunctionsTableConcrete::Enable_Events(GSocket *socket)

View File

@@ -1,7 +1,7 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: src/common/socketevtdispatch.cpp // Name: src/common/selectdispatcher.cpp
// Purpose: implements dispatcher for select() call // Purpose: implements dispatcher for select() call
// Author: Lukasz Michalski // Author: Lukasz Michalski and Vadim Zeitlin
// Created: December 2006 // Created: December 2006
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) 2006 Lukasz Michalski // Copyright: (c) 2006 Lukasz Michalski
@@ -29,214 +29,261 @@
#include "wx/hash.h" #include "wx/hash.h"
#endif #endif
#include <sys/time.h>
#include <unistd.h>
#ifdef HAVE_SYS_SELECT_H #ifdef HAVE_SYS_SELECT_H
# include <sys/select.h> #include <sys/select.h>
#endif #endif
#include <errno.h>
#define wxSelectDispatcher_Trace wxT("selectdispatcher") #define wxSelectDispatcher_Trace wxT("selectdispatcher")
// ============================================================================ // ============================================================================
// implementation // implementation
// ============================================================================ // ============================================================================
// ----------------------------------------------------------------------------
// wxSelectSets
// ----------------------------------------------------------------------------
int wxSelectSets::ms_flags[wxSelectSets::Max] =
{
wxFDIO_INPUT,
wxFDIO_OUTPUT,
wxFDIO_EXCEPTION,
};
const char *wxSelectSets::ms_names[wxSelectSets::Max] =
{
"input",
"output",
"exceptional",
};
wxSelectSets::Callback wxSelectSets::ms_handlers[wxSelectSets::Max] =
{
&wxFDIOHandler::OnReadWaiting,
&wxFDIOHandler::OnWriteWaiting,
&wxFDIOHandler::OnExceptionWaiting,
};
wxSelectSets::wxSelectSets()
{
for ( int n = 0; n < Max; n++ )
{
wxFD_ZERO(&m_fds[n]);
}
}
bool wxSelectSets::HasFD(int fd) const
{
for ( int n = 0; n < Max; n++ )
{
if ( wxFD_ISSET(fd, &m_fds[n]) )
return true;
}
return false;
}
bool wxSelectSets::SetFD(int fd, int flags)
{
wxCHECK_MSG( fd >= 0, false, _T("invalid descriptor") );
for ( int n = 0; n < Max; n++ )
{
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]);
}
}
return true;
}
int wxSelectSets::Select(int nfds, struct timeval *tv)
{
return select(nfds, &m_fds[Read], &m_fds[Write], &m_fds[Except], tv);
}
void wxSelectSets::Handle(int fd, wxFDIOHandler& handler) const
{
for ( int n = 0; n < Max; n++ )
{
if ( wxFD_ISSET(fd, &m_fds[n]) )
{
wxLogTrace(wxSelectDispatcher_Trace,
_T("Got %s event on fd %d"), ms_names[n], fd);
(handler.*ms_handlers[n])();
}
}
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxSelectDispatcher // wxSelectDispatcher
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxSelectDispatcher* wxSelectDispatcher::ms_instance = NULL; static wxSelectDispatcher *gs_selectDispatcher = NULL;
/* static */ /* static */
wxSelectDispatcher& wxSelectDispatcher::Get() wxSelectDispatcher *wxSelectDispatcher::Get()
{ {
if ( !ms_instance ) if ( !gs_selectDispatcher )
ms_instance = new wxSelectDispatcher;
return *ms_instance;
}
void
wxSelectDispatcher::RegisterFD(int fd, wxFDIOHandler* handler, int flags)
{
if ((flags & wxSelectInput) == wxSelectInput)
{ {
wxFD_SET(fd, &m_readset); // the dispatcher should be only created from one thread so it should
wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for input events"),fd); // be ok to use a global without any protection here
}; gs_selectDispatcher = new wxSelectDispatcher;
if ((flags & wxSelectOutput) == wxSelectOutput)
{
wxFD_SET(fd, &m_writeset);
wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for output events"),fd);
} }
if ((flags & wxSelectException) == wxSelectException) return gs_selectDispatcher;
{ }
wxFD_SET(fd, &m_exeptset);
wxLogTrace(wxSelectDispatcher_Trace,wxT("Registered fd %d for exception events"),fd);
};
m_handlers[fd] = handler; /* static */
if (fd > m_maxFD) void wxSelectDispatcher::DispatchPending()
{
if ( gs_selectDispatcher )
gs_selectDispatcher->RunLoop(0);
}
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; m_maxFD = fd;
return true;
} }
wxFDIOHandler* bool wxSelectDispatcher::ModifyFD(int fd, wxFDIOHandler *handler, int flags)
wxSelectDispatcher::UnregisterFD(int fd, int flags)
{ {
// GSocket likes to unregister -1 descriptor if ( !wxFDIODispatcher::ModifyFD(fd, handler, flags) )
if (fd == -1) return false;
return NULL;
if ((flags & wxSelectInput) == wxSelectInput) 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) )
{ {
wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from input events"),fd); if ( fd == m_maxFD )
wxFD_CLR(fd, &m_readset); {
// need to find new max fd
m_maxFD = -1;
for ( wxFDIOHandlerMap::const_iterator it = m_handlers.begin();
it != m_handlers.end();
++it )
{
if ( it->first > m_maxFD )
m_maxFD = it->first;
}
}
} }
if ((flags & wxSelectOutput) == wxSelectOutput) return handler;
}
void wxSelectDispatcher::ProcessSets(const wxSelectSets& sets)
{
for ( int fd = 0; fd <= m_maxFD; fd++ )
{ {
wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from output events"),fd); if ( !sets.HasFD(fd) )
wxFD_CLR(fd, &m_writeset); continue;
wxFDIOHandler * const handler = FindHandler(fd);
if ( !handler )
{
wxFAIL_MSG( _T("NULL handler in wxSelectDispatcher?") );
continue;
}
sets.Handle(fd, *handler);
} }
if ((flags & wxSelectException) == wxSelectException)
{
wxLogTrace(wxSelectDispatcher_Trace,wxT("Unregistered fd %d from exeption events"),fd);
wxFD_CLR(fd, &m_exeptset);
};
wxFDIOHandler* ret = NULL;
wxFDIOHandlerMap::const_iterator it = m_handlers.find(fd);
if (it != m_handlers.end())
{
ret = it->second;
if (!wxFD_ISSET(fd,&m_readset) && !wxFD_ISSET(fd,&m_writeset) && !wxFD_ISSET(fd,&m_exeptset))
{
m_handlers.erase(it);
if ( m_handlers.empty() )
m_maxFD = 0;
};
};
return ret;
} }
void wxSelectDispatcher::ProcessSets(fd_set* readset, fd_set* writeset, fd_set* exeptset, int max_fd)
{
// 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++ )
{
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);
};
};
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);
};
};
if (wxFD_ISSET(i, exeptset))
{
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
{
wxLogError(wxT("Lost fd in exept fdset: %d, removing"),i);
wxFD_CLR(i,&m_exeptset);
};
};
};
}
wxFDIOHandler* wxSelectDispatcher::FindHandler(int fd)
{
wxFDIOHandlerMap::const_iterator it = m_handlers.find(fd);
if (it != m_handlers.end())
return it->second;
return NULL;
};
void wxSelectDispatcher::RunLoop(int timeout) void wxSelectDispatcher::RunLoop(int timeout)
{ {
struct timeval tv, *ptv = NULL; struct timeval tv,
if ( timeout != wxSELECT_TIMEOUT_INFINITE ) *ptv = NULL;
if ( timeout != TIMEOUT_INFINITE )
{ {
ptv = &tv; ptv = &tv;
tv.tv_sec = 0; tv.tv_sec = 0;
tv.tv_usec = timeout*10; tv.tv_usec = timeout*1000;
}; }
int ret; for ( ;; )
do
{ {
fd_set readset = m_readset; wxSelectSets sets = m_sets;
fd_set writeset = m_writeset;
fd_set exeptset = m_exeptset;
wxStopWatch sw; wxStopWatch sw;
if ( ptv && timeout ) if ( ptv && timeout )
sw.Start(ptv->tv_usec/10); 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 ) switch ( ret )
{ {
// TODO: handle unix signals here
case -1: 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; return;
} }
if ( ptv )
{
ptv->tv_sec = 0;
ptv->tv_usec = timeout - sw.Time()*10;
}
break; break;
// timeout
case 0: case 0:
break; // timeout expired without anything happening
return;
default: default:
ProcessSets(&readset, &writeset, &exeptset, m_maxFD+1); ProcessSets(sets);
}; }
} while (ret != 0);
if ( ptv )
{
timeout -= sw.Time();
if ( timeout <= 0 )
break;
ptv->tv_usec = timeout*1000;
}
}
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxSelectDispatcherModule // wxSelectDispatcherModule
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class wxSelectDispatcherModule: public wxModule class wxSelectDispatcherModule : public wxModule
{ {
public: public:
bool OnInit() { wxLog::AddTraceMask(wxSelectDispatcher_Trace); return true; } virtual bool OnInit() { return true; }
void OnExit() { wxDELETE(wxSelectDispatcher::ms_instance); } virtual void OnExit() { wxDELETE(gs_selectDispatcher); }
private: private:
DECLARE_DYNAMIC_CLASS(wxSelectDispatcherModule) DECLARE_DYNAMIC_CLASS(wxSelectDispatcherModule)

View File

@@ -41,28 +41,28 @@
// wxEventLoop initialization // wxEventLoop initialization
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
wxIDirectFBEventBufferPtr wxEventLoop::ms_buffer; wxIDirectFBEventBufferPtr wxGUIEventLoop::ms_buffer;
wxEventLoop::wxEventLoop() wxGUIEventLoop::wxGUIEventLoop()
{ {
if ( !ms_buffer ) if ( !ms_buffer )
InitBuffer(); InitBuffer();
} }
/* static */ /* static */
void wxEventLoop::InitBuffer() void wxGUIEventLoop::InitBuffer()
{ {
ms_buffer = wxIDirectFB::Get()->CreateEventBuffer(); ms_buffer = wxIDirectFB::Get()->CreateEventBuffer();
} }
/* static */ /* static */
void wxEventLoop::CleanUp() void wxGUIEventLoop::CleanUp()
{ {
ms_buffer.Reset(); ms_buffer.Reset();
} }
/* static */ /* static */
wxIDirectFBEventBufferPtr wxEventLoop::GetDirectFBEventBuffer() wxIDirectFBEventBufferPtr wxGUIEventLoop::GetDirectFBEventBuffer()
{ {
if ( !ms_buffer ) if ( !ms_buffer )
InitBuffer(); InitBuffer();
@@ -74,14 +74,14 @@ wxIDirectFBEventBufferPtr wxEventLoop::GetDirectFBEventBuffer()
// events dispatch and loop handling // events dispatch and loop handling
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") ); wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") );
return ms_buffer->HasEvent(); return ms_buffer->HasEvent();
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") ); wxCHECK_MSG( ms_buffer, false, _T("invalid event buffer") );
@@ -126,14 +126,14 @@ bool wxEventLoop::Dispatch()
return true; return true;
} }
void wxEventLoop::WakeUp() void wxGUIEventLoop::WakeUp()
{ {
wxCHECK_RET( ms_buffer, _T("invalid event buffer") ); wxCHECK_RET( ms_buffer, _T("invalid event buffer") );
ms_buffer->WakeUp(); ms_buffer->WakeUp();
} }
void wxEventLoop::OnNextIteration() void wxGUIEventLoop::OnNextIteration()
{ {
#if wxUSE_TIMER #if wxUSE_TIMER
wxGenericTimerImpl::NotifyTimers(); wxGenericTimerImpl::NotifyTimers();
@@ -141,11 +141,11 @@ void wxEventLoop::OnNextIteration()
#if wxUSE_SOCKETS #if wxUSE_SOCKETS
// handle any pending socket events: // handle any pending socket events:
wxSelectDispatcher::Get().RunLoop(0); wxSelectDispatcher::DispatchPending();
#endif #endif
} }
void wxEventLoop::Yield() void wxGUIEventLoop::Yield()
{ {
// process all pending events: // process all pending events:
while ( Pending() ) while ( Pending() )
@@ -160,7 +160,7 @@ void wxEventLoop::Yield()
// DirectFB -> wxWidgets events translation // DirectFB -> wxWidgets events translation
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void wxEventLoop::HandleDFBEvent(const wxDFBEvent& event) void wxGUIEventLoop::HandleDFBEvent(const wxDFBEvent& event)
{ {
switch ( event.GetClass() ) switch ( event.GetClass() )
{ {

View File

@@ -16,6 +16,7 @@
#endif #endif
#include "wx/utils.h" #include "wx/utils.h"
#include "wx/evtloop.h"
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/unix/execute.h" #include "wx/unix/execute.h"
@@ -38,6 +39,11 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_DFB; return wxPORT_DFB;
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
};
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// display characteristics // display characteristics
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -135,7 +135,7 @@ int wxDialog::ShowModal()
// NOTE: gtk_window_set_modal internally calls gtk_grab_add() ! // NOTE: gtk_window_set_modal internally calls gtk_grab_add() !
gtk_window_set_modal(GTK_WINDOW(m_widget), TRUE); gtk_window_set_modal(GTK_WINDOW(m_widget), TRUE);
wxEventLoop().Run(); wxGUIEventLoop().Run();
gtk_window_set_modal(GTK_WINDOW(m_widget), FALSE); gtk_window_set_modal(GTK_WINDOW(m_widget), FALSE);

View File

@@ -62,12 +62,12 @@ wxDEFINE_TIED_SCOPED_PTR_TYPE(wxEventLoopImpl)
// wxEventLoop running and exiting // wxEventLoop running and exiting
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxEventLoop::~wxEventLoop() wxGUIEventLoop::~wxGUIEventLoop()
{ {
wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -83,7 +83,7 @@ int wxEventLoop::Run()
return m_impl->GetExitCode(); 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") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -96,7 +96,7 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // wxEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
bool pending; bool pending;
wxApp* app = wxTheApp; wxApp* app = wxTheApp;
@@ -108,7 +108,7 @@ bool wxEventLoop::Pending() const
return pending; return pending;
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") ); wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );

View File

@@ -1173,7 +1173,7 @@ void wxTopLevelWindowGTK::AddGrab()
{ {
m_grabbed = true; m_grabbed = true;
gtk_grab_add( m_widget ); gtk_grab_add( m_widget );
wxEventLoop().Run(); wxGUIEventLoop().Run();
gtk_grab_remove( m_widget ); gtk_grab_remove( m_widget );
} }
} }

View File

@@ -26,6 +26,7 @@
#include "wx/unix/execute.h" #include "wx/unix/execute.h"
#include "wx/gtk/private/timer.h" #include "wx/gtk/private/timer.h"
#include "wx/evtloop.h"
#ifdef __WXDEBUG__ #ifdef __WXDEBUG__
#include "wx/gtk/assertdlg_gtk.h" #include "wx/gtk/assertdlg_gtk.h"
@@ -363,6 +364,12 @@ static wxString GetSM()
// wxGUIAppTraits // wxGUIAppTraits
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
wxEventLoop *wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop();
}
#if wxUSE_INTL #if wxUSE_INTL
void wxGUIAppTraits::SetLocale() void wxGUIAppTraits::SetLocale()
{ {

View File

@@ -52,19 +52,19 @@ private:
}; };
// ============================================================================ // ============================================================================
// 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()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -84,7 +84,7 @@ int wxEventLoop::Run()
return exitcode; return exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -97,7 +97,7 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // wxEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
if (wxTheApp) if (wxTheApp)
{ {
@@ -109,7 +109,7 @@ bool wxEventLoop::Pending() const
return gtk_events_pending(); return gtk_events_pending();
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") ); wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );

View File

@@ -20,6 +20,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/gtk1/private/timer.h" #include "wx/gtk1/private/timer.h"
#include "wx/evtloop.h"
#include "wx/process.h" #include "wx/process.h"
#include "wx/unix/execute.h" #include "wx/unix/execute.h"
@@ -202,9 +203,9 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_GTK; return wxPORT_GTK;
} }
wxString wxGUIAppTraits::GetDesktopEnvironment() const wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{ {
return wxEmptyString; return new wxEventLoop;
} }
#if wxUSE_INTL #if wxUSE_INTL

View File

@@ -45,7 +45,7 @@
#if wxMAC_USE_RUN_APP_EVENT_LOOP #if wxMAC_USE_RUN_APP_EVENT_LOOP
int wxEventLoop::Run() int wxGUIEventLoop::Run()
{ {
wxEventLoopActivator activate(this); wxEventLoopActivator activate(this);
@@ -54,7 +54,7 @@ int wxEventLoop::Run()
return m_exitcode; return m_exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
m_exitcode = rc; m_exitcode = rc;
@@ -69,7 +69,7 @@ void wxEventLoop::Exit(int rc)
// functions only used by wxEventLoopManual-based implementation // functions only used by wxEventLoopManual-based implementation
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
void wxEventLoop::WakeUp() void wxGUIEventLoop::WakeUp()
{ {
extern void wxMacWakeUp(); extern void wxMacWakeUp();
@@ -82,7 +82,7 @@ void wxEventLoop::WakeUp()
// low level functions used in both cases // low level functions used in both cases
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
EventRef theEvent; EventRef theEvent;
@@ -96,7 +96,7 @@ bool wxEventLoop::Pending() const
) == noErr; ) == noErr;
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
// TODO: we probably should do the dispatching directly from here but for // 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 // now it's easier to forward to wxApp which has all the code to do

View File

@@ -61,6 +61,7 @@
#include "wx/mac/private/timer.h" #include "wx/mac/private/timer.h"
#endif // wxUSE_GUI #endif // wxUSE_GUI
#include "wx/evtloop.h"
#include "wx/mac/private.h" #include "wx/mac/private.h"
#if defined(__MWERKS__) && wxUSE_UNICODE #if defined(__MWERKS__) && wxUSE_UNICODE
@@ -380,6 +381,11 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_MAC; return wxPORT_MAC;
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer) wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
{ {
return new wxCarbonTimerImpl(timer); return new wxCarbonTimerImpl(timer);

View File

@@ -1237,7 +1237,7 @@ void wxDC::DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
if ( x ) if ( x )
// VS: YDEV is corrent, it should *not* be XDEV, because font's are // VS: YDEV is corrent, it should *not* be XDEV, because font's are
// only scaled according to m_scaleY // only scaled according to m_scaleY
*x = YDEV2LOGREL(m_MGLDC->textWidth(string.c_str())); *x = YDEV2LOGREL(m_MGLDC->textWidth(string.wc_str()));
if ( y ) if ( y )
*y = YDEV2LOGREL(m_MGLDC->textHeight()); *y = YDEV2LOGREL(m_MGLDC->textHeight());
if ( descent ) if ( descent )

View File

@@ -26,6 +26,8 @@
#endif //WX_PRECOMP #endif //WX_PRECOMP
#include "wx/evtloop.h" #include "wx/evtloop.h"
#include "wx/generic/private/timer.h"
#include "wx/mgl/private.h" #include "wx/mgl/private.h"
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -79,9 +81,10 @@ void wxEventLoopImpl::Dispatch()
for (;;) for (;;)
{ {
#if wxUSE_TIMER #if wxUSE_TIMER
wxTimer::NotifyTimers(); wxGenericTimerImpl::NotifyTimers();
MGL_wmUpdateDC(g_winMng);
#endif #endif
MGL_wmUpdateDC(g_winMng);
EVT_pollJoystick(); EVT_pollJoystick();
if ( EVT_getNext(&evt, EVT_EVERYEVT) ) break; if ( EVT_getNext(&evt, EVT_EVERYEVT) ) break;
PM_sleep(10); PM_sleep(10);
@@ -97,19 +100,19 @@ bool wxEventLoopImpl::SendIdleEvent()
} }
// ============================================================================ // ============================================================================
// 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()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -146,7 +149,7 @@ int wxEventLoop::Run()
return exitcode; return exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -162,7 +165,7 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // wxEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
// update the display here, so that wxYield refreshes display and // update the display here, so that wxYield refreshes display and
// changes take effect immediately, not after emptying events queue: // changes take effect immediately, not after emptying events queue:
@@ -173,10 +176,11 @@ bool wxEventLoop::Pending() const
return (bool)(EVT_peekNext(&evt, EVT_EVERYEVT)); 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") ); wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );
m_impl->Dispatch(); m_impl->Dispatch();
return m_impl->GetKeepLooping(); return m_impl->GetKeepLooping();
} }

View File

@@ -24,6 +24,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/process.h" #include "wx/process.h"
#include "wx/evtloop.h"
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
@@ -122,6 +123,12 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_MGL; return wxPORT_MGL;
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
void wxGetMousePosition(int* x, int* y) void wxGetMousePosition(int* x, int* y)
{ {
MS_getPos(x, y); MS_getPos(x, y);

View File

@@ -101,12 +101,12 @@ bool wxEventLoopImpl::SendIdleMessage()
// wxEventLoop running and exiting // wxEventLoop running and exiting
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxEventLoop::~wxEventLoop() wxGUIEventLoop::~wxGUIEventLoop()
{ {
wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -131,7 +131,7 @@ int wxEventLoop::Run()
return exitcode; return exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -145,12 +145,12 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // wxEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
return XtAppPending( (XtAppContext)wxTheApp->GetAppContext() ) != 0; return XtAppPending( (XtAppContext)wxTheApp->GetAppContext() ) != 0;
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
XEvent event; XEvent event;
XtAppContext context = (XtAppContext)wxTheApp->GetAppContext(); XtAppContext context = (XtAppContext)wxTheApp->GetAppContext();
@@ -338,7 +338,7 @@ bool CheckForKeyUp(XEvent* event)
// executes one main loop iteration (declared in include/wx/motif/private.h) // executes one main loop iteration (declared in include/wx/motif/private.h)
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxDoEventLoopIteration( wxEventLoop& evtLoop ) bool wxDoEventLoopIteration( wxGUIEventLoop& evtLoop )
{ {
bool moreRequested, pendingEvents; bool moreRequested, pendingEvents;

View File

@@ -136,6 +136,11 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_MOTIF; return wxPORT_MOTIF;
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer* timer) wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer* timer)
{ {
return new wxMotifTimerImpl(timer); return new wxMotifTimerImpl(timer);

View File

@@ -266,10 +266,14 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, int *minVer) const
#endif #endif
} }
wxTimerImpl * wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
{ {
return new wxMSWTimerImpl(timer); return new wxMSWTimerImpl(timer);
}
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
} }
// =========================================================================== // ===========================================================================

View File

@@ -28,6 +28,7 @@
#endif //WX_PRECOMP #endif //WX_PRECOMP
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/evtloop.h"
#include "wx/msw/private/timer.h" #include "wx/msw/private/timer.h"
// MBN: this is a workaround for MSVC 5: if it is not #included in // MBN: this is a workaround for MSVC 5: if it is not #included in
// some wxBase file, wxRecursionGuard methods won't be exported from // some wxBase file, wxRecursionGuard methods won't be exported from
@@ -81,12 +82,15 @@ bool wxConsoleAppTraits::DoMessageFromThreadWait()
return true; return true;
} }
wxTimerImpl * wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
{ {
return new wxMSWTimerImpl(timer); return new wxMSWTimerImpl(timer);
} }
wxEventLoop *wxConsoleAppTraits::CreateEventLoop()
{
return new wxEventLoop();
}
WXDWORD wxConsoleAppTraits::WaitForThread(WXHANDLE hThread) WXDWORD wxConsoleAppTraits::WaitForThread(WXHANDLE hThread)
{ {

341
src/msw/evtloopmsw.cpp Normal file
View File

@@ -0,0 +1,341 @@
///////////////////////////////////////////////////////////////////////////////
// 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

View File

@@ -2464,7 +2464,7 @@ LRESULT WXDLLEXPORT APIENTRY _EXPORT wxWndProc(HWND hWnd, UINT message, WPARAM w
LRESULT rc; LRESULT rc;
if ( wnd && wxEventLoop::AllowProcessing(wnd) ) if ( wnd && wxGUIEventLoop::AllowProcessing(wnd) )
rc = wnd->MSWWindowProc(message, wParam, lParam); rc = wnd->MSWWindowProc(message, wParam, lParam);
else else
rc = ::DefWindowProc(hWnd, message, wParam, lParam); rc = ::DefWindowProc(hWnd, message, wParam, lParam);

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: src/os2/evtloop.cpp // Name: src/os2/evtloop.cpp
// Purpose: implements wxEventLoop for PM // Purpose: implements wxGUIEventLoop for PM
// Author: Vadim Zeitlin // Author: Vadim Zeitlin
// Modified by: // Modified by:
// Created: 01.06.01 // Created: 01.06.01
@@ -197,14 +197,14 @@ bool wxEventLoopImpl::SendIdleMessage()
} }
// ============================================================================ // ============================================================================
// 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()") ); wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") );
} }
@@ -227,18 +227,18 @@ wxEventLoop::~wxEventLoop()
class CallEventLoopMethod class CallEventLoopMethod
{ {
public: 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) { } : m_evtLoop(evtLoop), m_fn(fn) { }
~CallEventLoopMethod() { (m_evtLoop->*m_fn)(); } ~CallEventLoopMethod() { (m_evtLoop->*m_fn)(); }
private: private:
wxEventLoop *m_evtLoop; wxGUIEventLoop *m_evtLoop;
FuncType m_fn; FuncType m_fn;
}; };
int wxEventLoop::Run() int wxGUIEventLoop::Run()
{ {
// event loops are not recursive, you need to create another loop! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -249,7 +249,7 @@ int wxEventLoop::Run()
wxEventLoopActivator activate(this); wxEventLoopActivator activate(this);
wxEventLoopImplTiedPtr impl(&m_impl, new wxEventLoopImpl); wxEventLoopImplTiedPtr impl(&m_impl, new wxEventLoopImpl);
CallEventLoopMethod callOnExit(this, &wxEventLoop::OnExit); CallEventLoopMethod callOnExit(this, &wxGUIEventLoop::OnExit);
for ( ;; ) for ( ;; )
{ {
@@ -283,7 +283,7 @@ int wxEventLoop::Run()
return m_impl->GetExitCode(); 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") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -293,16 +293,16 @@ void wxEventLoop::Exit(int rc)
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoop message processing dispatching // wxGUIEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
QMSG msg; QMSG msg;
return ::WinPeekMsg(vHabmain, &msg, 0, 0, 0, PM_NOREMOVE) != 0; 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") ); wxCHECK_MSG( IsRunning(), false, _T("can't call Dispatch() if not running") );

View File

@@ -34,6 +34,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/os2/private/timer.h" #include "wx/os2/private/timer.h"
#include "wx/evtloop.h"
#include "wx/os2/private.h" // includes <windows.h> #include "wx/os2/private.h" // includes <windows.h>
@@ -267,6 +268,10 @@ wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
return new wxOS2TimerImpl(timer); return new wxOS2TimerImpl(timer);
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// window information functions // window information functions

View File

@@ -47,6 +47,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/filename.h" #include "wx/filename.h"
#include "wx/dynlib.h" #include "wx/dynlib.h"
#include "wx/evtloop.h"
#if wxUSE_TOOLTIPS #if wxUSE_TOOLTIPS
#include "wx/tooltip.h" #include "wx/tooltip.h"
@@ -123,6 +124,11 @@ wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
{ {
return new wxPalmOSTimerImpl(timer); return new wxPalmOSTimerImpl(timer);
}; };
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
// =========================================================================== // ===========================================================================
// wxApp implementation // wxApp implementation
// =========================================================================== // ===========================================================================

View File

@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Name: src/palmos/evtloop.cpp // Name: src/palmos/evtloop.cpp
// Purpose: implements wxEventLoop for Palm OS // Purpose: implements wxGUIEventLoop for Palm OS
// Author: William Osborne - minimal working wxPalmOS port // Author: William Osborne - minimal working wxPalmOS port
// Modified by: // Modified by:
// Created: 10.14.04 // Created: 10.14.04
@@ -52,42 +52,42 @@
#include <Form.h> #include <Form.h>
// ============================================================================ // ============================================================================
// wxEventLoop implementation // wxGUIEventLoop implementation
// ============================================================================ // ============================================================================
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// ctor/dtor // ctor/dtor
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxEventLoop::wxEventLoop() wxGUIEventLoop::wxGUIEventLoop()
{ {
m_shouldExit = false; m_shouldExit = false;
m_exitcode = 0; 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; return false;
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoop running and exiting // wxGUIEventLoop running and exiting
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::IsRunning() const bool wxGUIEventLoop::IsRunning() const
{ {
return true; return true;
} }
int wxEventLoop::Run() int wxGUIEventLoop::Run()
{ {
status_t error; status_t error;
EventType event; EventType event;
@@ -112,7 +112,7 @@ int wxEventLoop::Run()
return 0; return 0;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
FrmCloseAllForms(); FrmCloseAllForms();
@@ -122,15 +122,15 @@ void wxEventLoop::Exit(int rc)
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxEventLoop message processing dispatching // wxGUIEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
return false; return false;
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
return false; return false;
} }

77
src/unix/appunix.cpp Normal file
View File

@@ -0,0 +1,77 @@
/////////////////////////////////////////////////////////////////////////////
// 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;
}

View File

@@ -32,6 +32,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/unix/execute.h" #include "wx/unix/execute.h"
#include "wx/evtloop.h"
#include "wx/unix/private/timer.h" #include "wx/unix/private/timer.h"
// for waitpid() // for waitpid()
@@ -82,10 +83,15 @@ wxConsoleAppTraits::WaitForChild(wxExecuteData& execData)
return exitcode; return exitcode;
} }
wxTimerImpl* wxTimerImpl *wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
wxConsoleAppTraits::CreateTimerImpl(wxTimer *timer)
{ {
// this doesn't work yet as there is no main loop in console applications // this doesn't work yet as there is no main loop in console applications
// (but it will be added later) // (but it will be added later)
return new wxUnixTimerImpl(timer); return new wxUnixTimerImpl(timer);
} }
wxEventLoop *wxConsoleAppTraits::CreateEventLoop()
{
return new wxEventLoop();
}

View File

@@ -0,0 +1,219 @@
///////////////////////////////////////////////////////////////////////////////
// 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

192
src/unix/evtloopunix.cpp Normal file
View File

@@ -0,0 +1,192 @@
/////////////////////////////////////////////////////////////////////////////
// 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();
}

View File

@@ -143,12 +143,12 @@ bool wxEventLoopImpl::SendIdleEvent()
// wxEventLoop running and exiting // wxEventLoop running and exiting
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxEventLoop::~wxEventLoop() wxGUIEventLoop::~wxGUIEventLoop()
{ {
wxASSERT_MSG( !m_impl, _T("should have been deleted in Run()") ); 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! // event loops are not recursive, you need to create another loop!
wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") ); wxCHECK_MSG( !IsRunning(), -1, _T("can't reenter a message loop") );
@@ -191,7 +191,7 @@ int wxEventLoop::Run()
return exitcode; return exitcode;
} }
void wxEventLoop::Exit(int rc) void wxGUIEventLoop::Exit(int rc)
{ {
wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") ); wxCHECK_RET( IsRunning(), _T("can't call Exit() if not running") );
@@ -203,13 +203,13 @@ void wxEventLoop::Exit(int rc)
// wxEventLoop message processing dispatching // wxEventLoop message processing dispatching
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
bool wxEventLoop::Pending() const bool wxGUIEventLoop::Pending() const
{ {
XFlush( wxGlobalDisplay() ); XFlush( wxGlobalDisplay() );
return (XPending( wxGlobalDisplay() ) > 0); return (XPending( wxGlobalDisplay() ) > 0);
} }
bool wxEventLoop::Dispatch() bool wxGUIEventLoop::Dispatch()
{ {
XEvent event; XEvent event;
@@ -263,7 +263,7 @@ bool wxEventLoop::Dispatch()
#if wxUSE_SOCKETS #if wxUSE_SOCKETS
// handle any pending socket events: // handle any pending socket events:
wxSelectDispatcher::Get().RunLoop(0); wxSelectDispatcher::DispatchPending();
#endif #endif
(void) m_impl->ProcessEvent( &event ); (void) m_impl->ProcessEvent( &event );

View File

@@ -35,6 +35,7 @@
#include "wx/apptrait.h" #include "wx/apptrait.h"
#include "wx/generic/private/timer.h" #include "wx/generic/private/timer.h"
#include "wx/evtloop.h"
#include <ctype.h> #include <ctype.h>
#include <stdarg.h> #include <stdarg.h>
@@ -170,6 +171,11 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
return wxPORT_X11; return wxPORT_X11;
} }
wxEventLoop* wxGUIAppTraits::CreateEventLoop()
{
return new wxEventLoop;
}
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// display info // display info
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View File

@@ -327,9 +327,11 @@ wx/xti.h
wx/xtistrm.h wx/xtistrm.h
wx/zipstrm.h wx/zipstrm.h
wx/zstream.h wx/zstream.h
wx/unix/app.h
wx/unix/apptbase.h wx/unix/apptbase.h
wx/unix/apptrait.h wx/unix/apptrait.h
wx/unix/execute.h wx/unix/execute.h
wx/unix/evtloop.h
wx/unix/mimetype.h wx/unix/mimetype.h
wx/unix/pipe.h wx/unix/pipe.h
wx/unix/private.h wx/unix/private.h

View File

@@ -230,9 +230,11 @@ wx/xti.h
wx/xtistrm.h wx/xtistrm.h
wx/zipstrm.h wx/zipstrm.h
wx/zstream.h wx/zstream.h
wx/unix/app.h
wx/unix/apptbase.h wx/unix/apptbase.h
wx/unix/apptrait.h wx/unix/apptrait.h
wx/unix/execute.h wx/unix/execute.h
wx/unix/evtloop.h
wx/unix/mimetype.h wx/unix/mimetype.h
wx/unix/pipe.h wx/unix/pipe.h
wx/unix/private.h wx/unix/private.h

View File

@@ -255,9 +255,11 @@ wx/xti.h
wx/xtistrm.h wx/xtistrm.h
wx/zipstrm.h wx/zipstrm.h
wx/zstream.h wx/zstream.h
wx/unix/app.h
wx/unix/apptbase.h wx/unix/apptbase.h
wx/unix/apptrait.h wx/unix/apptrait.h
wx/unix/execute.h wx/unix/execute.h
wx/unix/evtloop.h
wx/unix/mimetype.h wx/unix/mimetype.h
wx/unix/pipe.h wx/unix/pipe.h
wx/unix/private.h wx/unix/private.h