x11ddraw fix

Glenn Schrader geschrader at mediaone.net
Tue Nov 20 19:00:01 CST 2001


Ove Kaaven wrote:

> On Mon, 12 Nov 2001, geschrader wrote:

> > Your reasoning makes sense but with your patch I get the following error:
> > 
> > X Error of failed request:  XF86DGADirectNotActivated
> >    Major opcode of failed request:  138 (XFree86-DGA)
> >    Minor opcode of failed request:  26 (XDGACreateColormap)
> >    Serial number of failed request:  3691
> >    Current serial number in output stream:  3951
> > 
> > I'm not sure how to interpret this. Documentation for DGA seems to be
> > pretty non-existant. Is this complaining that the CreateColormap failed
> > because DGA wasn't activated or that DGA wasn't activated because
> > of the colormap failure?

> It's probably the former. I'm guessing that you need to create the
> colormap on the same display that XDGAOpenFrameBuffer and XDGASetMode was
> done on (those are currently done on thread_display(), you'll probably
> have to change them too, then?)

The two attached patches seem to do the job. Thanks for the hints.

---

Glenn Schrader

------------------------------------------------------------------------


-------------- next part --------------
Index: dga2.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/dga2.c,v
retrieving revision 1.5
diff -u -r1.5 dga2.c
--- dga2.c	2001/09/11 00:32:33	1.5
+++ dga2.c	2001/11/20 22:13:32
@@ -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);
-------------- next part --------------
Index: x11ddraw.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/x11ddraw.c,v
retrieving revision 1.12
diff -u -r1.12 x11ddraw.c
--- x11ddraw.c	2001/08/27 19:04:18	1.12
+++ x11ddraw.c	2001/11/20 22:13:42
@@ -49,7 +49,7 @@
 
 static LRESULT WINAPI GrabWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
 { 
-  Display *display = thread_display();
+  Display *display = gdi_display;
 
   if(message != X11DRV_DD_GrabMessage)
     return CallWindowProcA(X11DRV_DD_GrabOldProcedure, hWnd, message, wParam, lParam);
@@ -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); 
   } 
 
   if(!X11DRV_DD_GrabMessage)


More information about the wine-devel mailing list