[ros-diffs] [jimtabor] 54101: [Win32k] - Support Active SxS for the window structures.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Wed Oct 12 22:46:08 UTC 2011


Author: jimtabor
Date: Wed Oct 12 22:46:07 2011
New Revision: 54101

URL: http://svn.reactos.org/svn/reactos?rev=54101&view=rev
Log:
[Win32k]
- Support Active SxS for the window structures.


Modified:
    trunk/reactos/include/reactos/win32k/ntuser.h
    trunk/reactos/subsystems/win32/win32k/include/window.h
    trunk/reactos/subsystems/win32/win32k/ntuser/callback.c
    trunk/reactos/subsystems/win32/win32k/ntuser/desktop.c
    trunk/reactos/subsystems/win32/win32k/ntuser/window.c

Modified: trunk/reactos/include/reactos/win32k/ntuser.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntuser.h?rev=54101&r1=54100&r2=54101&view=diff
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] Wed Oct 12 22:46:07 2011
@@ -5,7 +5,6 @@
 typedef struct _THREADINFO *PTHREADINFO;
 struct _DESKTOP;
 struct _WND;
-
 
 #define FIRST_USER_HANDLE 0x0020  /* first possible value for low word of user handle */
 #define LAST_USER_HANDLE  0xffef  /* last possible value for low word of user handle */
@@ -247,6 +246,7 @@
 {
      HWND hWnd;
      struct _WND *pWnd;
+     PVOID pActCtx;
 } CALLBACKWND, *PCALLBACKWND;
 
 #define CI_TRANSACTION       0x00000001
@@ -284,7 +284,7 @@
     UCHAR achDbcsCF[2];
     MSG msgDbcsCB;
     LPDWORD lpdwRegisteredClasses;
-    ULONG Win32ClientInfo3[27];
+    ULONG Win32ClientInfo3[26];
 /* It's just a pointer reference not to be used w the structure in user space. */
     PPROCESSINFO ppi;
 } CLIENTINFO, *PCLIENTINFO;
@@ -591,7 +591,7 @@
     struct _WND *spwndLastActive;
     //HIMC hImc; // Input context associated with this window.
     LONG dwUserData;
-    //PACTIVATION_CONTEXT pActCtx;
+    PVOID pActCtx;
     //PD3DMATRIX pTransForm;
     struct _WND *spwndClipboardListener;
     DWORD ExStyle2;

Modified: trunk/reactos/subsystems/win32/win32k/include/window.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/window.h?rev=54101&r1=54100&r2=54101&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/window.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/window.h [iso-8859-1] Wed Oct 12 22:46:07 2011
@@ -47,7 +47,7 @@
 BOOL FASTCALL IntShowOwnedPopups( PWND owner, BOOL fShow );
 LRESULT FASTCALL IntDefWindowProc( PWND Window, UINT Msg, WPARAM wParam, LPARAM lParam, BOOL Ansi);
 VOID FASTCALL IntNotifyWinEvent(DWORD, PWND, LONG, LONG, DWORD);
-PWND FASTCALL co_UserCreateWindowEx(CREATESTRUCTW*, PUNICODE_STRING, PLARGE_STRING);
+PWND FASTCALL co_UserCreateWindowEx(CREATESTRUCTW*, PUNICODE_STRING, PLARGE_STRING, PVOID);
 BOOL FASTCALL IntEnableWindow(HWND,BOOL);
 DWORD FASTCALL GetNCHitEx(PWND pWnd, POINT pt);
 

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/callback.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/callback.c?rev=54101&r1=54100&r2=54101&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/callback.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/callback.c [iso-8859-1] Wed Oct 12 22:46:07 2011
@@ -87,7 +87,7 @@
 // This will help user space programs speed up read access with the window object.
 //
 static VOID
-IntSetTebWndCallback (HWND * hWnd, PWND * pWnd)
+IntSetTebWndCallback (HWND * hWnd, PWND * pWnd, PVOID * pActCtx)
 {
   HWND hWndS = *hWnd;
   PWND Window = UserGetWindowObject(*hWnd);
@@ -95,18 +95,21 @@
 
   *hWnd = ClientInfo->CallbackWnd.hWnd;
   *pWnd = ClientInfo->CallbackWnd.pWnd;
+  *pActCtx = ClientInfo->CallbackWnd.pActCtx;
 
   ClientInfo->CallbackWnd.hWnd  = hWndS;
   ClientInfo->CallbackWnd.pWnd = DesktopHeapAddressToUser(Window);
+  ClientInfo->CallbackWnd.pActCtx = Window->pActCtx;
 }
 
 static VOID
-IntRestoreTebWndCallback (HWND hWnd, PWND pWnd)
+IntRestoreTebWndCallback (HWND hWnd, PWND pWnd, PVOID pActCtx)
 {
   PCLIENTINFO ClientInfo = GetWin32ClientInfo();
 
   ClientInfo->CallbackWnd.hWnd = hWnd;
   ClientInfo->CallbackWnd.pWnd = pWnd;
+  ClientInfo->CallbackWnd.pActCtx = pActCtx;
 }
 
 /* FUNCTIONS *****************************************************************/
