PATCH: Fix Multiplication of Windows in VGA_DoSetMode
Christian Costa
titan.costa at wanadoo.fr
Thu May 16 15:14:47 CDT 2002
Changelog:
Do not create a Window each time VGA_DoSetMode is called. The Window is
created the first time and just resized after.
Modified files: dlls/winedos/vga.c
Christian Costa titan.costa at wanadoo.fr
-------------- next part --------------
Index: vga.c
===================================================================
RCS file: /home/wine/wine/dlls/winedos/vga.c,v
retrieving revision 1.11
diff -u -r1.11 vga.c
--- vga.c 14 May 2002 03:57:26 -0000 1.11
+++ vga.c 16 May 2002 20:01:42 -0000
@@ -52,6 +52,8 @@
static void CALLBACK VGA_Poll( LPVOID arg, DWORD low, DWORD high );
+static HWND vga_hwnd = (HWND) NULL;
+
/*
* For simplicity, I'm creating a second palette.
* 16 color accesses will use these pointers and insert
@@ -247,7 +249,6 @@
static void WINAPI VGA_DoSetMode(ULONG_PTR arg)
{
LRESULT res;
- HWND hwnd;
ModeSet *par = (ModeSet *)arg;
par->ret=1;
@@ -267,11 +268,19 @@
ERR("DirectDraw is not available (res = %lx)\n",res);
return;
}
- hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",WS_POPUP|WS_BORDER|WS_CAPTION|WS_SYSMENU,0,0,par->Xres,par->Yres,0,0,0,NULL);
- if (!hwnd) {
- ERR("Failed to create user window.\n");
- }
- if ((res=IDirectDraw_SetCooperativeLevel(lpddraw,hwnd,DDSCL_FULLSCREEN|DDSCL_EXCLUSIVE))) {
+ if (!vga_hwnd) {
+ vga_hwnd = CreateWindowExA(0,"STATIC","WINEDOS VGA",WS_POPUP|WS_BORDER|WS_CAPTION|WS_SYSMENU,0,0,par->Xres,par->Yres,0,0,0,NULL);
+ if (!vga_hwnd) {
+ ERR("Failed to create user window.\n");
+ IDirectDraw_Release(lpddraw);
+ lpddraw=NULL;
+ return;
+ }
+ }
+ else
+ SetWindowPos(vga_hwnd,0,0,0,par->Xres,par->Yres,SWP_NOMOVE|SWP_NOZORDER);
+
+ if ((res=IDirectDraw_SetCooperativeLevel(lpddraw,vga_hwnd,DDSCL_FULLSCREEN|DDSCL_EXCLUSIVE))) {
ERR("Could not set cooperative level to exclusive (%lx)\n",res);
}
More information about the wine-patches
mailing list