Change WNDOBJ implementation a bit to make the NVIDIA driver happy. Modified: trunk/reactos/subsys/win32k/eng/window.c Modified: trunk/reactos/subsys/win32k/objects/dc.c _____
Modified: trunk/reactos/subsys/win32k/eng/window.c --- trunk/reactos/subsys/win32k/eng/window.c 2005-02-05 00:09:56 UTC (rev 13411) +++ trunk/reactos/subsys/win32k/eng/window.c 2005-02-05 00:17:49 UTC (rev 13412) @@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -/* $Id: window.c,v 1.11 2004/05/10 17:07:17 blight Exp $ +/* $Id$ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -57,8 +57,8 @@ pwo = NULL; }
- DPRINT1("Calling WNDOBJCHANGEPROC (0x%x), Changed = 0x%x\n", - WndObjInt->ChangeProc, flChanged); + DPRINT("Calling WNDOBJCHANGEPROC (0x%x), Changed = 0x%x\n", + WndObjInt->ChangeProc, flChanged); WndObjInt->ChangeProc(pwo, flChanged); }
@@ -80,7 +80,8 @@ PWINDOW_OBJECT Window; CLIPOBJ *ClientClipObj;
- DPRINT("EngCreateWnd: WNDOBJCHANGEPROC = 0x%x, Flags = 0x%x\n", pfn, fl); + DPRINT("EngCreateWnd: pso = 0x%x, hwnd = 0x%x, pfn = 0x%x, fl = 0x%x, pixfmt = %d\n", + pso, hwnd, pfn, fl, iPixelFormat);
/* Get window object */ Window = IntGetWindowObject(hwnd); @@ -123,10 +124,8 @@ /* release resources */ IntReleaseWindowObject(Window);
- /* HACKHACKHACK */ - IntEngWndChanged(WndObjUser, WOC_RGN_CLIENT); - DPRINT("EngCreateWnd: SUCCESS!\n"); + return WndObjUser; }
@@ -140,7 +139,7 @@ { WNDGDI *WndObjInt = ObjToGDI(pwo, WND);
- DPRINT("EngDeleteWnd\n"); + DPRINT("EngDeleteWnd: pwo = 0x%x\n", pwo);
IntEngDeleteClipRegion(WndObjInt->ClientClipObj); EngFreeMem(WndObjInt); @@ -159,8 +158,13 @@ ) { WNDGDI *WndObjInt = ObjToGDI(pwo, WND); - DPRINT("WNDOBJ_bEnum\n"); - return CLIPOBJ_bEnum(WndObjInt->ClientClipObj, cj, pul); + BOOL Ret; + + DPRINT("WNDOBJ_bEnum: pwo = 0x%x, cj = %d, pul = 0x%x\n", pwo, cj, pul); + Ret = CLIPOBJ_bEnum(WndObjInt->ClientClipObj, cj, pul); + + DPRINT("WNDOBJ_bEnum: Returning %s\n", Ret ? "True" : "False"); + return Ret; }
@@ -177,9 +181,16 @@ ) { WNDGDI *WndObjInt = ObjToGDI(pwo, WND); - DPRINT("WNDOBJ_cEnumStart\n"); + ULONG Ret; + + DPRINT("WNDOBJ_cEnumStart: pwo = 0x%x, iType = %d, iDirection = %d, cLimit = %d\n", + pwo, iType, iDirection, cLimit); + /* FIXME: Should we enumerate all rectangles or not? */ - return CLIPOBJ_cEnumStart(WndObjInt->ClientClipObj, FALSE, iType, iDirection, cLimit); + Ret = CLIPOBJ_cEnumStart(WndObjInt->ClientClipObj, FALSE, iType, iDirection, cLimit); + + DPRINT("WNDOBJ_cEnumStart: Returning 0x%x\n", Ret); + return Ret; }
@@ -193,7 +204,20 @@ IN PVOID pvConsumer ) { + BOOL Hack; + + DPRINT("WNDOBJ_vSetConsumer: pwo = 0x%x, pvConsumer = 0x%x\n", pwo, pvConsumer); + + Hack = (pwo->pvConsumer == NULL); pwo->pvConsumer = pvConsumer; + + /* HACKHACKHACK */ + if (Hack) + { + IntEngWndChanged(pwo, WOC_RGN_CLIENT); + IntEngWndChanged(pwo, WOC_CHANGED); + IntEngWndChanged(pwo, WOC_DRAWN); + } }
/* EOF */ _____
Modified: trunk/reactos/subsys/win32k/objects/dc.c --- trunk/reactos/subsys/win32k/objects/dc.c 2005-02-05 00:09:56 UTC (rev 13411) +++ trunk/reactos/subsys/win32k/objects/dc.c 2005-02-05 00:17:49 UTC (rev 13412) @@ -727,7 +727,7 @@
if (Driver != NULL && Driver->Buffer != NULL) { - DPRINT("NAME: %S\n", Driver->Buffer); // FIXME: Should not crash if NULL + DPRINT("NAME: %ws\n", Driver); // FIXME: Should not crash if NULL }
/* Allocate a DC object */