@@ -227,7 +230,7 @@
                               LRESULT Result)
 {
    SENDASYNCPROC_CALLBACK_ARGUMENTS Arguments;
-   PVOID ResultPointer;
+   PVOID ResultPointer, pActCtx;
    PWND pWnd;
    ULONG ResultLength;
    NTSTATUS Status;
@@ -238,7 +241,7 @@
    Arguments.Context = CompletionCallbackContext;
    Arguments.Result = Result;
 
-   IntSetTebWndCallback (&hWnd, &pWnd);
+   IntSetTebWndCallback (&hWnd, &pWnd, &pActCtx);
 
    UserLeaveCo();
 
@@ -250,7 +253,7 @@
 
    UserEnterCo();
 
-   IntRestoreTebWndCallback (hWnd, pWnd);
+   IntRestoreTebWndCallback (hWnd, pWnd, pActCtx);
 
    if (!NT_SUCCESS(Status))
    {
@@ -271,7 +274,7 @@
    WINDOWPROC_CALLBACK_ARGUMENTS StackArguments;
    PWINDOWPROC_CALLBACK_ARGUMENTS Arguments;
    NTSTATUS Status;
-   PVOID ResultPointer;
+   PVOID ResultPointer, pActCtx;
    PWND pWnd;
    ULONG ResultLength;
    ULONG ArgumentLength;
@@ -304,7 +307,7 @@
    ResultPointer = NULL;
    ResultLength = ArgumentLength;
 
-   IntSetTebWndCallback (&Wnd, &pWnd);
+   IntSetTebWndCallback (&Wnd, &pWnd, &pActCtx);
 
    UserLeaveCo();
 
@@ -328,7 +331,7 @@
 
    UserEnterCo();
 
-   IntRestoreTebWndCallback (Wnd, pWnd);
+   IntRestoreTebWndCallback (Wnd, pWnd, pActCtx);
 
    if (!NT_SUCCESS(Status))
    {

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=54101&r1=54100&r2=54101&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] Wed Oct 12 22:46:07 2011
@@ -1060,7 +1060,7 @@
    Cs.lpszName = (LPCWSTR) &WindowName;
    Cs.lpszClass = (LPCWSTR) &ClassName;
 
-   pWndDesktop = co_UserCreateWindowEx(&Cs, &ClassName, &WindowName);
+   pWndDesktop = co_UserCreateWindowEx(&Cs, &ClassName, &WindowName, NULL);
    if (!pWnd)
    {
       ERR("Failed to create Desktop window handle\n");
@@ -1088,7 +1088,7 @@
    Cs.lpszName = (LPCWSTR) &WindowName;
    Cs.lpszClass = (LPCWSTR) &ClassName;
 
-   pWnd = co_UserCreateWindowEx(&Cs, &ClassName, &WindowName);
+   pWnd = co_UserCreateWindowEx(&Cs, &ClassName, &WindowName, NULL);
    if (!pWnd)
    {
       ERR("Failed to create Message window handle\n");

Modified: trunk/reactos/subsystems/win32/win32k/ntuser/window.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/window.c?rev=54101&r1=54100&r2=54101&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/window.c [iso-8859-1] Wed Oct 12 22:46:07 2011
@@ -1557,7 +1557,8 @@
                                         PLARGE_STRING WindowName,
                                         PCLS Class,
                                         PWND ParentWindow,
-                                        PWND OwnerWindow)
+                                        PWND OwnerWindow,
+                                        PVOID acbiBuffer)
 {
    PWND pWnd = NULL;
    HWND hWnd;
@@ -1642,6 +1643,7 @@
    pWnd->style = Cs->style & ~WS_VISIBLE;
    pWnd->ExStyle = Cs->dwExStyle;
    pWnd->cbwndExtra = pWnd->pcls->cbwndExtra;
+   pWnd->pActCtx = acbiBuffer;
 
    IntReferenceMessageQueue(pWnd->head.pti->MessageQueue);
    if (pWnd->spwndParent != NULL && Cs->hwndParent != 0)
@@ -1835,7 +1837,8 @@
 PWND FASTCALL
 co_UserCreateWindowEx(CREATESTRUCTW* Cs,
                      PUNICODE_STRING ClassName,
-                     PLARGE_STRING WindowName)
+                     PLARGE_STRING WindowName,
+                     PVOID acbiBuffer)
 {
    PWND Window = NULL, ParentWindow = NULL, OwnerWindow;
    HWND hWnd, hWndParent, hWndOwner, hwndInsertAfter;
@@ -1914,7 +1917,8 @@
                             WindowName,
                             Class,
                             ParentWindow,
-                            OwnerWindow);
+                            OwnerWindow,
+                            acbiBuffer);
    if(!Window)
    {
        ERR("IntCreateWindow failed!\n");
@@ -2347,7 +2351,7 @@
     UserEnterExclusive();
 
     /* Call the internal function */
-    pwnd = co_UserCreateWindowEx(&Cs, &ustrClassName, plstrWindowName);
+    pwnd = co_UserCreateWindowEx(&Cs, &ustrClassName, plstrWindowName, acbiBuffer);
 
     if(!pwnd)
     {




More information about the Ros-diffs mailing list