diff --git a/.travis.yml b/.travis.yml index f97693e..243d88c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ # # Project file for the Travis CI remote builder service. # -# Version: @(#).travis.yml 1.0.11 2018/05/08 +# Version: @(#).travis.yml 1.0.11 2018/05/09 # # Authors: Natalia Portillo, # Fred N. van Kempen, @@ -62,9 +62,9 @@ env: before_install: # Kill off the (most likely running) APT daily update. - - sudo systemctl stop apt-daily.service -# - sudo systemctl kill --kill-who=all apt-daily.service - - sleep 5 +# - sudo systemctl stop apt-daily.service + - sudo systemctl kill --kill-who=all apt-daily.service + - sleep 10 - sudo rm -f /var/lib/dpkg/lock # Now install some packages we need. - sudo apt-get install libz-mingw-w64-dev diff --git a/src/win/VARCem.rc b/src/win/VARCem.rc index e9af784..a1c1cc3 100644 --- a/src/win/VARCem.rc +++ b/src/win/VARCem.rc @@ -8,7 +8,7 @@ * * Application resource script for Windows. * - * Version: @(#)VARCem.rc 1.0.26 2018/05/07 + * Version: @(#)VARCem.rc 1.0.27 2018/05/10 * * Authors: Fred N. van Kempen, * Miran Grca, @@ -80,24 +80,23 @@ BEGIN BEGIN MENUITEM "DirectDraw", IDM_RENDER_1 MENUITEM "Direct3D", IDM_RENDER_2 -#define IDM_NEXT IDM_RENDER_2 + 1 #ifdef USE_SDL -# define IDM_RENDER_SDL IDM_NEXT +# define IDM_RENDER_SDL IDM_RENDER_2+1 MENUITEM "SDL", IDM_RENDER_SDL -# undef IDM_NEXT -# define IDM_NEXT IDM_RENDER_SDL + 1 +#else +# define IDM_RENDER_SDL IDM_RENDER_2 #endif #ifdef USE_VNC -# define IDM_RENDER_VNC IDM_NEXT +# define IDM_RENDER_VNC IDM_RENDER_SDL+1 MENUITEM "VNC Remote", IDM_RENDER_VNC -# undef IDM_NEXT -# define IDM_NEXT IDM_RENDER_VNC + 1 +#else +# define IDM_RENDER_VNC IDM_RENDER_SDL #endif #ifdef USE_RDP -# define IDM_RENDER_RDP IDM_NEXT +# define IDM_RENDER_RDP IDM_RENDER_VNC+1 MENUITEM "RDP Remote", IDM_RENDER_RDP -# undef IDM_NEXT -# define IDM_NEXT IDM_RENDER_RDP + 1 +#else +# define IDM_RENDER_RDP IDM_RENDER_VNC #endif END MENUITEM SEPARATOR diff --git a/src/win/mingw/Makefile.MinGW b/src/win/mingw/Makefile.MinGW index 3cf02f8..ed78379 100644 --- a/src/win/mingw/Makefile.MinGW +++ b/src/win/mingw/Makefile.MinGW @@ -8,7 +8,7 @@ # # Makefile for Windows systems using the MinGW32 environment. # -# Version: @(#)Makefile.mingw 1.0.43 2018/05/10 +# Version: @(#)Makefile.mingw 1.0.44 2018/05/10 # # Author: Fred N. van Kempen, # @@ -89,8 +89,11 @@ endif ifndef USB USB := n endif +ifndef SDL + SDL := n +endif ifndef VNC - VNC := y + VNC := n endif ifndef RDP RDP := n @@ -151,6 +154,8 @@ ifndef PROG endif endif + +# Which modules to include a development build. ifeq ($(DEV_BUILD), y) CRASHDUMP := y DEV_BRANCH := y @@ -165,6 +170,7 @@ ifeq ($(DEV_BUILD), y) WONDER := y endif + # WxWidgets basic info. Extract using the config program. ifneq ($(WX), n) EXPATH += wx @@ -214,10 +220,10 @@ VPATH := $(EXPATH) . cpu \ devices/video \ machines ui win + # # Select the required build environment. We have, uhm, many.. # -# ifneq ($(CROSS), n) # Cross-compiling (under Linux), select proper version. ifeq ($(X64), y) @@ -317,27 +323,27 @@ else endif endif ifeq ($(PROFILER), y) -LDFLAGS += -Xlinker -Map=$(PROG).map + LDFLAGS += -Xlinker -Map=$(PROG).map endif ifeq ($(CRASHDUMP), y) -OPTS += -DUSE_CRASHDUMP + OPTS += -DUSE_CRASHDUMP endif ifeq ($(RELEASE), y) -OPTS += -DRELEASE_BUILD -RFLAGS += -DRELEASE_BUILD + OPTS += -DRELEASE_BUILD + RFLAGS += -DRELEASE_BUILD endif ifeq ($(VRAMDUMP), y) -OPTS += -DENABLE_VRAM_DUMP -RFLAGS += -DENABLE_VRAM_DUMP + OPTS += -DENABLE_VRAM_DUMP + RFLAGS += -DENABLE_VRAM_DUMP endif ifeq ($(X64), y) -PLATCG := codegen_x86-64.o -CGOPS := codegen_ops_x86-64.h -VCG := vid_voodoo_codegen_x86-64.h + PLATCG := codegen_x86-64.o + CGOPS := codegen_ops_x86-64.h + VCG := vid_voodoo_codegen_x86-64.h else -PLATCG := codegen_x86.o -CGOPS := codegen_ops_x86.h -VCG := vid_voodoo_codegen_x86.h + PLATCG := codegen_x86.o + CGOPS := codegen_ops_x86.h + VCG := vid_voodoo_codegen_x86.h endif LIBS := -mwindows \ -lddraw -ldinput8 -ldxguid -ld3d9 -ld3dx9 \ @@ -345,15 +351,15 @@ LIBS := -mwindows \ LIBS += -lkernel32 -lwsock32 -liphlpapi -lpsapi LIBS += -lpthread -static -lstdc++ -lgcc ifneq ($(X64), y) -LIBS += -Wl,--large-address-aware + LIBS += -Wl,--large-address-aware endif # Optional modules. ifeq ($(DYNAREC), y) -OPTS += -DUSE_DYNAREC -RFLAGS += -DUSE_DYNAREC -DYNARECOBJ := 386_dynarec_ops.o \ + OPTS += -DUSE_DYNAREC + RFLAGS += -DUSE_DYNAREC + DYNARECOBJ := 386_dynarec_ops.o \ codegen.o \ codegen_ops.o \ codegen_timing_common.o codegen_timing_486.o \ @@ -361,29 +367,18 @@ DYNARECOBJ := 386_dynarec_ops.o \ codegen_timing_winchip.o $(PLATCG) endif -ifneq ($(WX), n) - OPTS += -DUSE_WX $(WX_FLAGS) - LIBS += $(WX_LIBS) -lm - UIOBJ := wx_main.o wx_ui.o wx_stbar.o wx_render.o -else - UIOBJ := win_ui.o \ - win_ddraw.o win_d3d.o \ - win_dialog.o win_about.o win_status.o \ - win_settings.o win_devconf.o win_snd_gain.o \ - win_new_floppy.o +ifeq ($(OPENAL), y) + OPTS += -DUSE_OPENAL endif -ifeq ($(OPENAL), y) -OPTS += -DUSE_OPENAL -endif ifeq ($(FLUIDSYNTH), y) -OPTS += -DUSE_FLUIDSYNTH -FSYNTHOBJ := midi_fluidsynth.o + OPTS += -DUSE_FLUIDSYNTH + FSYNTHOBJ := midi_fluidsynth.o endif ifeq ($(MUNT), y) -OPTS += -DUSE_MUNT -MUNTOBJ := midi_mt32.o \ + OPTS += -DUSE_MUNT + MUNTOBJ := midi_mt32.o \ Analog.o BReverbModel.o File.o FileStream.o LA32Ramp.o \ LA32FloatWaveGenerator.o LA32WaveGenerator.o \ MidiStreamParser.o Part.o Partial.o PartialManager.o \ @@ -391,34 +386,91 @@ MUNTOBJ := midi_mt32.o \ Tables.o TVA.o TVF.o TVP.o sha1.o c_interface.o endif -ifeq ($(VNC), y) -OPTS += -DUSE_VNC -RFLAGS += -DUSE_VNC +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(SDL), n) + OPTS += -DUSE_SDL + RFLAGS += -DUSE_SDL + ifneq ($(SDL_PATH), ) + OPTS += -I$(SDL_PATH)/include/mingw -I$(SDL_PATH)/include + ifeq ($(X64), y) + LIBS += -L$(SDL_PATH)/lib/mingw/x64 + else + LIBS += -L$(SDL_PATH)/lib/mingw/x86 + endif + endif + ifeq ($(SDL), y) + LIBS += -lsdl2 + endif + SDLOBJ := win_sdl.o +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(VNC), n) + OPTS += -DUSE_VNC + RFLAGS += -DUSE_VNC ifneq ($(VNC_PATH), ) - OPTS += -I$(VNC_PATH)\INCLUDE - LIBS += -L$(VNC_PATH)\LIB -lvncserver + OPTS += -I$(VNC_PATH)/include/mingw -I$(VNC_PATH)/include + ifeq ($(X64), y) + LIBS += -L$(VNC_PATH)/lib/x64 + else + LIBS += -L$(VNC_PATH)/lib/x86 + endif endif -VNCOBJ := vnc.o vnc_keymap.o + ifeq ($(VNC), y) + LIBS += -lvncserver + endif + VNCOBJ := vnc.o vnc_keymap.o endif -ifeq ($(RDP), y) -OPTS += -DUSE_RDP -RFLAGS += -DUSE_RDP +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(RDP), n) + OPTS += -DUSE_RDP + RFLAGS += -DUSE_RDP ifneq ($(RDP_PATH), ) - OPTS += -I$(RDP_PATH)\INCLUDE - RDPLIB := -L$(RDP_PATH)\LIB + OPTS += -I$(RDP_PATH)/include/mingw -I$(RDP_PATH)/include + ifeq ($(X64), y) + LIBS += -L$(RDP_PATH)/lib/x64 + else + LIBS += -L$(RDP_PATH)/lib/x86 + endif endif -RDPLIB += -lrdp -RDPOBJ := rdp.o -LIBS += $(RDPLIB) + ifeq ($(RDP), y) + LIBS += -lrdp + endif + RDPOBJ := rdp.o endif -ifeq ($(PNG), y) -OPTS += -DUSE_PNG -RFLAGS += -DUSE_PNG -LIBS += -lpng -lz +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(PNG), n) + OPTS += -DUSE_PNG + RFLAGS += -DUSE_PNG + ifneq ($(PNG_PATH), ) + OPTS += -I$(PNG_PATH)/include + ifeq ($(X64), y) + LIBS += -L$(PNG_PATH)/lib/x64 + else + LIBS += -L$(PNG_PATH)/lib/x86 + endif + endif + ifeq ($(PNG), y) + LIBS += -lpng -lz + endif endif +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(WX), n) + OPTS += -DUSE_WX=$(WX) $(WX_FLAGS) + LIBS += $(WX_LIBS) -lm + UIOBJ := wx_main.o wx_ui.o wx_stbar.o wx_render.o +else + UIOBJ := win_ui.o \ + win_ddraw.o win_d3d.o $(SDLOBJ) \ + win_dialog.o win_about.o win_status.o \ + win_settings.o win_devconf.o win_snd_gain.o \ + win_new_floppy.o +endif + + # Options for the DEV branch. ifeq ($(DEV_BRANCH), y) OPTS += -DDEV_BRANCH @@ -468,12 +520,6 @@ ifeq ($(DEV_BRANCH), y) endif -# Options for works-in-progress. -ifndef SERIAL -SERIAL := serial.o -endif - - # Final versions of the toolchain flags. # FIXME: add the -Wsign-compare option soon! CFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \ @@ -490,6 +536,7 @@ CXXFLAGS := $(WX_FLAGS) $(OPTS) $(DFLAGS) $(COPTIM) $(AOPTIM) \ ######################################################################### # Create the (final) list of objects to build. # ######################################################################### + MAINOBJ := pc.o config.o misc.o random.o timer.o io.o mem.o \ rom.o rom_load.o device.o nvr.o $(VNCOBJ) $(RDPOBJ) @@ -498,11 +545,6 @@ UIOBJ += ui_main.o ui_new_floppy.o ui_stbar.o ui_vidapi.o SYSOBJ := dma.o nmi.o pic.o pit.o ppi.o pci.o mca.o mcr.o \ memregs.o nvr_at.o nvr_ps2.o -INTELOBJ := intel.o \ - intel_flash.o \ - intel_sio.o \ - intel_piix.o intel_piix4.o - CPUOBJ := cpu.o cpu_table.o \ 808x.o 386.o x86seg.o x87.o \ 386_dynarec.o $(DYNARECOBJ) @@ -526,10 +568,14 @@ MCHOBJ := machine.o machine_table.o \ m_at_430lx_nx.o m_at_430fx.o \ m_at_430hx.o m_at_430vx.o +INTELOBJ := intel.o \ + intel_flash.o \ + intel_sio.o \ + intel_piix.o intel_piix4.o + DEVOBJ := bugger.o \ game.o game_dev.o \ - parallel.o parallel_dev.o \ - $(SERIAL) \ + parallel.o parallel_dev.o serial.o \ sio_fdc37c66x.o sio_fdc37c669.o sio_fdc37c93x.o \ sio_pc87306.o sio_w83877f.o sio_um8669f.o \ keyboard.o \ diff --git a/src/win/msvc/Makefile.VC b/src/win/msvc/Makefile.VC index 5f88a23..b1efec3 100644 --- a/src/win/msvc/Makefile.VC +++ b/src/win/msvc/Makefile.VC @@ -154,6 +154,8 @@ ifndef PROG endif endif + +# Which modules to include a development build. ifeq ($(DEV_BUILD), y) CRASHDUMP := y DEV_BRANCH := y @@ -218,6 +220,7 @@ VPATH := $(EXPATH) . cpu \ devices/video \ machines ui win + # # Select the required build environment. # @@ -325,9 +328,9 @@ endif # Optional modules. ifeq ($(DYNAREC), y) -OPTS += -DUSE_DYNAREC -RFLAGS += -DUSE_DYNAREC -DYNARECOBJ := 386_dynarec_ops.obj \ + OPTS += -DUSE_DYNAREC + RFLAGS += -DUSE_DYNAREC + DYNARECOBJ := 386_dynarec_ops.obj \ codegen.obj \ codegen_ops.obj \ codegen_timing_common.obj codegen_timing_486.obj \ @@ -335,95 +338,110 @@ DYNARECOBJ := 386_dynarec_ops.obj \ codegen_timing_winchip.obj $(PLATCG) endif +ifeq ($(OPENAL), y) + OPTS += -DUSE_OPENAL +endif + +ifeq ($(FLUIDSYNTH), y) + OPTS += -DUSE_FLUIDSYNTH + FSYNTHOBJ := midi_fluidsynth.obj +endif + +ifeq ($(MUNT), y) + OPTS += -DUSE_MUNT + MUNTOBJ := midi_mt32.obj \ + Analog.obj BReverbModel.obj File.obj FileStream.obj \ + LA32Ramp.obj LA32FloatWaveGenerator.obj \ + LA32WaveGenerator.obj MidiStreamParser.obj Part.obj \ + Partial.obj PartialManager.obj Poly.obj ROMInfo.obj \ + SampleRateConverter_dummy.obj Synth.obj Tables.obj \ + TVA.obj TVF.obj TVP.obj sha1.obj c_interface.obj +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(SDL), n) + OPTS += -DUSE_SDL + RFLAGS += -DUSE_SDL + ifneq ($(SDL_PATH), ) + OPTS += -I$(SDL_PATH)/include/msvc -I$(SDL_PATH)/include + ifeq ($(X64), y) + LOPTS += -LIBPATH:$(SDL_PATH)\lib\msvc\x64 + else + LOPTS += -LIBPATH:$(SDL_PATH)\lib\msvc\x86 + endif + endif + ifeq ($(SDL), y) + LIBS += sdl2.lib + endif + SDLOBJ := win_sdl.obj +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(VNC), n) + OPTS += -DUSE_VNC + RFLAGS += -DUSE_VNC + ifneq ($(VNC_PATH), ) + OPTS += -I$(VNC_PATH)/include/msvc -I$(VNC_PATH)/include + ifeq ($(X64), y) + LOPTS += LIBPATH:$(VNC_PATH)\lib\x64 + else + LOPTS += LIBPATH:$(VNC_PATH)\lib\x86 + endif + endif + ifeq ($(VNC), y) + LIBS += libvncserver.lib + endif + VNCOBJ := vnc.obj vnc_keymap.obj +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(RDP), n) + OPTS += -DUSE_RDP + RFLAGS += -DUSE_RDP + ifneq ($(RDP_PATH), ) + OPTS += -I$(RDP_PATH)/include/msvc -I$(RDP_PATH)/include + ifeq ($(X64), y) + LOPTS += LIBPATH:$(RDP_PATH)\lib\x64 + else + LOPTS += LIBPATH:$(RDP_PATH)\lib\x86 + endif + endif + ifeq ($(RDP), y) + LIBS += rdpsrvr.lib + endif + RDPOBJ := rdp.obj +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static +ifneq ($(PNG), n) + OPTS += -DUSE_LIBPNG + RFLAGS += -DUSE_LIBPNG + ifneq ($(PNG_PATH), ) + OPTS += -I$(PNG_PATH)/include/msvc -I$(PNG_PATH)/include + ifeq ($(X64), y) + LOPTS += LIBPATH:$(PNG_PATH)\lib\x64 + else + LOPTS += LIBPATH:$(PNG_PATH)\lib\x86 + endif + endif + ifeq ($(RDP), y) + LIBS += libpng16.lib zlib.lib + endif +endif + +# N=no, Y=yes,linked, D=yes,dynamic, S=yes,static ifneq ($(WX), n) OPTS += -DUSE_WX $(WX_FLAGS) LIBS += $(WX_LIBS) -lm UIOBJ := wx_main.obj wx_ui.obj wx_stbar.obj wx_render.obj else UIOBJ := win_ui.obj \ - win_ddraw.obj win_d3d.obj \ + win_ddraw.obj win_d3d.obj $(SDLOBJ) \ win_dialog.obj win_about.obj win_status.obj \ win_settings.obj win_devconf.obj win_snd_gain.obj \ win_new_floppy.obj endif -ifeq ($(OPENAL), y) -OPTS += -DUSE_OPENAL -endif -ifeq ($(FLUIDSYNTH), y) -OPTS += -DUSE_FLUIDSYNTH -FSYNTHOBJ := midi_fluidsynth.obj -endif - -ifeq ($(MUNT), y) -OPTS += -DUSE_MUNT -MUNTOBJ := midi_mt32.obj \ - Analog.obj BReverbModel.obj File.obj FileStream.obj LA32Ramp.obj \ - LA32FloatWaveGenerator.obj LA32WaveGenerator.obj \ - MidiStreamParser.obj Part.obj Partial.obj PartialManager.obj \ - Poly.obj ROMInfo.obj SampleRateConverter_dummy.obj Synth.obj \ - Tables.obj TVA.obj TVF.obj TVP.obj sha1.obj c_interface.obj -endif - -ifeq ($(SDL), y) - OPTS += -DUSE_SDL - RFLAGS += -DUSE_SDL - ifneq ($(SDL_PATH), ) - OPTS += -I$(SDL_PATH)\INCLUDE\MSVC - ifeq ($(X64), y) - LOPTS += -LIBPATH:$(SDL_PATH)\LIB\MSVC\x64 - else - LOPTS += -LIBPATH:$(SDL_PATH)\LIB\MSVC\x86 - endif - LIBS += sdl2.lib - endif - SDLOBJ := win_sdl.obj -endif - -ifeq ($(VNC), y) - OPTS += -DUSE_VNC - RFLAGS += -DUSE_VNC - ifneq ($(VNC_PATH), ) - OPTS += -I$(VNC_PATH)\INCLUDE - LOPTS += LIBPATH:$(VNC_PATH)\LIB - ifeq ($(X64), y) - LOPTS += \x64 - else - LOPTS += \x86 - endif - LIBS += libvncserver.lib - endif - VNCOBJ := vnc.obj vnc_keymap.obj -endif - -ifeq ($(RDP), y) - OPTS += -DUSE_RDP - RFLAGS += -DUSE_RDP - ifneq ($(RDP_PATH), ) - LOPTS += LIBPATH:$(RDP_PATH)\LIB - ifeq ($(X64), y) - LOPTS += \x64 - else - LOPTS += \x86 - endif - LIBS += rdpsrvr.lib - endif - RDPOBJ := rdp.obj -endif - -ifeq ($(PNG), y) - OPTS += -DUSE_LIBPNG - RFLAGS += -DUSE_LIBPNG - ifneq ($(PNG_PATH), ) - LOPTS += LIBPATH:$(PNG_PATH)\LIB - ifeq ($(X64), y) - LOPTS += \x64 - else - LOPTS += \x86 - endif - endif - LIBS += libpng16.lib zlib.lib -endif # Options for the DEV branch. ifeq ($(DEV_BRANCH), y) @@ -474,12 +492,6 @@ ifeq ($(DEV_BRANCH), y) endif -# Options for works-in-progress. -ifndef SERIAL -SERIAL := serial.obj -endif - - # Final versions of the toolchain flags. LDFLAGS := $(LOPTS) CFLAGS := $(WX_FLAGS) $(OPTS) $(COPTS) $(DOPTS) $(AOPTIM) $(AFLAGS) @@ -492,12 +504,7 @@ CXXFLAGS := $(WX_FLAGS) $(OPTS) $(CXXOPTS) $(COPTS) $(DOPTS) $(AOPTIM) $(AFLAGS) MAINOBJ := pc.obj config.obj misc.obj random.obj timer.obj io.obj \ mem.obj rom.obj rom_load.obj device.obj nvr.obj \ - $(SDLOBJ) $(VNCOBJ) $(RDPOBJ) - -INTELOBJ := intel.obj \ - intel_flash.obj \ - intel_sio.obj \ - intel_piix.obj intel_piix4.obj + $(VNCOBJ) $(RDPOBJ) UIOBJ += ui_main.obj ui_new_floppy.obj ui_stbar.obj ui_vidapi.obj @@ -527,10 +534,14 @@ MCHOBJ := machine.obj machine_table.obj \ m_at_430lx_nx.obj m_at_430fx.obj \ m_at_430hx.obj m_at_430vx.obj +INTELOBJ := intel.obj \ + intel_flash.obj \ + intel_sio.obj \ + intel_piix.obj intel_piix4.obj + DEVOBJ := bugger.obj \ game.obj game_dev.obj \ - parallel.obj parallel_dev.obj \ - $(SERIAL) \ + parallel.obj parallel_dev.obj serial.obj \ sio_fdc37c66x.obj sio_fdc37c669.obj sio_fdc37c93x.obj \ sio_pc87306.obj sio_w83877f.obj sio_um8669f.obj \ keyboard.obj \ diff --git a/src/win/win.c b/src/win/win.c index 3df953c..d50e4bf 100644 --- a/src/win/win.c +++ b/src/win/win.c @@ -62,7 +62,7 @@ # include "../vnc.h" #endif #ifdef USE_RDP -# include "../rdp.h" +# include #endif #include "../devices/input/mouse.h" #include "../devices/video/video.h" diff --git a/src/win/win_ui.c b/src/win/win_ui.c index edb4470..6a699ff 100644 --- a/src/win/win_ui.c +++ b/src/win/win_ui.c @@ -336,16 +336,6 @@ MainWindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } return(0); - case WM_LBUTTONUP: - if (! vid_fullscreen) - plat_mouse_capture(1); - break; - - case WM_MBUTTONUP: - if (mouse_get_buttons() < 3) - plat_mouse_capture(0); - break; - case WM_ENTERMENULOOP: break; @@ -778,6 +768,18 @@ pclog("UI: hwnd=%08lx WM_KILLFOCUS (infocus=%d) !\n", hwnd, infocus); } break; + case WM_LBUTTONUP: +pclog("UI: hwnd=%08lx WM_LBUTTONUP (infocus=%d) !\n", hwnd, infocus); + if (! vid_fullscreen) + plat_mouse_capture(1); + break; + + case WM_MBUTTONUP: +pclog("UI: hwnd=%08lx WM_MBUTTONUP (infocus=%d) !\n", hwnd, infocus); + if (mouse_get_buttons() < 3) + plat_mouse_capture(0); + break; + default: return(CallWindowProc((WNDPROC)input_orig_proc, hwnd, message, wParam, lParam)); @@ -787,6 +789,7 @@ pclog("UI: hwnd=%08lx WM_KILLFOCUS (infocus=%d) !\n", hwnd, infocus); } +/* Set up a handler for the 'currently active' window. */ void plat_set_input(HWND h) {