- Avoid useless casts
 - Add a few debug prints
 - Add sanity check

svn path=/trunk/; revision=63742
This commit is contained in:
Jérôme Gardou 2014-07-26 15:41:33 +00:00
parent 6d7085f177
commit 2d6704f615
2 changed files with 23 additions and 29 deletions

View file

@ -85,6 +85,7 @@ typedef struct _CLIPGDI {
ULONG RectCount; ULONG RectCount;
RECTL* Rects; RECTL* Rects;
} CLIPGDI, *PCLIPGDI; } CLIPGDI, *PCLIPGDI;
C_ASSERT(FIELD_OFFSET(CLIPGDI, ClipObj) == FIELD_OFFSET(CLIPGDI, WndObj.coClient));
// HACK, until we use the original structure // HACK, until we use the original structure
#define XCLIPOBJ CLIPGDI #define XCLIPOBJ CLIPGDI

View file

@ -18,11 +18,9 @@ INT gcountPWO = 0;
VOID VOID
FASTCALL FASTCALL
IntEngWndCallChangeProc( IntEngWndCallChangeProc(
IN WNDOBJ *pwo, _In_ XCLIPOBJ *Clip,
IN FLONG flChanged) _In_ FLONG flChanged)
{ {
XCLIPOBJ* Clip = CONTAINING_RECORD(pwo, XCLIPOBJ, WndObj);
if (Clip->ChangeProc == NULL) if (Clip->ChangeProc == NULL)
{ {
return; return;
@ -35,15 +33,14 @@ IntEngWndCallChangeProc(
return; return;
} }
/* Call the WNDOBJCHANGEPROC */
if (flChanged == WOC_CHANGED)
{
pwo = NULL;
}
TRACE("Calling WNDOBJCHANGEPROC (0x%p), Changed = 0x%x\n", TRACE("Calling WNDOBJCHANGEPROC (0x%p), Changed = 0x%x\n",
Clip->ChangeProc, flChanged); Clip->ChangeProc, flChanged);
Clip->ChangeProc(pwo, flChanged);
/* Call the WNDOBJCHANGEPROC */
if (flChanged == WOC_CHANGED)
Clip->ChangeProc(NULL, flChanged);
else
Clip->ChangeProc(&Clip->WndObj, flChanged);
} }
/* /*
@ -112,30 +109,25 @@ IntEngWindowChanged(
_In_ PWND Window, _In_ PWND Window,
_In_ FLONG flChanged) _In_ FLONG flChanged)
{ {
PPROPERTY pprop; XCLIPOBJ *Clip;
XCLIPOBJ *Current;
HWND hWnd;
ASSERT_IRQL_LESS_OR_EQUAL(PASSIVE_LEVEL); ASSERT_IRQL_LESS_OR_EQUAL(PASSIVE_LEVEL);
hWnd = Window->head.h; Clip = UserGetProp(Window, AtomWndObj);
pprop = IntGetProp(Window, AtomWndObj); if (!Clip)
if (!pprop)
{ {
return; return;
} }
Current = (XCLIPOBJ *)pprop->Data;
if ( gcountPWO && ASSERT(Clip->Hwnd == Window->head.h);
Current && if (Clip->WndObj.pvConsumer != NULL)
Current->Hwnd == hWnd &&
Current->WndObj.pvConsumer != NULL )
{ {
/* Update the WNDOBJ */ /* Update the WNDOBJ */
switch (flChanged) switch (flChanged)
{ {
case WOC_RGN_CLIENT: case WOC_RGN_CLIENT:
/* Update the clipobj and client rect of the WNDOBJ */ /* Update the clipobj and client rect of the WNDOBJ */
IntEngWndUpdateClipObj(Current, Window); IntEngWndUpdateClipObj(Clip, Window);
break; break;
case WOC_DELETE: case WOC_DELETE:
@ -144,12 +136,12 @@ IntEngWindowChanged(
} }
/* Call the change proc */ /* Call the change proc */
IntEngWndCallChangeProc(&Current->WndObj, flChanged); IntEngWndCallChangeProc(Clip, flChanged);
/* HACK: Send WOC_CHANGED after WOC_RGN_CLIENT */ /* HACK: Send WOC_CHANGED after WOC_RGN_CLIENT */
if (flChanged == WOC_RGN_CLIENT) if (flChanged == WOC_RGN_CLIENT)
{ {
IntEngWndCallChangeProc(&Current->WndObj, WOC_CHANGED); IntEngWndCallChangeProc(Clip, WOC_CHANGED);
} }
} }
} }
@ -218,7 +210,7 @@ EngCreateWnd(
IntSetProp(Window, AtomWndObj, Clip); IntSetProp(Window, AtomWndObj, Clip);
++gcountPWO; ++gcountPWO;
TRACE("EngCreateWnd: SUCCESS!\n"); TRACE("EngCreateWnd: SUCCESS: %p!\n", WndObjUser);
RETURN( WndObjUser); RETURN( WndObjUser);
@ -315,6 +307,7 @@ WNDOBJ_vSetConsumer(
IN WNDOBJ *pwo, IN WNDOBJ *pwo,
IN PVOID pvConsumer) IN PVOID pvConsumer)
{ {
XCLIPOBJ* Clip = CONTAINING_RECORD(pwo, XCLIPOBJ, WndObj);
BOOL Hack; BOOL Hack;
TRACE("WNDOBJ_vSetConsumer: pwo = 0x%p, pvConsumer = 0x%p\n", pwo, pvConsumer); TRACE("WNDOBJ_vSetConsumer: pwo = 0x%p, pvConsumer = 0x%p\n", pwo, pvConsumer);
@ -333,9 +326,9 @@ WNDOBJ_vSetConsumer(
if (Hack) if (Hack)
{ {
FIXME("Is this hack really needed?\n"); FIXME("Is this hack really needed?\n");
IntEngWndCallChangeProc(pwo, WOC_RGN_CLIENT); IntEngWndCallChangeProc(Clip, WOC_RGN_CLIENT);
IntEngWndCallChangeProc(pwo, WOC_CHANGED); IntEngWndCallChangeProc(Clip, WOC_CHANGED);
IntEngWndCallChangeProc(pwo, WOC_DRAWN); IntEngWndCallChangeProc(Clip, WOC_DRAWN);
} }
} }