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