x11ddraw fix

Glenn Schrader geschrader at mediaone.net
Wed Nov 28 16:25:59 CST 2001


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

-------------- next part --------------
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);


More information about the wine-devel mailing list