winfont.c
winmultiwindowshape.c
winmultiwindowwindow.c
winpfbdd.c
winshaddd.c
winshadddnl.c
winshadgdi.c
Fix incorrect wrapping of functions. Ensure the pointers from pScreen point
    to the called function even if wrapped functions changed it
Set the window properties to NULL to avoid referencing freed memory because
    of timing problems after deleting a window
Do not wrap ChangeWindowAttributes. All functions are noops currently
This commit is contained in:
Alexander Gottwald 2005-02-12 14:47:17 +00:00
parent 676fdb03f3
commit 8df7126f09
11 changed files with 282 additions and 87 deletions

View File

@ -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> 2005-02-12 Alexander Gottwald <ago at freedesktop dot org>
* winmsg.h: * winmsg.h:
* winmsg.c: * winmsg.c:
print window handle in message outout print window handle in message output
2005-02-08 Alexander Gottwald <ago at freedesktop dot org> 2005-02-08 Alexander Gottwald <ago at freedesktop dot org>

View File

@ -725,6 +725,21 @@ extern FARPROC g_fpTrackMouseEvent;
#define winWindowPriv(pWin) \ #define winWindowPriv(pWin) \
winPrivWinPtr pWinPriv = winGetWindowPriv(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 * BEGIN DDX and DIX Function Prototypes

View File

@ -35,10 +35,19 @@
Bool Bool
winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont) winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont)
{ {
BOOL fResult = TRUE;
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winRealizeFont()\n"); winTrace ("winRealizeFont (%p, %p)\n", pScreen, pFont);
#endif #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 */ /* See Porting Layer Definition - p. 32 */
@ -46,6 +55,19 @@ winRealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont)
Bool Bool
winUnrealizeFontNativeGDI (ScreenPtr pScreen, FontPtr pFont) 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 #if CYGDEBUG
winDebug ("winUnrealizeFont()\n"); winDebug ("winUnrealizeFont()\n");
#endif #endif

View File

@ -42,13 +42,17 @@
void void
winSetShapeMultiWindow (WindowPtr pWin) winSetShapeMultiWindow (WindowPtr pWin)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winSetShapeMultiWindow - pWin: %08x\n", pWin); ErrorF ("winSetShapeMultiWindow - pWin: %08x\n", pWin);
#endif #endif
/* Call any wrapped SetShape function */ WIN_UNWRAP(SetShape);
if (winGetScreenPriv(pWin->drawable.pScreen)->SetShape) (*pScreen->SetShape)(pWin);
winGetScreenPriv(pWin->drawable.pScreen)->SetShape (pWin); WIN_WRAP(SetShape, winSetShapeMultiWindow);
/* Update the Windows window's shape */ /* Update the Windows window's shape */
winReshapeMultiWindow (pWin); winReshapeMultiWindow (pWin);

View File

@ -88,15 +88,17 @@ Bool
winCreateWindowMultiWindow (WindowPtr pWin) winCreateWindowMultiWindow (WindowPtr pWin)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
winTrace ("winCreateWindowMultiWindow - pWin: %p\n", pWin); winTrace ("winCreateWindowMultiWindow - pWin: %p\n", pWin);
#endif #endif
/* Call any wrapped CreateWindow function */ WIN_UNWRAP(CreateWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow) fResult = (*pScreen->CreateWindow) (pWin);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow (pWin); WIN_WRAP(CreateWindow, winCreateWindowMultiWindow);
/* Initialize some privates values */ /* Initialize some privates values */
pWinPriv->hRgn = NULL; pWinPriv->hRgn = NULL;
@ -116,15 +118,17 @@ Bool
winDestroyWindowMultiWindow (WindowPtr pWin) winDestroyWindowMultiWindow (WindowPtr pWin)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winDestroyWindowMultiWindow - pWin: %p\n", pWin); ErrorF ("winDestroyWindowMultiWindow - pWin: %p\n", pWin);
#endif #endif
/* Call any wrapped DestroyWindow function */ WIN_UNWRAP(DestroyWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow) fResult = (*pScreen->DestroyWindow)(pWin);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow (pWin); WIN_WRAP(DestroyWindow, winDestroyWindowMultiWindow);
/* Flag that the window has been destroyed */ /* Flag that the window has been destroyed */
pWinPriv->fXKilled = TRUE; pWinPriv->fXKilled = TRUE;
@ -149,7 +153,10 @@ winPositionWindowMultiWindow (WindowPtr pWin, int x, int y)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
int iX, iY, iWidth, iHeight; int iX, iY, iWidth, iHeight;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
HWND hWnd = pWinPriv->hWnd; HWND hWnd = pWinPriv->hWnd;
RECT rcNew; RECT rcNew;
RECT rcOld; RECT rcOld;
@ -164,9 +171,9 @@ winPositionWindowMultiWindow (WindowPtr pWin, int x, int y)
winTrace ("winPositionWindowMultiWindow - pWin: %p\n", pWin); winTrace ("winPositionWindowMultiWindow - pWin: %p\n", pWin);
#endif #endif
/* Call any wrapped PositionWindow function */ WIN_UNWRAP(PositionWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->PositionWindow) fResult = (*pScreen->PositionWindow)(pWin, x, y);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->PositionWindow (pWin, x, y); WIN_WRAP(PositionWindow, winPositionWindowMultiWindow);
#if CYGWINDOWING_DEBUG #if CYGWINDOWING_DEBUG
ErrorF ("winPositionWindowMultiWindow: (x, y) = (%d, %d)\n", ErrorF ("winPositionWindowMultiWindow: (x, y) = (%d, %d)\n",
@ -265,14 +272,17 @@ Bool
winChangeWindowAttributesMultiWindow (WindowPtr pWin, unsigned long mask) winChangeWindowAttributesMultiWindow (WindowPtr pWin, unsigned long mask)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winChangeWindowAttributesMultiWindow - pWin: %08x\n", pWin); ErrorF ("winChangeWindowAttributesMultiWindow - pWin: %08x\n", pWin);
#endif #endif
/* Call any wrapped ChangeWindowAttributes function */ WIN_UNWRAP(ChangeWindowAttributes);
if (winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes) fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes (pWin, mask); WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesMultiWindow);
/* /*
* NOTE: We do not currently need to do anything here. * NOTE: We do not currently need to do anything here.
@ -291,15 +301,17 @@ Bool
winUnmapWindowMultiWindow (WindowPtr pWin) winUnmapWindowMultiWindow (WindowPtr pWin)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winUnmapWindowMultiWindow - pWin: %08x\n", pWin); ErrorF ("winUnmapWindowMultiWindow - pWin: %08x\n", pWin);
#endif #endif
/* Call any wrapped UnrealizeWindow function */ WIN_UNWRAP(UnrealizeWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow) fResult = (*pScreen->UnrealizeWindow)(pWin);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow (pWin); WIN_WRAP(UnrealizeWindow, winUnmapWindowMultiWindow);
/* Flag that the window has been killed */ /* Flag that the window has been killed */
pWinPriv->fXKilled = TRUE; pWinPriv->fXKilled = TRUE;
@ -320,15 +332,17 @@ Bool
winMapWindowMultiWindow (WindowPtr pWin) winMapWindowMultiWindow (WindowPtr pWin)
{ {
Bool fResult = TRUE; Bool fResult = TRUE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winMapWindowMultiWindow - pWin: %08x\n", pWin); ErrorF ("winMapWindowMultiWindow - pWin: %08x\n", pWin);
#endif #endif
/* Call any wrapped RealizeWindow function */ WIN_UNWRAP(RealizeWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow) fResult = (*pScreen->RealizeWindow)(pWin);
fResult = winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow (pWin); WIN_WRAP(RealizeWindow, winMapWindowMultiWindow);
/* Flag that this window has not been destroyed */ /* Flag that this window has not been destroyed */
pWinPriv->fXKilled = FALSE; pWinPriv->fXKilled = FALSE;
@ -353,14 +367,18 @@ winMapWindowMultiWindow (WindowPtr pWin)
void void
winReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent) winReparentWindowMultiWindow (WindowPtr pWin, WindowPtr pPriorParent)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG #if CYGMULTIWINDOW_DEBUG
ErrorF ("winReparentMultiWindow - pWin: %08x\n", pWin); ErrorF ("winReparentMultiWindow - pWin: %08x\n", pWin);
#endif #endif
/* Call any wrapped ReparentWindow function */ WIN_UNWRAP(ReparentWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->ReparentWindow) if (pScreen->ReparentWindow)
winGetScreenPriv(pWin->drawable.pScreen)->ReparentWindow (pWin, (*pScreen->ReparentWindow)(pWin, pPriorParent);
pPriorParent); WIN_WRAP(ReparentWindow, winReparentWindowMultiWindow);
/* Update the Windows window associated with this X window */ /* Update the Windows window associated with this X window */
winUpdateWindowsWindow (pWin); winUpdateWindowsWindow (pWin);
@ -378,16 +396,18 @@ winRestackWindowMultiWindow (WindowPtr pWin, WindowPtr pOldNextSib)
UINT uFlags; UINT uFlags;
HWND hInsertAfter; HWND hInsertAfter;
HWND hWnd = NULL; HWND hWnd = NULL;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGMULTIWINDOW_DEBUG || CYGWINDOWING_DEBUG #if CYGMULTIWINDOW_DEBUG || CYGWINDOWING_DEBUG
winTrace ("winRestackMultiWindow - %08x\n", pWin); winTrace ("winRestackMultiWindow - %08x\n", pWin);
#endif #endif
/* Call any wrapped RestackWindow function */ WIN_UNWRAP(RestackWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->RestackWindow) if (pScreen->RestackWindow)
winGetScreenPriv(pWin->drawable.pScreen)->RestackWindow (pWin, (*pScreen->RestackWindow)(pWin, pOldNextSib);
pOldNextSib); WIN_WRAP(RestackWindow, winRestackWindowMultiWindow);
#if 1 #if 1
/* /*
@ -620,6 +640,7 @@ winDestroyWindowsWindow (WindowPtr pWin)
hiconSmClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICONSM); hiconSmClass = (HICON) GetClassLong (pWinPriv->hWnd, GCL_HICONSM);
iReturn = GetClassName (pWinPriv->hWnd, pszClass, 512); iReturn = GetClassName (pWinPriv->hWnd, pszClass, 512);
SetProp (pWinPriv->hWnd, WIN_WINDOW_PROP, NULL);
/* Destroy the Windows window */ /* Destroy the Windows window */
DestroyWindow (pWinPriv->hWnd); DestroyWindow (pWinPriv->hWnd);
@ -859,14 +880,16 @@ void
winCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt, winCopyWindowMultiWindow (WindowPtr pWin, DDXPointRec oldpt,
RegionPtr oldRegion) RegionPtr oldRegion)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGWINDOWING_DEBUG #if CYGWINDOWING_DEBUG
ErrorF ("CopyWindowMultiWindow\n"); ErrorF ("CopyWindowMultiWindow\n");
#endif #endif
/* Call any wrapped CopyWindow function */ WIN_UNWRAP(CopyWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->CopyWindow) (*pScreen->CopyWindow)(pWin, oldpt, oldRegion);
winGetScreenPriv(pWin->drawable.pScreen)->CopyWindow (pWin, WIN_WRAP(CopyWindow, winCopyWindowMultiWindow);
oldpt,
oldRegion);
} }
@ -877,13 +900,17 @@ void
winMoveWindowMultiWindow (WindowPtr pWin, int x, int y, winMoveWindowMultiWindow (WindowPtr pWin, int x, int y,
WindowPtr pSib, VTKind kind) WindowPtr pSib, VTKind kind)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGWINDOWING_DEBUG #if CYGWINDOWING_DEBUG
ErrorF ("MoveWindowMultiWindow to (%d, %d)\n", x, y); ErrorF ("MoveWindowMultiWindow to (%d, %d)\n", x, y);
#endif #endif
/* Call any wrapped MoveWindow function */
if (winGetScreenPriv(pWin->drawable.pScreen)->MoveWindow) WIN_UNWRAP(MoveWindow);
winGetScreenPriv(pWin->drawable.pScreen)->MoveWindow (pWin, x, y, (*pScreen->MoveWindow)(pWin, x, y, pSib, kind);
pSib, kind); WIN_WRAP(MoveWindow, winMoveWindowMultiWindow);
} }
@ -894,13 +921,16 @@ void
winResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w, winResizeWindowMultiWindow (WindowPtr pWin, int x, int y, unsigned int w,
unsigned int h, WindowPtr pSib) unsigned int h, WindowPtr pSib)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGWINDOWING_DEBUG #if CYGWINDOWING_DEBUG
ErrorF ("ResizeWindowMultiWindow to (%d, %d) - %dx%d\n", x, y, w, h); ErrorF ("ResizeWindowMultiWindow to (%d, %d) - %dx%d\n", x, y, w, h);
#endif #endif
/* Call any wrapped MoveWindow function */ WIN_UNWRAP(ResizeWindow);
if (winGetScreenPriv(pWin->drawable.pScreen)->ResizeWindow) (*pScreen->ResizeWindow)(pWin, x, y, w, h, pSib);
winGetScreenPriv(pWin->drawable.pScreen)->ResizeWindow (pWin, x, y, WIN_WRAP(ResizeWindow, winResizeWindowMultiWindow);
w, h, pSib);
} }

