Author: gadamopoulos
Date: Sat Feb 19 12:22:52 2011
New Revision: 50816

URL: http://svn.reactos.org/svn/reactos?rev=50816&view=rev
Log:
[win32k]
- Revert r50121 and r50154

Modified:
    trunk/reactos/subsystems/win32/win32k/include/msgqueue.h
    trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c
    trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
    trunk/reactos/subsystems/win32/win32k/ntuser/focus.c
    trunk/reactos/subsystems/win32/win32k/ntuser/message.c
    trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c
    trunk/reactos/subsystems/win32/win32k/ntuser/painting.c

Modified: trunk/reactos/subsystems/win32/win32k/include/msgqueue.h
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/msgqueue.h?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/msgqueue.h [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/include/msgqueue.h [iso-8859-1] Sat 
Feb 19 12:22:52 2011
@@ -180,6 +180,11 @@
                WPARAM wParam,
                LPARAM lParam);
 LRESULT FASTCALL
+co_IntPostOrSendMessage(HWND hWnd,
+                    UINT Msg,
+                    WPARAM wParam,
+                    LPARAM lParam);
+LRESULT FASTCALL
 co_IntSendMessageTimeout(HWND hWnd,
                       UINT Msg,
                       WPARAM wParam,
@@ -187,7 +192,7 @@
                       UINT uFlags,
                       UINT uTimeout,
                       ULONG_PTR *uResult);
-BOOL FASTCALL UserSendNotifyMessage( HWND hWnd,UINT Msg,WPARAM wParam,LPARAM 
lParam );
+
 LRESULT FASTCALL co_IntSendMessageNoWait(HWND hWnd,
                         UINT Msg,
                         WPARAM wParam,

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/clipboard.c [iso-8859-1] Sat 
Feb 19 12:22:52 2011
@@ -601,7 +601,7 @@
     if (ret && ClipboardOwnerWindow)
     {
         DPRINT("Clipboard: WM_DESTROYCLIPBOARD to %p", 
ClipboardOwnerWindow->head.h);
-        co_IntSendMessageNoWait( ClipboardOwnerWindow->head.h, 
WM_DESTROYCLIPBOARD, 0, 0);
+        co_IntSendMessage( ClipboardOwnerWindow->head.h, WM_DESTROYCLIPBOARD, 
0, 0);
     }
 
     UserLeave();

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c [iso-8859-1] Sat Feb 
19 12:22:52 2011
@@ -738,7 +738,11 @@
 
       for (; *cursor; cursor++)
       {
-         UserPostMessage(*cursor, gpsi->uiShellMsg, Message, lParam);
+         DPRINT("Sending notify\n");
+         co_IntPostOrSendMessage(*cursor,
+                                 gpsi->uiShellMsg,
+                                 Message,
+                                 lParam);
       }
 
       ExFreePool(HwndList);

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/focus.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/focus.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/focus.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/focus.c [iso-8859-1] Sat Feb 
19 12:22:52 2011
@@ -77,12 +77,12 @@
       if (WindowPrev) UserRefObjectCo(WindowPrev, &RefPrev);
 
       /* Send palette messages */
-      if (co_IntSendMessage(hWnd, WM_QUERYNEWPALETTE, 0, 0))
-      {
-         UserSendNotifyMessage( HWND_BROADCAST,
-                                WM_PALETTEISCHANGING,
-                               (WPARAM)hWnd,
-                                0);
+      if (co_IntPostOrSendMessage(hWnd, WM_QUERYNEWPALETTE, 0, 0))
+      {
+         UserPostMessage( HWND_BROADCAST,
+                          WM_PALETTEISCHANGING,
+                         (WPARAM)hWnd,
+                          0);
       }
 
       if (Window->spwndPrev != NULL)
@@ -166,7 +166,7 @@
    if (hWndPrev)
    {
       IntNotifyWinEvent(EVENT_OBJECT_FOCUS, NULL, OBJID_CLIENT, CHILDID_SELF, 
0);
-      co_IntSendMessageNoWait(hWndPrev, WM_KILLFOCUS, (WPARAM)hWnd, 0);
+      co_IntPostOrSendMessage(hWndPrev, WM_KILLFOCUS, (WPARAM)hWnd, 0);
    }
 }
 
@@ -177,7 +177,7 @@
    {
       PWND pWnd = UserGetWindowObject(hWnd);
       IntNotifyWinEvent(EVENT_OBJECT_FOCUS, pWnd, OBJID_CLIENT, CHILDID_SELF, 
0);
-      co_IntSendMessageNoWait(hWnd, WM_SETFOCUS, (WPARAM)hWndPrev, 0);
+      co_IntPostOrSendMessage(hWnd, WM_SETFOCUS, (WPARAM)hWndPrev, 0);
    }
 }
 
