From 8b6f274b1bd1d41a6d1e4b0b40ceb1e1b8ea6254 Mon Sep 17 00:00:00 2001 From: James Tabor Date: Sun, 6 Dec 2009 23:37:09 +0000 Subject: [PATCH] [Win32k] - Add debug printout to show post thread message stall when posting hook messages to another thread. See bug 4926. - Do not set current thread client hook flags, set only the requested client thread hook flag data. - Initialize Hook head structure with thread info and desktop pointers. svn path=/trunk/; revision=44447 --- reactos/subsystems/win32/win32k/ntuser/hook.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/reactos/subsystems/win32/win32k/ntuser/hook.c b/reactos/subsystems/win32/win32k/ntuser/hook.c index 7b9b545ac0f..aea544e5fe4 100644 --- a/reactos/subsystems/win32/win32k/ntuser/hook.c +++ b/reactos/subsystems/win32/win32k/ntuser/hook.c @@ -104,8 +104,6 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt return NULL; } -// Hook->head.pti =? -// Hook->head.rpdesk Hook->head.h = Handle; Hook->Thread = Thread; Hook->HookId = HookId; @@ -116,7 +114,11 @@ IntAddHook(PETHREAD Thread, int HookId, BOOLEAN Global, PWINSTATION_OBJECT WinSt ASSERT(W32Thread != NULL); W32Thread->fsHooks |= HOOKID_TO_FLAG(HookId); - GetWin32ClientInfo()->fsHooks = W32Thread->fsHooks; + if (W32Thread->pClientInfo) + W32Thread->pClientInfo->fsHooks = W32Thread->fsHooks; + + Hook->head.pti = W32Thread; + Hook->head.rpdesk = W32Thread->Desktop; } RtlInitUnicodeString(&Hook->ModuleName, NULL); @@ -347,6 +349,7 @@ co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam, LPARAM lParam) if ((Hook->Thread != PsGetCurrentThread()) && (Hook->Thread != NULL)) { + DPRINT1("\nHook found by Id and posted to Thread! %d\n",HookId ); /* Post it in message queue. */ return IntCallLowLevelHook(Hook, Code, wParam, lParam); }