Ove Kaaven wrote:
On Wed, 21 Nov 2001, Glenn Schrader wrote:
No it isn't, my mistake. Updated patches are attached.
If that's the case, then this shouldn't be needed either...
@@ -81,7 +81,7 @@ if(grab) { Window window = X11DRV_get_whole_window(GetFocus()); if(window)
XSetInputFocus(thread_display(), window, RevertToParent,
CurrentTime); + XSetInputFocus(gdi_display, window, RevertToParent, CurrentTime);
I went back and tried to re-create the conditions that made me think that I needed patches in the x11ddraw.c file. They don't seem to be needed. What I think happened is that (sometimes) when I reset the X server (because DGA locks up the screen when an error happens) my graphics card doesn't reset cleanly. When this happens the X server restarts and appears to be working but attempting to run any DGA app causes it to lock up again. Reseting the server two or three times seems to actually reset everything. Has anybody else out there seen this kind of behavior?
I've attached only dga2.c.diff since thats the only one that seems to be needed.
---
Glenn Schrader
Index: dga2.c =================================================================== RCS file: /home/wine/wine/dlls/x11drv/dga2.c,v retrieving revision 1.6 diff -u -r1.6 dga2.c --- dga2.c 2001/11/19 02:30:05 1.6 +++ dga2.c 2001/11/24 13:34:31 @@ -102,7 +102,7 @@ { LPDDRAWI_DIRECTDRAW_LCL ddlocal = data->lpDD->lpExclusiveOwner; DWORD vram; - Display *display = thread_display(); + Display *display = gdi_display;
data->ddRVal = DD_OK; if (data->dwModeIndex) { @@ -174,7 +174,7 @@
static DWORD PASCAL X11DRV_XF86DGA2_CreatePalette(LPDDHAL_CREATEPALETTEDATA data) { - Display *display = thread_display(); + Display *display = gdi_display; data->lpDDPalette->u1.dwReserved1 = TSXDGACreateColormap(display, DefaultScreen(display), dga_dev, AllocAll); if (data->lpColorTable) X11DRV_DDHAL_SetPalEntries(data->lpDDPalette->u1.dwReserved1, 0, 256, @@ -185,7 +185,7 @@
static DWORD PASCAL X11DRV_XF86DGA2_Flip(LPDDHAL_FLIPDATA data) { - Display *display = thread_display(); + Display *display = gdi_display; if (data->lpSurfCurr == X11DRV_DD_Primary) { DWORD ofs = data->lpSurfCurr->lpGbl->fpVidMem - dga_mem.fpStart; TSXDGASetViewport(display, DefaultScreen(display), @@ -199,7 +199,7 @@
static DWORD PASCAL X11DRV_XF86DGA2_SetPalette(LPDDHAL_SETPALETTEDATA data) { - Display *display = thread_display(); + Display *display = gdi_display; if ((data->lpDDSurface == X11DRV_DD_Primary) && data->lpDDPalette && data->lpDDPalette->u1.dwReserved1) { TSXDGAInstallColormap(display, DefaultScreen(display), data->lpDDPalette->u1.dwReserved1);