@@ -579,7 +579,7 @@
    if (Window)
       IntNotifyWinEvent(EVENT_SYSTEM_CAPTURESTART, Window, OBJID_WINDOW, 
CHILDID_SELF, WEF_SETBYWNDPTI);
 
-   co_IntSendMessageNoWait(hWndPrev, WM_CAPTURECHANGED, 0, (LPARAM)hWnd);
+   co_IntPostOrSendMessage(hWndPrev, WM_CAPTURECHANGED, 0, (LPARAM)hWnd);
    ThreadQueue->CaptureWindow = hWnd;
 
    RETURN( hWndPrev);

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/message.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/message.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/message.c [iso-8859-1] Sat Feb 
19 12:22:52 2011
@@ -1549,6 +1549,47 @@
     END_CLEANUP;
 }
 
+/* This function posts a message if the destination's message queue belongs to
+another thread, otherwise it sends the message. It does not support broadcast
+messages! */
+LRESULT FASTCALL
+co_IntPostOrSendMessage( HWND hWnd,
+                         UINT Msg,
+                         WPARAM wParam,
+                         LPARAM lParam )
+{
+    ULONG_PTR Result;
+    PTHREADINFO pti;
+    PWND Window;
+
+    if ( hWnd == HWND_BROADCAST )
+    {
+        return 0;
+    }
+
+    if(!(Window = UserGetWindowObject(hWnd)))
+    {
+        return 0;
+    }
+
+    pti = PsGetCurrentThreadWin32Thread();
+
+    if ( Window->head.pti->MessageQueue != pti->MessageQueue &&
+         FindMsgMemory(Msg) == 0 )
+    {
+        Result = UserPostMessage(hWnd, Msg, wParam, lParam);
+    }
+    else
+    {
+        if ( !co_IntSendMessageTimeoutSingle(hWnd, Msg, wParam, lParam, 
SMTO_NORMAL, 0, &Result) )
+        {
+            Result = 0;
+        }
+    }
+
+    return (LRESULT)Result;
+}
+
 LRESULT FASTCALL
 co_IntDoSendMessage( HWND hWnd,
                      UINT Msg,

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/ntstubs.c [iso-8859-1] Sat Feb 
19 12:22:52 2011
@@ -564,7 +564,7 @@
   }
   if (Ret)
   {
-     UserSendNotifyMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
+     UserPostMessage(HWND_BROADCAST, WM_SYSCOLORCHANGE, 0, 0);
   }
   UserLeave();
   return Ret;

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/painting.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/painting.c?rev=50816&r1=50815&r2=50816&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/painting.c [iso-8859-1] Sat 
Feb 19 12:22:52 2011
@@ -1957,7 +1957,7 @@
       hWnd = IntWindowFromDC(hdc);
       if (hWnd) // Send broadcast if dc is associated with a window.
       {  // FYI: Thread locked in CallOneParam.
-         UserSendNotifyMessage((HWND)HWND_BROADCAST, WM_PALETTECHANGED, 
(WPARAM)hWnd, 0);
+         co_IntSendMessage((HWND)HWND_BROADCAST, WM_PALETTECHANGED, 
(WPARAM)hWnd, 0);
       }
   }
   return Ret;


Reply via email to