diff options
-rw-r--r-- | hw/xwin/ChangeLog | 23 | ||||
-rw-r--r-- | hw/xwin/win.h | 15 | ||||
-rw-r--r-- | hw/xwin/winfont.c | 26 | ||||
-rwxr-xr-x | hw/xwin/winmultiwindowshape.c | 10 | ||||
-rw-r--r-- | hw/xwin/winmultiwindowwindow.c | 108 | ||||
-rw-r--r-- | hw/xwin/winpfbdd.c | 2 | ||||
-rw-r--r-- | hw/xwin/winscrinit.c | 6 | ||||
-rw-r--r-- | hw/xwin/winshaddd.c | 2 | ||||
-rw-r--r-- | hw/xwin/winshadddnl.c | 2 | ||||
-rw-r--r-- | hw/xwin/winshadgdi.c | 2 | ||||
-rw-r--r-- | hw/xwin/winwindow.c | 173 |
11 files changed, 282 insertions, 87 deletions
diff --git a/hw/xwin/ChangeLog b/hw/xwin/ChangeLog index e7574a32f..707c0aac1 100644 --- a/hw/xwin/ChangeLog +++ b/hw/xwin/ChangeLog @@ -1,8 +1,29 @@ 2005-02-12 Alexander Gottwald <ago at freedesktop dot org> + * win.h + * winfont.c + * winmultiwindowshape.c + * winmultiwindowwindow.c + * winpfbdd.c + * winshaddd.c + * winshadddnl.c + * winshadgdi.c + * winwindow.c: + Fix incorrect wrapping of functions. Ensure the pointers from pScreen + point to the called function even if wrapped functions changed it + + * winmultiwindowwindow.c: + Set the window properties to NULL to avoid referencing freed memory + because of timing problems after deleting a window + + * winscrinit.c: + Do not wrap ChangeWindowAttributes. All functions are noops currently + +2005-02-12 Alexander Gottwald <ago at freedesktop dot org> + * winmsg.h: * winmsg.c: - print window handle in message outout + print window handle in message output 2005-02-08 Alexander Gottwald <ago at freedesktop dot org> diff --git a/hw/xwin/win.h b/hw/xwin/win.h index c3c3c606b..c332087ad 100644 --- a/hw/xwin/win.h +++ b/hw/xwin/win.h @@ -725,6 +725,21 @@ extern FARPROC g_fpTrackMouseEvent; #define winWindowPriv(pWin) \ winPrivWinPtr pWinPriv = winGetWindowPriv(pWin) +/* + * wrapper macros + */ +#define _WIN_WRAP(priv, real, mem, func) {\ + priv->mem = real->mem; \ + real->mem = func; \ +} + +#define _WIN_UNWRAP(priv, real, mem) {\ + real->mem = priv->mem; \ +} + +#define WIN_WRAP(mem, func) _WIN_WRAP(pScreenPriv, pScreen, mem, func) + +#define WIN_UNWRAP(mem) _WIN_UNWRAP(pScreenPriv, pScreen, mem) /* * BEGIN DDX and DIX Function Prototypes diff --git a/hw/xwin/winfont.c b/hw/xwin/winfont.c index 4c633af80..64c6cd233 100644 --- a/hw/xwin/winfont.c +++ b/hw/xwin/winfont.c @@ -35,10 +35,19 @@ Bool winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont) { + BOOL fResult = TRUE; + winScreenPriv(pScreen); + #if CYGDEBUG - winDebug ("winRealizeFont()\n"); + winTrace ("winRealizeFont (%p, %p)\n", pScreen, pFont); #endif - return TRUE; + + WIN_UNWRAP(RealizeFont); + if (pScreen->RealizeFont) + fResult = (*pScreen->RealizeFont) (pScreen, pFont); + WIN_WRAP(RealizeFont, winRealizeFontNativeGDI); + + return fResult; } /* See Porting Layer Definition - p. 32 */ @@ -46,6 +55,19 @@ winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont) Bool winUnrealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont) { + BOOL fResult = TRUE; + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winUnrealizeFont (%p, %p)\n", pScreen, pFont); +#endif + + WIN_UNWRAP(UnrealizeFont); + if (pScreen->UnrealizeFont) + fResult = (*pScreen->UnrealizeFont) (pScreen, pFont); + WIN_WRAP(UnrealizeFont, winUnrealizeFontNativeGDI); + + return fResult; #if CYGDEBUG winDebug ("winUnrealizeFont()\n"); #endif diff --git a/hw/xwin/winmultiwindowshape.c b/hw/xwin/winmultiwindowshape.c index bfec1a1ea..e2996a81e 100755 --- a/hw/xwin/winmultiwindowshape.c +++ b/hw/xwin/winmultiwindowshape.c @@ -42,13 +42,17 @@ void winSetShapeMultiWindow (WindowPtr pWin) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGMULTIWINDOW_DEBUG ErrorF ("winSetShapeMultiWindow - pWin: %08x\n", pWin); #endif - /* Call any wrapped SetShape function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->SetShape) - winGetScreenPriv(pWin->drawable.pScreen)->SetShape (pWin); + WIN_UNWRAP(SetShape); + (*pScreen->SetShape)(pWin); + WIN_WRAP(SetShape, winSetShapeMultiWindow); /* Update the Windows window's shape */ winReshapeMultiWindow (pWin); diff --git a/hw/xwin/winmultiwindowwindow.c b/hw/xwin/winmultiwindowwindow.c index 6d83529a1..28ef2f2f7 100644 --- a/hw/xwin/winmultiwindowwindow.c +++ b/hw/xwin/winmultiwindowwindow.c @@ -88,15 +88,17 @@ Bool winCreateWindowMultiWindow (WindowPtr pWin) { Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG winTrace ("winCreateWindowMultiWindow - pWin: %p\n", pWin); #endif - /* Call any wrapped CreateWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow (pWin); + WIN_UNWRAP(CreateWindow); + fResult = (*pScreen->CreateWindow) (pWin); + WIN_WRAP(CreateWindow, winCreateWindowMultiWindow); /* Initialize some privates values */ pWinPriv->hRgn = NULL; @@ -116,15 +118,17 @@ Bool winDestroyWindowMultiWindow (WindowPtr pWin) { Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG ErrorF ("winDestroyWindowMultiWindow - pWin: %p\n", pWin); #endif - /* Call any wrapped DestroyWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow (pWin); + WIN_UNWRAP(DestroyWindow); + fResult = (*pScreen->DestroyWindow)(pWin); + WIN_WRAP(DestroyWindow, winDestroyWindowMultiWindow); /* Flag that the window has been destroyed */ pWinPriv->fXKilled = TRUE; @@ -149,7 +153,10 @@ winPositionWindowMultiWindow (WindowPtr pWin, int x, int y) { Bool fResult = TRUE; int iX, iY, iWidth, iHeight; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); + HWND hWnd = pWinPriv->hWnd; RECT rcNew; RECT rcOld; @@ -164,9 +171,9 @@ winPositionWindowMultiWindow (WindowPtr pWin, int x, int y) winTrace ("winPositionWindowMultiWindow - pWin: %p\n", pWin); #endif - /* Call any wrapped PositionWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->PositionWindow) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->PositionWindow (pWin, x, y); + WIN_UNWRAP(PositionWindow); + fResult = (*pScreen->PositionWindow)(pWin, x, y); + WIN_WRAP(PositionWindow, winPositionWindowMultiWindow); #if CYGWINDOWING_DEBUG ErrorF ("winPositionWindowMultiWindow: (x, y) = (%d, %d)\n", @@ -265,14 +272,17 @@ Bool winChangeWindowAttributesMultiWindow (WindowPtr pWin, unsigned long mask) { Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG ErrorF ("winChangeWindowAttributesMultiWindow - pWin: %08x\n", pWin); #endif - /* Call any wrapped ChangeWindowAttributes function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes (pWin, mask); + WIN_UNWRAP(ChangeWindowAttributes); + fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask); + WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesMultiWindow); /* * NOTE: We do not currently need to do anything here. @@ -291,15 +301,17 @@ Bool winUnmapWindowMultiWindow (WindowPtr pWin) { Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG ErrorF ("winUnmapWindowMultiWindow - pWin: %08x\n", pWin); #endif - /* Call any wrapped UnrealizeWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow (pWin); + WIN_UNWRAP(UnrealizeWindow); + fResult = (*pScreen->UnrealizeWindow)(pWin); + WIN_WRAP(UnrealizeWindow, winUnmapWindowMultiWindow); /* Flag that the window has been killed */ pWinPriv->fXKilled = TRUE; @@ -320,15 +332,17 @@ Bool winMapWindowMultiWindow (WindowPtr pWin) { Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG ErrorF ("winMapWindowMultiWindow - pWin: %08x\n", pWin); #endif - /* Call any wrapped RealizeWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow) - fResult = winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow (pWin); + WIN_UNWRAP(RealizeWindow); + fResult = (*pScreen->RealizeWindow)(pWin); + WIN_WRAP(RealizeWindow, winMapWindowMultiWindow); /* Flag that this window has not been destroyed */ pWinPriv->fXKilled = FALSE; @@ -353,14 +367,18 @@ winMapWindowMultiWindow (WindowPtr pWin) void winReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGMULTIWINDOW_DEBUG ErrorF ("winReparentMultiWindow - pWin: %08x\n", pWin); #endif - /* Call any wrapped ReparentWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->ReparentWindow) - winGetScreenPriv(pWin->drawable.pScreen)->ReparentWindow (pWin, - pPriorParent); + WIN_UNWRAP(ReparentWindow); + if (pScreen->ReparentWindow) + (*pScreen->ReparentWindow)(pWin, pPriorParent); + WIN_WRAP(ReparentWindow, winReparentWindowMultiWindow); /* Update the Windows window associated with this X window */ winUpdateWindowsWindow (pWin); @@ -378,16 +396,18 @@ winRestackWindowMultiWindow (WindowPtr pWin, WindowPtr pOldNextSib) UINT uFlags; HWND hInsertAfter; HWND hWnd = NULL; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGMULTIWINDOW_DEBUG || CYGWINDOWING_DEBUG winTrace ("winRestackMultiWindow - %08x\n", pWin); #endif - /* Call any wrapped RestackWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->RestackWindow) - winGetScreenPriv(pWin->drawable.pScreen)->RestackWindow (pWin, - pOldNextSib); + WIN_UNWRAP(RestackWindow); + if (pScreen->RestackWindow) + (*pScreen->RestackWindow)(pWin, pOldNextSib); + WIN_WRAP(RestackWindow, winRestackWindowMultiWindow); #if 1 /* @@ -620,6 +640,7 @@ winDestroyWindowsWindow (WindowPtr pWin) hiconSmClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICONSM); iReturn = GetClassName (pWinPriv->hWnd, pszClass, 512); + SetProp (pWinPriv->hWnd, WIN_WINDOW_PROP, NULL); /* Destroy the Windows window */ DestroyWindow (pWinPriv->hWnd); @@ -859,14 +880,16 @@ void winCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt, RegionPtr oldRegion) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGWINDOWING_DEBUG ErrorF ("CopyWindowMultiWindow\n"); #endif - /* Call any wrapped CopyWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->CopyWindow) - winGetScreenPriv(pWin->drawable.pScreen)->CopyWindow (pWin, - oldpt, - oldRegion); + WIN_UNWRAP(CopyWindow); + (*pScreen->CopyWindow)(pWin, oldpt, oldRegion); + WIN_WRAP(CopyWindow, winCopyWindowMultiWindow); } @@ -877,13 +900,17 @@ void winMoveWindowMultiWindow (WindowPtr pWin, int x, int y, WindowPtr pSib, VTKind kind) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGWINDOWING_DEBUG ErrorF ("MoveWindowMultiWindow to (%d, %d)\n", x, y); #endif - /* Call any wrapped MoveWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->MoveWindow) - winGetScreenPriv(pWin->drawable.pScreen)->MoveWindow (pWin, x, y, - pSib, kind); + + WIN_UNWRAP(MoveWindow); + (*pScreen->MoveWindow)(pWin, x, y, pSib, kind); + WIN_WRAP(MoveWindow, winMoveWindowMultiWindow); } @@ -894,13 +921,16 @@ void winResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w, unsigned int h, WindowPtr pSib) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGWINDOWING_DEBUG ErrorF ("ResizeWindowMultiWindow to (%d, %d) - %dx%d\n", x, y, w, h); #endif - /* Call any wrapped MoveWindow function */ - if (winGetScreenPriv(pWin->drawable.pScreen)->ResizeWindow) - winGetScreenPriv(pWin->drawable.pScreen)->ResizeWindow (pWin, x, y, - w, h, pSib); + WIN_UNWRAP(ResizeWindow); + (*pScreen->ResizeWindow)(pWin, x, y, w, h, pSib); + WIN_WRAP(ResizeWindow, winResizeWindowMultiWindow); } diff --git a/hw/xwin/winpfbdd.c b/hw/xwin/winpfbdd.c index 959fef991..9a34cfb33 100644 --- a/hw/xwin/winpfbdd.c +++ b/hw/xwin/winpfbdd.c @@ -260,7 +260,7 @@ winCloseScreenPrimaryDD (int nIndex, ScreenPtr pScreen) pScreenPriv->fActive = FALSE; /* Call the wrapped CloseScreen procedure */ - pScreen->CloseScreen = pScreenPriv->CloseScreen; + WIN_UNWRAP(CloseScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); /* Delete the window property */ diff --git a/hw/xwin/winscrinit.c b/hw/xwin/winscrinit.c index 50c329419..f97539b6f 100644 --- a/hw/xwin/winscrinit.c +++ b/hw/xwin/winscrinit.c @@ -494,7 +494,7 @@ winFinishScreenInitFB (int index, pScreen->CreateWindow = winCreateWindowRootless; pScreen->DestroyWindow = winDestroyWindowRootless; pScreen->PositionWindow = winPositionWindowRootless; - pScreen->ChangeWindowAttributes = winChangeWindowAttributesRootless; + /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesRootless;*/ pScreen->RealizeWindow = winMapWindowRootless; pScreen->UnrealizeWindow = winUnmapWindowRootless; #ifdef SHAPE @@ -539,7 +539,7 @@ winFinishScreenInitFB (int index, pScreen->CreateWindow = winCreateWindowMultiWindow; pScreen->DestroyWindow = winDestroyWindowMultiWindow; pScreen->PositionWindow = winPositionWindowMultiWindow; - pScreen->ChangeWindowAttributes = winChangeWindowAttributesMultiWindow; + /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesMultiWindow;*/ pScreen->RealizeWindow = winMapWindowMultiWindow; pScreen->UnrealizeWindow = winUnmapWindowMultiWindow; pScreen->ReparentWindow = winReparentWindowMultiWindow; @@ -713,7 +713,7 @@ winFinishScreenInitNativeGDI (int index, pScreen->CreateWindow = winCreateWindowNativeGDI; pScreen->DestroyWindow = winDestroyWindowNativeGDI; pScreen->PositionWindow = winPositionWindowNativeGDI; - pScreen->ChangeWindowAttributes = winChangeWindowAttributesNativeGDI; + /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesNativeGDI;*/ pScreen->RealizeWindow = winMapWindowNativeGDI; pScreen->UnrealizeWindow = winUnmapWindowNativeGDI; diff --git a/hw/xwin/winshaddd.c b/hw/xwin/winshaddd.c index 4e89e256e..fce0c2b06 100644 --- a/hw/xwin/winshaddd.c +++ b/hw/xwin/winshaddd.c @@ -681,7 +681,7 @@ winCloseScreenShadowDD (int nIndex, ScreenPtr pScreen) pScreenPriv->fActive = FALSE; /* Call the wrapped CloseScreen procedure */ - pScreen->CloseScreen = pScreenPriv->CloseScreen; + WIN_UNWRAP(CloseScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); /* Free the screen DC */ diff --git a/hw/xwin/winshadddnl.c b/hw/xwin/winshadddnl.c index 243579a84..9c26e0535 100644 --- a/hw/xwin/winshadddnl.c +++ b/hw/xwin/winshadddnl.c @@ -735,7 +735,7 @@ winCloseScreenShadowDDNL (int nIndex, ScreenPtr pScreen) pScreenPriv->fActive = FALSE; /* Call the wrapped CloseScreen procedure */ - pScreen->CloseScreen = pScreenPriv->CloseScreen; + WIN_UNWRAP(CloseScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); /* Free the screen DC */ diff --git a/hw/xwin/winshadgdi.c b/hw/xwin/winshadgdi.c index 54faebeec..0f56538ed 100644 --- a/hw/xwin/winshadgdi.c +++ b/hw/xwin/winshadgdi.c @@ -630,7 +630,7 @@ winCloseScreenShadowGDI (int nIndex, ScreenPtr pScreen) pScreenPriv->fActive = FALSE; /* Call the wrapped CloseScreen procedure */ - pScreen->CloseScreen = pScreenPriv->CloseScreen; + WIN_UNWRAP(CloseScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); /* Delete the window property */ diff --git a/hw/xwin/winwindow.c b/hw/xwin/winwindow.c index e8067cb46..8d3d6e525 100644 --- a/hw/xwin/winwindow.c +++ b/hw/xwin/winwindow.c @@ -58,8 +58,19 @@ winReshapeRootless (WindowPtr pWin); Bool winCreateWindowNativeGDI (WindowPtr pWin) { - ErrorF ("winCreateWindowNativeGDI ()\n"); - return TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winCreateWindowNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(CreateWindow); + fResult = (*pScreen->CreateWindow) (pWin); + WIN_WRAP(CreateWindow, winCreateWindowNativeGDI); + + return fResult; } @@ -69,8 +80,20 @@ winCreateWindowNativeGDI (WindowPtr pWin) Bool winDestroyWindowNativeGDI (WindowPtr pWin) { - ErrorF ("winDestroyWindowNativeGDI ()\n"); - return TRUE; + Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winDestroyWindowNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(DestroyWindow); + fResult = (*pScreen->DestroyWindow)(pWin); + WIN_WRAP(DestroyWindow, winDestroyWindowNativeGDI); + + return fResult; } @@ -80,8 +103,20 @@ winDestroyWindowNativeGDI (WindowPtr pWin) Bool winPositionWindowNativeGDI (WindowPtr pWin, int x, int y) { - ErrorF ("winPositionWindowNativeGDI ()\n"); - return TRUE; + Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winPositionWindowNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(PositionWindow); + fResult = (*pScreen->PositionWindow)(pWin, x, y); + WIN_WRAP(PositionWindow, winPositionWindowNativeGDI); + + return fResult; } @@ -180,8 +215,24 @@ winCopyWindowNativeGDI (WindowPtr pWin, Bool winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask) { - ErrorF ("winChangeWindowAttributesNativeGDI ()\n"); - return TRUE; + Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winChangeWindowAttributesNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(ChangeWindowAttributes); + fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask); + WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesNativeGDI); + + /* + * NOTE: We do not currently need to do anything here. + */ + + return fResult; } @@ -190,13 +241,22 @@ winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask) */ Bool -winUnmapWindowNativeGDI (WindowPtr pWindow) +winUnmapWindowNativeGDI (WindowPtr pWin) { - ErrorF ("winUnmapWindowNativeGDI ()\n"); - /* This functions is empty in the CFB, - * we probably won't need to do anything - */ - return TRUE; + Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winUnmapWindowNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(UnrealizeWindow); + fResult = (*pScreen->UnrealizeWindow)(pWin); + WIN_WRAP(UnrealizeWindow, winUnmapWindowNativeGDI); + + return fResult; } @@ -205,13 +265,22 @@ winUnmapWindowNativeGDI (WindowPtr pWindow) */ Bool -winMapWindowNativeGDI (WindowPtr pWindow) +winMapWindowNativeGDI (WindowPtr pWin) { - ErrorF ("winMapWindowNativeGDI ()\n"); - /* This function is empty in the CFB, - * we probably won't need to do anything - */ - return TRUE; + Bool fResult = TRUE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + +#if CYGDEBUG + winTrace ("winMapWindowNativeGDI (%p)\n", pWin); +#endif + + WIN_UNWRAP(RealizeWindow); + fResult = (*pScreen->RealizeWindow)(pWin); + WIN_WRAP(RealizeWindow, winMapWindowMultiWindow); + + return fResult; } #endif @@ -224,13 +293,17 @@ Bool winCreateWindowRootless (WindowPtr pWin) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGDEBUG - winDebug ("winCreateWindowRootless ()\n"); + winTrace ("winCreateWindowRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow(pWin); + WIN_UNWRAP(CreateWindow); + fResult = (*pScreen->CreateWindow) (pWin); + WIN_WRAP(CreateWindow, winCreateWindowRootless); pWinPriv->hRgn = NULL; @@ -245,13 +318,17 @@ Bool winDestroyWindowRootless (WindowPtr pWin) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGDEBUG - winDebug ("winDestroyWindowRootless ()\n"); + winTrace ("winDestroyWindowRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow(pWin); + WIN_UNWRAP(DestroyWindow); + fResult = (*pScreen->DestroyWindow)(pWin); + WIN_WRAP(DestroyWindow, winDestroyWindowRootless); if (pWinPriv->hRgn != NULL) { @@ -272,12 +349,18 @@ Bool winPositionWindowRootless (WindowPtr pWin, int x, int y) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGDEBUG - winDebug ("winPositionWindowRootless ()\n"); + winTrace ("winPositionWindowRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->PositionWindow(pWin, x, y); + WIN_UNWRAP(PositionWindow); + fResult = (*pScreen->PositionWindow)(pWin, x, y); + WIN_WRAP(PositionWindow, winPositionWindowRootless); winUpdateRgnRootless (pWin); @@ -292,13 +375,18 @@ Bool winChangeWindowAttributesRootless (WindowPtr pWin, unsigned long mask) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGDEBUG - winDebug ("winChangeWindowAttributesRootless ()\n"); + winTrace ("winChangeWindowAttributesRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes(pWin, mask); - + WIN_UNWRAP(ChangeWindowAttributes); + fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask); + WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesRootless); + winUpdateRgnRootless (pWin); return fResult; @@ -313,13 +401,17 @@ Bool winUnmapWindowRootless (WindowPtr pWin) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGDEBUG - winDebug ("winUnmapWindowRootless ()\n"); + winTrace ("winUnmapWindowRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow(pWin); + WIN_UNWRAP(UnrealizeWindow); + fResult = (*pScreen->UnrealizeWindow)(pWin); + WIN_WRAP(UnrealizeWindow, winUnmapWindowRootless); if (pWinPriv->hRgn != NULL) { @@ -341,12 +433,17 @@ Bool winMapWindowRootless (WindowPtr pWin) { Bool fResult = FALSE; + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); #if CYGDEBUG - winDebug ("winMapWindowRootless ()\n"); + winTrace ("winMapWindowRootless (%p)\n", pWin); #endif - fResult = winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow(pWin); + WIN_UNWRAP(RealizeWindow); + fResult = (*pScreen->RealizeWindow)(pWin); + WIN_WRAP(RealizeWindow, winMapWindowRootless); #ifdef SHAPE winReshapeRootless (pWin); @@ -362,11 +459,17 @@ winMapWindowRootless (WindowPtr pWin) void winSetShapeRootless (WindowPtr pWin) { + ScreenPtr pScreen = pWin->drawable.pScreen; + winWindowPriv(pWin); + winScreenPriv(pScreen); + #if CYGDEBUG - winDebug ("winSetShapeRootless ()\n"); + winTrace ("winSetShapeRootless (%p)\n", pWin); #endif - winGetScreenPriv(pWin->drawable.pScreen)->SetShape(pWin); + WIN_UNWRAP(SetShape); + (*pScreen->SetShape)(pWin); + WIN_WRAP(SetShape, winSetShapeRootless); winReshapeRootless (pWin); winUpdateRgnRootless (pWin); |