Synchronize with trunk's revision r57659.
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 31 Oct 2012 19:39:53 +0000 (19:39 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 31 Oct 2012 19:39:53 +0000 (19:39 +0000)
svn path=/branches/ros-csrss/; revision=57660

win32ss/include/ntuser.h
win32ss/user/ntuser/desktop.c
win32ss/user/ntuser/desktop.h
win32ss/user/ntuser/simplecall.c
win32ss/user/user32/include/ntwrapper.h

index 7c6d5a4..84f315b 100644 (file)
@@ -3251,7 +3251,6 @@ typedef struct tagKMDDELPARAM
 #define ONEPARAM_ROUTINE_SWITCHCARETSHOWING   0xfffe0008
 #define ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING 0xfffe000d
 #define ONEPARAM_ROUTINE_GETDESKTOPMAPPING    0xfffe000e
-#define ONEPARAM_ROUTINE_GETCURSORPOSITION    0xfffe0048 // use ONEPARAM_ or TWOPARAM routine ?
 #define TWOPARAM_ROUTINE_SETMENUBARHEIGHT   0xfffd0050
 #define TWOPARAM_ROUTINE_SETGUITHRDHANDLE   0xfffd0052
   #define MSQ_STATE_CAPTURE    0x1
index da90932..41f56ad 100644 (file)
@@ -26,8 +26,7 @@ IntFreeDesktopHeap(IN PDESKTOP pdesk);
 /* GLOBALS *******************************************************************/
 
 /* Currently active desktop */
-PDESKTOP InputDesktop = NULL;
-HDESK InputDesktopHandle = NULL;
+PDESKTOP gpdeskInputDesktop = NULL;
 HDC ScreenDeviceContext = NULL;
 PTHREADINFO gptiDesktopThread;
 HCURSOR gDesktopCursor = NULL;
@@ -420,7 +419,7 @@ IntValidateDesktopHandle(
 PDESKTOP FASTCALL
 IntGetActiveDesktop(VOID)
 {
-   return InputDesktop;
+   return gpdeskInputDesktop;
 }
 
 /*
@@ -1464,40 +1463,31 @@ NtUserOpenInputDesktop(
    BOOL fInherit,
    ACCESS_MASK dwDesiredAccess)
 {
-   PDESKTOP pdesk;
    NTSTATUS Status;
    HDESK hdesk = NULL;
+   ULONG HandleAttributes = 0;
 
    UserEnterExclusive();
-   TRACE("Enter NtUserOpenInputDesktop InputDesktopHandle 0x%p\n",InputDesktopHandle);
+   TRACE("Enter NtUserOpenInputDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop);
 
-   /* Get a pointer to the desktop object */
-   Status = IntValidateDesktopHandle(InputDesktopHandle, UserMode, 0, &pdesk);
-   if (!NT_SUCCESS(Status))
-   {
-      ERR("Validation of input desktop handle (0x%p) failed\n", InputDesktopHandle);
-      goto Exit;
-   }
+   if(fInherit) HandleAttributes = OBJ_INHERIT;
 
    /* Create a new handle to the object */
    Status = ObOpenObjectByPointer(
-               pdesk,
-               0,
+               gpdeskInputDesktop,
+               HandleAttributes,
                NULL,
                dwDesiredAccess,
                ExDesktopObjectType,
                UserMode,
                (PHANDLE)&hdesk);
 
-   ObDereferenceObject(pdesk);
-
    if (!NT_SUCCESS(Status))
    {
        ERR("Failed to open input desktop object\n");
        SetLastNtError(Status);
-       goto Exit;
    }
-Exit:
+
    TRACE("NtUserOpenInputDesktop returning 0x%p\n",hdesk);
    UserLeave();
    return hdesk;
@@ -1654,9 +1644,8 @@ NtUserSwitchDesktop(HDESK hdesk)
    InputWindowStation->ActiveDesktop = pdesk;
 
    /* Set the global state. */
-   InputDesktop = pdesk;
-   InputDesktopHandle = hdesk;
-   TRACE("SwitchDesktop InputDesktopHandle 0x%p\n",InputDesktopHandle);
+   gpdeskInputDesktop = pdesk;
+   TRACE("SwitchDesktop gpdeskInputDesktop 0x%p\n",gpdeskInputDesktop);
    ObDereferenceObject(pdesk);
 
    RETURN(TRUE);
index c05ae1f..6f49211 100644 (file)
@@ -70,7 +70,6 @@ typedef struct _DESKTOP
                             DESKTOP_WRITEOBJECTS
 
 extern PDESKTOP InputDesktop;
-extern HDESK InputDesktopHandle;
 extern PCLS DesktopWindowClass;
 extern HDC ScreenDeviceContext;
 extern PTHREADINFO gptiDesktopThread;
index 3d5a542..79d21ce 100644 (file)
@@ -260,25 +260,6 @@ NtUserCallOneParam(
                        RETURN(Result);
          }
 
-      case ONEPARAM_ROUTINE_GETCURSORPOSITION:
-         {
-             BOOL ret = TRUE;
-
-            _SEH2_TRY
-            {
-               ProbeForWrite((POINT*)Param,sizeof(POINT),1);
-               RtlCopyMemory((POINT*)Param,&gpsi->ptCursor,sizeof(POINT));
-            }
-            _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
-            {
-                SetLastNtError(_SEH2_GetExceptionCode());
-                ret = FALSE;
-            }
-            _SEH2_END;
-
-            RETURN (ret);
-         }
-
       case ONEPARAM_ROUTINE_ENABLEPROCWNDGHSTING:
          {
             BOOL Enable;
@@ -335,9 +316,10 @@ NtUserCallOneParam(
           BOOL Ret = TRUE;
           PPOINTL pptl;
           PTHREADINFO pti = PsGetCurrentThreadWin32Thread();
-          if (pti->hdesk != InputDesktopHandle) RETURN(FALSE);
+          if (pti->rpdesk != IntGetActiveDesktop()) RETURN(FALSE);
           _SEH2_TRY
           {
+              ProbeForWrite((POINT*)Param,sizeof(POINT),1);
              pptl = (PPOINTL)Param;
              *pptl = gpsi->ptCursor;
           }
index a43042b..b2ec18e 100644 (file)
@@ -806,7 +806,7 @@ EXTINLINE PVOID NtUserxGetDesktopMapping(PVOID ptr)
 
 EXTINLINE BOOL NtUserxGetCursorPos(POINT* lpPoint)
 {
-    return (BOOL)NtUserCallOneParam((DWORD_PTR)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOSITION);
+    return (BOOL)NtUserCallOneParam((DWORD_PTR)lpPoint, ONEPARAM_ROUTINE_GETCURSORPOS);
 }
 
 EXTINLINE BOOL NtUserxSetMenuBarHeight(HMENU menu, INT height)