View File

@ -260,7 +260,7 @@ winCloseScreenPrimaryDD (int nIndex, ScreenPtr pScreen)
pScreenPriv->fActive = FALSE; pScreenPriv->fActive = FALSE;
/* Call the wrapped CloseScreen procedure */ /* Call the wrapped CloseScreen procedure */
pScreen->CloseScreen = pScreenPriv->CloseScreen; WIN_UNWRAP(CloseScreen);
fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
/* Delete the window property */ /* Delete the window property */

View File

@ -494,7 +494,7 @@ winFinishScreenInitFB (int index,
pScreen->CreateWindow = winCreateWindowRootless; pScreen->CreateWindow = winCreateWindowRootless;
pScreen->DestroyWindow = winDestroyWindowRootless; pScreen->DestroyWindow = winDestroyWindowRootless;
pScreen->PositionWindow = winPositionWindowRootless; pScreen->PositionWindow = winPositionWindowRootless;
pScreen->ChangeWindowAttributes = winChangeWindowAttributesRootless; /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesRootless;*/
pScreen->RealizeWindow = winMapWindowRootless; pScreen->RealizeWindow = winMapWindowRootless;
pScreen->UnrealizeWindow = winUnmapWindowRootless; pScreen->UnrealizeWindow = winUnmapWindowRootless;
#ifdef SHAPE #ifdef SHAPE
@ -539,7 +539,7 @@ winFinishScreenInitFB (int index,
pScreen->CreateWindow = winCreateWindowMultiWindow; pScreen->CreateWindow = winCreateWindowMultiWindow;
pScreen->DestroyWindow = winDestroyWindowMultiWindow; pScreen->DestroyWindow = winDestroyWindowMultiWindow;
pScreen->PositionWindow = winPositionWindowMultiWindow; pScreen->PositionWindow = winPositionWindowMultiWindow;
pScreen->ChangeWindowAttributes = winChangeWindowAttributesMultiWindow; /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesMultiWindow;*/
pScreen->RealizeWindow = winMapWindowMultiWindow; pScreen->RealizeWindow = winMapWindowMultiWindow;
pScreen->UnrealizeWindow = winUnmapWindowMultiWindow; pScreen->UnrealizeWindow = winUnmapWindowMultiWindow;
pScreen->ReparentWindow = winReparentWindowMultiWindow; pScreen->ReparentWindow = winReparentWindowMultiWindow;
@ -713,7 +713,7 @@ winFinishScreenInitNativeGDI (int index,
pScreen->CreateWindow = winCreateWindowNativeGDI; pScreen->CreateWindow = winCreateWindowNativeGDI;
pScreen->DestroyWindow = winDestroyWindowNativeGDI; pScreen->DestroyWindow = winDestroyWindowNativeGDI;
pScreen->PositionWindow = winPositionWindowNativeGDI; pScreen->PositionWindow = winPositionWindowNativeGDI;
pScreen->ChangeWindowAttributes = winChangeWindowAttributesNativeGDI; /*pScreen->ChangeWindowAttributes = winChangeWindowAttributesNativeGDI;*/
pScreen->RealizeWindow = winMapWindowNativeGDI; pScreen->RealizeWindow = winMapWindowNativeGDI;
pScreen->UnrealizeWindow = winUnmapWindowNativeGDI; pScreen->UnrealizeWindow = winUnmapWindowNativeGDI;

View File

@ -681,7 +681,7 @@ winCloseScreenShadowDD (int nIndex, ScreenPtr pScreen)
pScreenPriv->fActive = FALSE; pScreenPriv->fActive = FALSE;
/* Call the wrapped CloseScreen procedure */ /* Call the wrapped CloseScreen procedure */
pScreen->CloseScreen = pScreenPriv->CloseScreen; WIN_UNWRAP(CloseScreen);
fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
/* Free the screen DC */ /* Free the screen DC */

View File

@ -735,7 +735,7 @@ winCloseScreenShadowDDNL (int nIndex, ScreenPtr pScreen)
pScreenPriv->fActive = FALSE; pScreenPriv->fActive = FALSE;
/* Call the wrapped CloseScreen procedure */ /* Call the wrapped CloseScreen procedure */
pScreen->CloseScreen = pScreenPriv->CloseScreen; WIN_UNWRAP(CloseScreen);
fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
/* Free the screen DC */ /* Free the screen DC */

View File

@ -630,7 +630,7 @@ winCloseScreenShadowGDI (int nIndex, ScreenPtr pScreen)
pScreenPriv->fActive = FALSE; pScreenPriv->fActive = FALSE;
/* Call the wrapped CloseScreen procedure */ /* Call the wrapped CloseScreen procedure */
pScreen->CloseScreen = pScreenPriv->CloseScreen; WIN_UNWRAP(CloseScreen);
fReturn = (*pScreen->CloseScreen) (nIndex, pScreen); fReturn = (*pScreen->CloseScreen) (nIndex, pScreen);
/* Delete the window property */ /* Delete the window property */

View File

@ -58,8 +58,19 @@ winReshapeRootless (WindowPtr pWin);
Bool Bool
winCreateWindowNativeGDI (WindowPtr pWin) winCreateWindowNativeGDI (WindowPtr pWin)
{ {
ErrorF ("winCreateWindowNativeGDI ()\n"); ScreenPtr pScreen = pWin->drawable.pScreen;
return TRUE; 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 Bool
winDestroyWindowNativeGDI (WindowPtr pWin) winDestroyWindowNativeGDI (WindowPtr pWin)
{ {
ErrorF ("winDestroyWindowNativeGDI ()\n"); Bool fResult = TRUE;
return 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 Bool
winPositionWindowNativeGDI (WindowPtr pWin, int x, int y) winPositionWindowNativeGDI (WindowPtr pWin, int x, int y)
{ {
ErrorF ("winPositionWindowNativeGDI ()\n"); Bool fResult = TRUE;
return 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 Bool
winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask) winChangeWindowAttributesNativeGDI (WindowPtr pWin, unsigned long mask)
{ {
ErrorF ("winChangeWindowAttributesNativeGDI ()\n"); Bool fResult = TRUE;
return 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 Bool
winUnmapWindowNativeGDI (WindowPtr pWindow) winUnmapWindowNativeGDI (WindowPtr pWin)
{ {
ErrorF ("winUnmapWindowNativeGDI ()\n"); Bool fResult = TRUE;
/* This functions is empty in the CFB, ScreenPtr pScreen = pWin->drawable.pScreen;
* we probably won't need to do anything winWindowPriv(pWin);
*/ winScreenPriv(pScreen);
return TRUE;
#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 Bool
winMapWindowNativeGDI (WindowPtr pWindow) winMapWindowNativeGDI (WindowPtr pWin)
{ {
ErrorF ("winMapWindowNativeGDI ()\n"); Bool fResult = TRUE;
/* This function is empty in the CFB, ScreenPtr pScreen = pWin->drawable.pScreen;
* we probably won't need to do anything winWindowPriv(pWin);
*/ winScreenPriv(pScreen);
return TRUE;
#if CYGDEBUG
winTrace ("winMapWindowNativeGDI (%p)\n", pWin);
#endif
WIN_UNWRAP(RealizeWindow);
fResult = (*pScreen->RealizeWindow)(pWin);
WIN_WRAP(RealizeWindow, winMapWindowMultiWindow);
return fResult;
} }
#endif #endif
@ -224,13 +293,17 @@ Bool
winCreateWindowRootless (WindowPtr pWin) winCreateWindowRootless (WindowPtr pWin)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winCreateWindowRootless ()\n"); winTrace ("winCreateWindowRootless (%p)\n", pWin);
#endif #endif
fResult = winGetScreenPriv(pWin->drawable.pScreen)->CreateWindow(pWin); WIN_UNWRAP(CreateWindow);
fResult = (*pScreen->CreateWindow) (pWin);
WIN_WRAP(CreateWindow, winCreateWindowRootless);
pWinPriv->hRgn = NULL; pWinPriv->hRgn = NULL;
@ -245,13 +318,17 @@ Bool
winDestroyWindowRootless (WindowPtr pWin) winDestroyWindowRootless (WindowPtr pWin)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winDestroyWindowRootless ()\n"); winTrace ("winDestroyWindowRootless (%p)\n", pWin);
#endif #endif
fResult = winGetScreenPriv(pWin->drawable.pScreen)->DestroyWindow(pWin); WIN_UNWRAP(DestroyWindow);
fResult = (*pScreen->DestroyWindow)(pWin);
WIN_WRAP(DestroyWindow, winDestroyWindowRootless);
if (pWinPriv->hRgn != NULL) if (pWinPriv->hRgn != NULL)
{ {
@ -272,12 +349,18 @@ Bool
winPositionWindowRootless (WindowPtr pWin, int x, int y) winPositionWindowRootless (WindowPtr pWin, int x, int y)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winPositionWindowRootless ()\n"); winTrace ("winPositionWindowRootless (%p)\n", pWin);
#endif #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); winUpdateRgnRootless (pWin);
@ -292,12 +375,17 @@ Bool
winChangeWindowAttributesRootless (WindowPtr pWin, unsigned long mask) winChangeWindowAttributesRootless (WindowPtr pWin, unsigned long mask)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winChangeWindowAttributesRootless ()\n"); winTrace ("winChangeWindowAttributesRootless (%p)\n", pWin);
#endif #endif
fResult = winGetScreenPriv(pWin->drawable.pScreen)->ChangeWindowAttributes(pWin, mask); WIN_UNWRAP(ChangeWindowAttributes);
fResult = (*pScreen->ChangeWindowAttributes)(pWin, mask);
WIN_WRAP(ChangeWindowAttributes, winChangeWindowAttributesRootless);
winUpdateRgnRootless (pWin); winUpdateRgnRootless (pWin);
@ -313,13 +401,17 @@ Bool
winUnmapWindowRootless (WindowPtr pWin) winUnmapWindowRootless (WindowPtr pWin)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin); winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winUnmapWindowRootless ()\n"); winTrace ("winUnmapWindowRootless (%p)\n", pWin);
#endif #endif
fResult = winGetScreenPriv(pWin->drawable.pScreen)->UnrealizeWindow(pWin); WIN_UNWRAP(UnrealizeWindow);
fResult = (*pScreen->UnrealizeWindow)(pWin);
WIN_WRAP(UnrealizeWindow, winUnmapWindowRootless);
if (pWinPriv->hRgn != NULL) if (pWinPriv->hRgn != NULL)
{ {
@ -341,12 +433,17 @@ Bool
winMapWindowRootless (WindowPtr pWin) winMapWindowRootless (WindowPtr pWin)
{ {
Bool fResult = FALSE; Bool fResult = FALSE;
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winMapWindowRootless ()\n"); winTrace ("winMapWindowRootless (%p)\n", pWin);
#endif #endif
fResult = winGetScreenPriv(pWin->drawable.pScreen)->RealizeWindow(pWin); WIN_UNWRAP(RealizeWindow);
fResult = (*pScreen->RealizeWindow)(pWin);
WIN_WRAP(RealizeWindow, winMapWindowRootless);
#ifdef SHAPE #ifdef SHAPE
winReshapeRootless (pWin); winReshapeRootless (pWin);
@ -362,11 +459,17 @@ winMapWindowRootless (WindowPtr pWin)
void void
winSetShapeRootless (WindowPtr pWin) winSetShapeRootless (WindowPtr pWin)
{ {
ScreenPtr pScreen = pWin->drawable.pScreen;
winWindowPriv(pWin);
winScreenPriv(pScreen);
#if CYGDEBUG #if CYGDEBUG
winDebug ("winSetShapeRootless ()\n"); winTrace ("winSetShapeRootless (%p)\n", pWin);
#endif #endif
winGetScreenPriv(pWin->drawable.pScreen)->SetShape(pWin); WIN_UNWRAP(SetShape);
(*pScreen->SetShape)(pWin);
WIN_WRAP(SetShape, winSetShapeRootless);
winReshapeRootless (pWin); winReshapeRootless (pWin);
winUpdateRgnRootless (pWin); winUpdateRgnRootless (pWin);