mostly naming changes
Modified: branches/win32k rewrite attempt/win32k/eng/window.c
Modified: branches/win32k rewrite attempt/win32k/include/accelerator.h
Modified: branches/win32k rewrite attempt/win32k/include/cursoricon.h
Modified: branches/win32k rewrite attempt/win32k/include/hook.h
Modified: branches/win32k rewrite attempt/win32k/include/ntuser.h
Modified: branches/win32k rewrite attempt/win32k/include/object.h
Modified: branches/win32k rewrite attempt/win32k/include/userfuncs.h
Modified: branches/win32k rewrite attempt/win32k/include/win32.h
Modified: branches/win32k rewrite attempt/win32k/include/window.h
Modified: branches/win32k rewrite attempt/win32k/include/winpos.h
Modified: branches/win32k rewrite attempt/win32k/ntuser/accelerator.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/callback.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/caret.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/class.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/cursoricon.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/desktop.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/focus.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/hook.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/hotkey.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/input.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/menu.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/message.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/misc.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/monitor.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/msgqueue.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/ntuser.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/object.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/painting.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/prop.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/scrollbar.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/timer.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/vis.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/windc.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/window.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/winpos.c
Modified: branches/win32k rewrite attempt/win32k/ntuser/winsta.c
Modified: branches/win32k rewrite attempt/win32k/objects/color.c
Modified: branches/win32k rewrite attempt/win32k/objects/dc.c
_____
Modified: branches/win32k rewrite attempt/win32k/eng/window.c
--- branches/win32k rewrite attempt/win32k/eng/window.c 2005-09-02
19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/eng/window.c 2005-09-02
20:45:56 UTC (rev 17607)
@@ -210,7 +210,8 @@
pso, hwnd, pfn, fl, iPixelFormat);
/* Get window object */
- Window = IntGetWindowObject(hwnd);
+ //FIXME: user lock?????
+ Window = UserGetWindowObject(hwnd);
if (Window == NULL)
{
return NULL;
@@ -262,11 +263,16 @@
{
WNDGDI *WndObjInt = ObjToGDI(pwo, WND);
PWINDOW_OBJECT Window;
+ BOOL inUser;
DPRINT("EngDeleteWnd: pwo = 0x%x\n", pwo);
/* Get window object */
- Window = IntGetWindowObject(WndObjInt->Hwnd);
+ inUser = UserIsEntered();
+ if (!inUser){
+ UserEnterShared();
+ }
+ Window = UserGetWindowObject(WndObjInt->Hwnd);
if (Window == NULL)
{
DPRINT1("Warning: Couldnt get window object for
WndObjInt->Hwnd!!!\n");
@@ -277,6 +283,9 @@
/* Remove object from window */
RemoveEntryList(&WndObjInt->ListEntry);
}
+ if (!inUser){
+ UserLeave();
+ }
/* Free resources */
IntEngDeleteClipRegion(WndObjInt->ClientClipObj);
_____
Modified: branches/win32k rewrite attempt/win32k/include/accelerator.h
--- branches/win32k rewrite attempt/win32k/include/accelerator.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/accelerator.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -13,7 +13,6 @@
{
/*---------- USER_OBJECT_HDR --------------*/
HACCEL hSelf; /* want typesafe handle */
- LONG refs_placeholder;
BYTE flags_placeholder;
/*---------- USER_OBJECT_HDR --------------*/
_____
Modified: branches/win32k rewrite attempt/win32k/include/cursoricon.h
--- branches/win32k rewrite attempt/win32k/include/cursoricon.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/cursoricon.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -18,7 +18,6 @@
{
/*---------- USER_OBJECT_HDR --------------*/
HCURSOR hSelf; /* want typesafe handle */
- LONG refs_placeholder;
BYTE flags_placeholder;
/*---------- USER_OBJECT_HDR --------------*/
_____
Modified: branches/win32k rewrite attempt/win32k/include/hook.h
--- branches/win32k rewrite attempt/win32k/include/hook.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/hook.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -7,7 +7,6 @@
{
/*---------- USER_OBJECT_HDR --------------*/
HHOOK hSelf;
- LONG refs;
BYTE hdrFlags;
/*---------- USER_OBJECT_HDR --------------*/
_____
Modified: branches/win32k rewrite attempt/win32k/include/ntuser.h
--- branches/win32k rewrite attempt/win32k/include/ntuser.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/ntuser.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -5,18 +5,25 @@
typedef struct _USER_OBJECT_HDR
{
HANDLE hSelf;
- LONG refs;
BYTE flags;
+
} USER_OBJECT_HDR, *PUSER_OBJECT_HDR;
typedef struct _USER_REFERENCE_ENTRY
{
SINGLE_LIST_ENTRY Entry;
- PUSER_OBJECT_HDR hdr;
+ PUSER_OBJECT_HDR* ppHdr;
} USER_REFERENCE_ENTRY, *PUSER_REFERENCE_ENTRY;
+/* ul = user lock */
+#define ulShared 1
+#define ulExclusive 2
+/* unused for now... */
+//#define ASSERT_LOCK(type) ASSERT(PsGetWin32Thread()->LockType >=
type)
+#define ASSERT_LOCK(type)
+
extern char* _file;
extern DWORD _line;
extern DWORD _locked;
@@ -28,35 +35,14 @@
#define CLEANUP /*unreachable*/ ASSERT(FALSE); _cleanup_
#define END_CLEANUP return _ret_;
-#if 0
-#define UserEnterShared() { \
- UUserEnterShared(); ASSERT(InterlockedIncrement(&_locked) > 0); \
- }
- #define UserEnterExclusive() {\
- UUserEnterExclusive(); ASSERT(InterlockedIncrement(&_locked) > 0); \
- }
-
-#define UserLeave() { ASSERT(InterlockedDecrement(&_locked) >= 0); \
- UUserLeave(); }
-
-#endif
-
-
VOID FASTCALL UserStackTrace();
-#define UserEnterShared() \
-{ \
- DPRINT1("try lock, %s, %i (%i)\n",__FILE__,__LINE__, _locked); \
- ASSERT(UserLock.Owner != KeGetCurrentThread()); \
- UUserEnterShared(); \
- ASSERT(InterlockedIncrement(&_locked) == 1 /*> 0*/); \
- DPRINT("got lock, %s, %i (%i)\n",__FILE__,__LINE__, _locked); \
-}
+#define UserEnterShared() UserEnterExclusive()
#define UserEnterExclusive() \
{ \
- /* DPRINT1("try lock, %s, %i (%i)\n",__FILE__,__LINE__, _locked);*/ \
+ /* DPRINT1("try xlock, %s, %i (%i)\n",__FILE__,__LINE__, _locked);*/
\
if (UserLock.Owner == KeGetCurrentThread()){ \
DPRINT1("file %s, line %i\n",_file, _line); \
ASSERT(FALSE); \
@@ -83,27 +69,11 @@
-#define GetWnd(hwnd) IntGetWindowObject(hwnd)
+#define GetWnd(hwnd) UserGetWindowObject(hwnd)
-#if 0
-#define IntLockUserShared() {if(_locked){ DPRINT1("last %s,
%i\n",_file,_line);} \
- IIntLockUserShared(); \
- _locked++; _file = __FILE__; _line = __LINE__; \
- }
-
- #define IntUserEnterExclusive() {if(_locked){ DPRINT1("last %s,
%i\n",_file,_line);} \
- IIntUserEnterExclusive(); \
- _locked++; _file = __FILE__; _line = __LINE__; \
- }
-
-
-#define IntUserLeave() { if(!_locked){ DPRINT1("not locked %s,
%i\n",__FILE__,__LINE__);} \
- _locked--; IIntUserLeave(); }
-#endif
-
NTSTATUS FASTCALL InitUserImpl(VOID);
VOID FASTCALL UninitUser(VOID);
VOID FASTCALL UUserEnterShared(VOID);
_____
Modified: branches/win32k rewrite attempt/win32k/include/object.h
--- branches/win32k rewrite attempt/win32k/include/object.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/object.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -6,6 +6,26 @@
#include <win32k/pen.h>
+typedef struct _VOLATILE_OBJECT_ENTRY
+{
+ PUSER_OBJECT_HDR hdr;
+ PUSER_HANDLE_ENTRY handle_entry;
+ WORD recycle_count;
+ WORD objType;
+ SINGLE_LIST_ENTRY link;
+} VOLATILE_OBJECT_ENTRY, *PVOLATILE_OBJECT_ENTRY;
+
+
+typedef struct _OBJECT_ENTRY
+{
+ PUSER_OBJECT_HDR hdr;
+ PUSER_HANDLE_ENTRY handle_entry;
+ WORD generation;
+ WORD type;
+} OBJECT_ENTRY, *POBJECT_ENTRY;
+
+
+
#define USER_OBJ_DESTROYING (0x1)
#define USER_OBJ_DESTROYED (0x2)
_____
Modified: branches/win32k rewrite attempt/win32k/include/userfuncs.h
--- branches/win32k rewrite attempt/win32k/include/userfuncs.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/userfuncs.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -12,7 +12,7 @@
#define UserGetCurrentQueue() (&PsGetWin32Thread()->Queue)
#define UserGetForegroundWThread()
(QUEUE_2_WTHREAD(gInputDesktop->ActiveQueue))
-#define UserGetForegroundQueue() (gInputDesktop->ActiveQueue)
+#define UserGetForegroundQueue() (gInputDesktop ?
gInputDesktop->ActiveQueue : NULL)
#define UserSetForegroundQueue(q) (gInputDesktop->ActiveQueue = (q))
@@ -33,44 +33,28 @@
/******************** OBJECT.C ***************/
-BOOLEAN FASTCALL UserSetCheckDestroy(PUSER_OBJECT_HDR hdr);
-
-VOID FASTCALL UserDestroyObject(PUSER_OBJECT_HDR obj);
-
/******************** HANDLE.C ***************/
extern USER_HANDLE_TABLE gHandleTable;
PUSER_HANDLE_ENTRY handle_to_entry(PUSER_HANDLE_TABLE ht, HANDLE handle
);
+#define VOLATILE_OBJECTS_LIST SINGLE_LIST_ENTRY __object_list__ =
{NULL};
+
+
+#define UserLinkVolatileObject(obj) UserLinkVolatileObject2(&obj->hdr,
&__object_list__,
(PVOLATILE_OBJECT_ENTRY)_alloca(sizeof(VOLATILE_OBJECT_ENTRY)))
+#define UserValidateVolatileObjects()
UserValidateVolatileObjects2(&__object_list__)
-#include <malloc.h>
+VOID FASTCALL UserLinkVolatileObject2(PUSER_OBJECT_HDR hdr,
PSINGLE_LIST_ENTRY list, PVOLATILE_OBJECT_ENTRY e);
+BOOLEAN FASTCALL UserValidateVolatileObjects2(PSINGLE_LIST_ENTRY list);
+#define UserGetEntry(obj) UserGetEntry2(&(obj)->hdr)
+#define UserValidateEntry(obj) UserValidateEntry2(&(obj))
-#define UserReferenceObject(obj) (obj->hdr.refs++)
-#define UserDereferenceObject(obj){ \
- if (--obj->hdr.refs == 0 && obj->hdr.flags & USER_OBJ_DESTROYING
&&
!(obj->hdr.flags & USER_OBJ_DESTROYED)){ \
- UserDestroyObject(&obj->hdr); \
- } \
-}
+inline OBJECT_ENTRY FASTCALL UserGetEntry2(PUSER_OBJECT_HDR hdr);
+inline BOOLEAN FASTCALL UserValidateEntry2(POBJECT_ENTRY e);
-
-#define UserReferenceObjectCo(obj){ \
- PUSER_REFERENCE_ENTRY ref =
(PUSER_REFERENCE_ENTRY)_alloca(sizeof(USER_REFERENCE_ENTRY)); \
- obj->hdr.refs++; \
- ref->hdr = &obj->hdr; \
- PushEntryList(&PsGetWin32Thread()->UserObjReferencesStack,
&ref->Entry); \
-}
-
-#define UserDereferenceObjectCo(obj){ \
- PSINGLE_LIST_ENTRY entry =
PopEntryList(&PsGetWin32Thread()->UserObjReferencesStack); \
- PUSER_REFERENCE_ENTRY ref = CONTAINING_RECORD(entry,
USER_REFERENCE_ENTRY, Entry); \
- ASSERT(&obj->hdr == ref->hdr); \
- if (--ref->hdr->refs == 0 && obj->hdr.flags & USER_OBJ_DESTROYING
&&
!(obj->hdr.flags & USER_OBJ_DESTROYED)) { \
- UserDestroyObject(ref->hdr); \
- } \
-}
VOID UserInitHandleTable(PUSER_HANDLE_TABLE ht, PVOID mem, ULONG
bytes);
HANDLE UserAllocHandle(PUSER_HANDLE_TABLE ht, PVOID object,
USER_OBJECT_TYPE type );
@@ -90,7 +74,7 @@
/************* CALLBACK.C *****************/
LRESULT STDCALL
-coUserCallWindowProc(WNDPROC Proc,
+co_UserCallWindowProc(WNDPROC Proc,
BOOLEAN IsAnsiProc,
HWND Wnd,
UINT Message,
@@ -99,7 +83,7 @@
INT lParamBufferSize);
VOID STDCALL
-coUserCallSentMessageCallback(SENDASYNCPROC CompletionCallback,
+co_UserCallSentMessageCallback(SENDASYNCPROC CompletionCallback,
HWND hWnd,
UINT Msg,
ULONG_PTR CompletionCallbackContext,
@@ -107,13 +91,13 @@
HMENU STDCALL
-coUserLoadSysMenuTemplate();
+co_UserLoadSysMenuTemplate();
BOOL STDCALL
-coUserLoadDefaultCursors(VOID);
+co_UserLoadDefaultCursors(VOID);
LRESULT STDCALL
-coUserCallHookProc(INT HookId,
+co_UserCallHookProc(INT HookId,
INT Code,
WPARAM wParam,
LPARAM lParam,
@@ -176,7 +160,7 @@
UserGetActiveDesktop(VOID);
NTSTATUS FASTCALL
-coUserShowDesktop(PDESKTOP_OBJECT Desktop, ULONG Width, ULONG Height);
+co_UserShowDesktop(PDESKTOP_OBJECT Desktop, ULONG Width, ULONG Height);
NTSTATUS FASTCALL
IntHideDesktop(PDESKTOP_OBJECT Desktop);
@@ -203,7 +187,7 @@
BOOL IntRegisterShellHookWindow(HWND hWnd);
BOOL IntDeRegisterShellHookWindow(HWND hWnd);
-VOID IntShellHookNotify(WPARAM Message, LPARAM lParam);
+VOID co_UserShellHookNotify(WPARAM Message, LPARAM lParam);
#define IntIsActiveDesktop(Desktop) ((Desktop) == (gInputDesktop))
@@ -281,17 +265,17 @@
UserGetThreadFocusWindow();
BOOL FASTCALL
-coUserMouseActivateWindow(PWINDOW_OBJECT Window);
+co_UserMouseActivateWindow(PWINDOW_OBJECT Window);
BOOL FASTCALL
-coUserSetForegroundWindow(PWINDOW_OBJECT Window);
+co_UserSetForegroundWindow(PWINDOW_OBJECT Window);
PWINDOW_OBJECT FASTCALL
-coUserSetActiveWindow(PWINDOW_OBJECT Window);
+co_UserSetActiveWindow(PWINDOW_OBJECT Window);
PWINDOW_OBJECT FASTCALL
UserGetForegroundWindow(VOID);
PWINDOW_OBJECT FASTCALL
-coUserSetFocus(PWINDOW_OBJECT Wnd OPTIONAL);
+co_UserSetFocus(PWINDOW_OBJECT Wnd OPTIONAL);
/******************** PAINTING.C ********************************/
@@ -299,12 +283,12 @@
VOID FASTCALL
IntValidateParent(PWINDOW_OBJECT Child, HRGN ValidRegion);
BOOL FASTCALL
-coUserRedrawWindow(PWINDOW_OBJECT Wnd, const RECT* UpdateRect, HRGN
UpdateRgn, ULONG Flags);
+co_UserRedrawWindow(PWINDOW_OBJECT Wnd, const RECT* UpdateRect, HRGN
UpdateRgn, ULONG Flags);
BOOL FASTCALL
IntGetPaintMessage(HWND hWnd, UINT MsgFilterMin, UINT MsgFilterMax,
PW32THREAD Thread,
MSG *Message, BOOL Remove);
-BOOL FASTCALL coUserValidateRgn(PWINDOW_OBJECT hWnd, HRGN hRgn);
+BOOL FASTCALL co_UserValidateRgn(PWINDOW_OBJECT hWnd, HRGN hRgn);
#define IntLockWindowUpdate(Window) \
@@ -321,7 +305,7 @@
const RECT *lprcClip, HRGN hrgnUpdate, LPRECT lprcUpdate);
INT FASTCALL
-coUserGetUpdateRgn(PWINDOW_OBJECT Window, HRGN hRgn, BOOL bErase);
+co_UserGetUpdateRgn(PWINDOW_OBJECT Window, HRGN hRgn, BOOL bErase);
/******************** MESSAGE.C ********************************/
@@ -329,7 +313,7 @@
UserPostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
LRESULT FASTCALL
-coUserSendMessage(HWND hWnd,
+co_UserSendMessage(HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam);
@@ -337,7 +321,7 @@
LRESULT FASTCALL
-coUserSendMessageTimeout(HWND hWnd,
+co_UserSendMessageTimeout(HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam,
@@ -352,12 +336,15 @@
/************************ WINDOW.C *****************************/
+PWINDOW_OBJECT FASTCALL UserGetWindowObject_UpdateHandle2(HWND* h);
+#define UserGetWindowObject_UpdateHandle(handle)
UserGetWindowObject_UpdateHandle2(&(handle))
+
BOOL FASTCALL
UserSetSystemMenu(PWINDOW_OBJECT WindowObject, PMENU_OBJECT
MenuObject);
inline VOID FASTCALL UserFreeWindowObject(PWINDOW_OBJECT Wnd);
-PWINDOW_OBJECT FASTCALL IntGetWindowObject(HWND hWnd);
+inline PWINDOW_OBJECT FASTCALL UserGetWindowObject(HWND hWnd);
PWINDOW_OBJECT FASTCALL UserCreateWindowObject(ULONG bytes);
@@ -368,14 +355,119 @@
UserGetWindowLong(PWINDOW_OBJECT Wnd, DWORD Index, BOOL Ansi);
LONG FASTCALL
-coUserSetWindowLong(PWINDOW_OBJECT Wnd, DWORD Index, LONG NewValue,
BOOL Ansi);
+co_UserSetWindowLong(PWINDOW_OBJECT Wnd, DWORD Index, LONG NewValue,
BOOL Ansi);
BOOLEAN FASTCALL
-coUserDestroyWindow(PWINDOW_OBJECT Wnd);
+co_UserDestroyWindow(PWINDOW_OBJECT Wnd);
HWND FASTCALL
-GetHwnd(PWINDOW_OBJECT Wnd);
+GetHwndSafe(PWINDOW_OBJECT Wnd);
+#define HAS_DLGFRAME(Style, ExStyle) \
+ (((ExStyle) & WS_EX_DLGMODALFRAME) || \
+ (((Style) & WS_DLGFRAME) && (!((Style) & WS_THICKFRAME))))
+
+#define HAS_THICKFRAME(Style, ExStyle) \
+ (((Style) & WS_THICKFRAME) && \
+ (!(((Style) & (WS_DLGFRAME | WS_BORDER)) == WS_DLGFRAME)))
+
+#define HAS_THINFRAME(Style, ExStyle) \
+ (((Style) & WS_BORDER) || (!((Style) & (WS_CHILD |
WS_POPUP))))
+
+#define IntIsDesktopWindow(WndObj) \
+ (WndObj->ParentWnd == NULL)
+
+#define IntIsBroadcastHwnd(hWnd) \
+ (hWnd == HWND_BROADCAST || hWnd == HWND_TOPMOST)
+
+#if 0
+#define IntWndBelongsToThread(WndObj, W32Thread) \
+ (((WndObj->W32Thread->Thread &&
WndObj->W32Thread->Thread->Tcb.Win32Thread)) && \
+ (WndObj->W32Thread->Thread->Tcb.Win32Thread == W32Thread))
+#endif
+
+#define IntWndBelongsToThread(WndObj, _W32Thread)
(QUEUE_2_WTHREAD((WndObj)->Queue) == (_W32Thread))
+
+
+#define IntGetWndThreadId(WndObj) \
+ WndObj->WThread->Thread->Cid.UniqueThread
+
+#define IntGetWndProcessId(WndObj) \
+ WndObj->WThread->Thread->ThreadsProcess->UniqueProcessId
+
+PWINDOW_OBJECT FASTCALL
+IntGetProcessWindowObject(PW32THREAD Thread, HWND hWnd);
+
+BOOL FASTCALL
+IntIsWindow(HWND hWnd);
+
+PWINDOW_OBJECT* FASTCALL
+UserListChildWnd(PWINDOW_OBJECT Window);
+
+HWND* FASTCALL
+IntWinListChildren(PWINDOW_OBJECT Window);
+
+NTSTATUS FASTCALL
+InitWindowImpl (VOID);
+
+NTSTATUS FASTCALL
+CleanupWindowImpl (VOID);
+
+VOID FASTCALL
+IntGetClientRect (PWINDOW_OBJECT WindowObject, PRECT Rect);
+
+PWINDOW_OBJECT FASTCALL
+UserGetActiveWindow(VOID);
+
+BOOL FASTCALL
+UserIsWindowVisible (PWINDOW_OBJECT hWnd);
+
+BOOL FASTCALL
+UserIsChildWindow (PWINDOW_OBJECT Parent, PWINDOW_OBJECT Child);
+
+VOID FASTCALL
+IntUnlinkWindow(PWINDOW_OBJECT Wnd);
+
+VOID FASTCALL
+IntLinkWindow(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndParent,
PWINDOW_OBJECT WndPrevSibling);
+
+PWINDOW_OBJECT FASTCALL
+UserGetAncestor(PWINDOW_OBJECT Wnd, UINT Type);
+
+PWINDOW_OBJECT FASTCALL
+UserGetParent(PWINDOW_OBJECT Wnd);
+
+inline PWINDOW_OBJECT FASTCALL
+UserGetOwner(PWINDOW_OBJECT Wnd);
+
+INT FASTCALL
+IntGetWindowRgn(HWND hWnd, HRGN hRgn);
+
+INT FASTCALL
+IntGetWindowRgnBox(HWND hWnd, RECT *Rect);
+
+PWINDOW_OBJECT FASTCALL
+UserGetShellWindow();
+
+BOOL FASTCALL
+IntGetWindowInfo(PWINDOW_OBJECT WindowObject, PWINDOWINFO pwi);
+
+VOID FASTCALL
+IntGetWindowBorderMeasures(PWINDOW_OBJECT WindowObject, UINT *cx, UINT
*cy);
+
+BOOL FASTCALL
+IntAnyPopup(VOID);
+
+BOOL FASTCALL
+IntIsWindowInDestroy(PWINDOW_OBJECT Window);
+
+DWORD IntRemoveWndProcHandle(WNDPROC Handle);
+DWORD IntRemoveProcessWndProcHandles(HANDLE ProcessID);
+DWORD IntAddWndProcHandle(WNDPROC WindowProc, BOOL IsUnicode);
+
+BOOL FASTCALL
+co_UserShowOwnedPopups( HWND owner, BOOL fShow );
+
/************************* WINSTA.C ****************************/
inline PWINSTATION_OBJECT FASTCALL UserGetCurrentWinSta();
@@ -441,47 +533,16 @@
/************************* MENU.C ****************************/
PMENU_OBJECT FASTCALL
-coUserGetSystemMenu(PWINDOW_OBJECT WindowObject, BOOL bRevert, BOOL
RetMenu);
+co_UserGetSystemMenu(PWINDOW_OBJECT WindowObject, BOOL bRevert, BOOL
RetMenu);
-PMENU_OBJECT FASTCALL UserAllocMenuObject(HMENU* h);
-
inline PMENU_OBJECT FASTCALL UserGetMenuObject(HMENU hMenu);
-PMENU_OBJECT FASTCALL
-UserCreateMenu(BOOL PopupMenu);
-
-
-BOOL FASTCALL
-IntFreeMenuItem(PMENU_OBJECT MenuObject, PMENU_ITEM MenuItem,
- BOOL RemoveFromList, BOOL bRecurse);
-
-BOOL FASTCALL
-IntRemoveMenuItem(PMENU_OBJECT MenuObject, UINT uPosition, UINT uFlags,
- BOOL bRecurse);
-
-UINT FASTCALL
-IntDeleteMenuItems(PMENU_OBJECT MenuObject, BOOL bRecurse);
-
VOID FASTCALL
UserDestroyMenu(PMENU_OBJECT MenuObject, BOOL bRecurse);
-PMENU_OBJECT FASTCALL
-IntCloneMenu(PMENU_OBJECT Source);
-
BOOL FASTCALL
-UserSetMenuFlagRtoL(PMENU_OBJECT MenuObject);
-
-BOOL FASTCALL
-IntSetMenuContextHelpId(PMENU_OBJECT MenuObject, DWORD
dwContextHelpId);
-
-BOOL FASTCALL
-UserGetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi);
-
-BOOL FASTCALL
IntIsMenu(HMENU hMenu);
-BOOL FASTCALL
-UserSetMenuInfo(PMENU_OBJECT MenuObject, PROSMENUINFO lpmi);
BOOL FASTCALL
UserMenuItemInfo(
@@ -492,21 +553,8 @@
BOOL Set
);
-int FASTCALL
-UserGetMenuItemByFlag(PMENU_OBJECT MenuObject, UINT uSearchBy, UINT
fFlag,
- PMENU_ITEM *MenuItem, PMENU_ITEM *PrevMenuItem);
-UINT FASTCALL
-IntEnableMenuItem(PMENU_OBJECT MenuObject, UINT uIDEnableItem, UINT
uEnable);
-
-DWORD FASTCALL
-IntCheckMenuItem(PMENU_OBJECT MenuObject, UINT uIDCheckItem, UINT
uCheck);
-
BOOL FASTCALL
-IntSetMenuDefaultItem(PMENU_OBJECT MenuObject, UINT uItem, UINT
fByPos);
-
-
-BOOL FASTCALL
UserSetMenu(
PWINDOW_OBJECT WindowObject,
HMENU Menu,
@@ -518,11 +566,6 @@
BOOL FASTCALL
IntCleanupMenus(PW32PROCESS Win32Process);
-BOOL FASTCALL
-IntInsertMenuItem(PMENU_OBJECT MenuObject, UINT uItem, BOOL
fByPosition,
- PROSMENUITEMINFO ItemInfo);
-
-
NTSTATUS FASTCALL
InitMenuImpl(VOID);
@@ -532,19 +575,19 @@
/************************* CARET.C ****************************/
BOOL FASTCALL
-coUserShowCaret(PWINDOW_OBJECT Wnd);
+co_UserShowCaret(PWINDOW_OBJECT Wnd);
BOOL FASTCALL
-coUserSetCaretPos(int X, int Y);
+co_UserSetCaretPos(int X, int Y);
BOOL FASTCALL
-coUserHideCaret(PWINDOW_OBJECT Wnd);
+co_UserHideCaret(PWINDOW_OBJECT Wnd);
BOOL FASTCALL
UserSwitchCaretShowing(PTHRDCARETINFO Info);
BOOL FASTCALL
-coUserDestroyCaret(PW32THREAD Win32Thread);
+co_UserDestroyCaret(PW32THREAD Win32Thread);
BOOL FASTCALL
UserSetCaretBlinkTime(UINT uMSeconds);
@@ -554,14 +597,35 @@
/************************* WINPOS.C ****************************/
+UINT
+FASTCALL co_WinPosArrangeIconicWindows(PWINDOW_OBJECT parent);
+LRESULT FASTCALL
+co_WinPosGetNonClientSize(PWINDOW_OBJECT Wnd, RECT* WindowRect, RECT*
ClientRect);
+UINT FASTCALL
+co_WinPosGetMinMaxInfo(PWINDOW_OBJECT Window, POINT* MaxSize, POINT*
MaxPos,
+ POINT* MinTrack, POINT* MaxTrack);
+UINT FASTCALL
+co_WinPosMinMaximize(PWINDOW_OBJECT WindowObject, UINT ShowFlag, RECT*
NewPos);
+BOOLEAN FASTCALL
+co_WinPosSetWindowPos(HWND Wnd, HWND WndInsertAfter, INT x, INT y, INT
cx,
+ INT cy, UINT flags);
+BOOLEAN FASTCALL
+co_WinPosShowWindow(PWINDOW_OBJECT Wnd, INT Cmd);
+USHORT FASTCALL
+co_WinPosWindowFromPoint(PWINDOW_OBJECT ScopeWin, PUSER_MESSAGE_QUEUE
OnlyHitTests, POINT *WinPoint,
+ PWINDOW_OBJECT* Window);
+VOID FASTCALL co_WinPosActivateOtherWindow(PWINDOW_OBJECT Window);
+PINTERNALPOS FASTCALL WinPosInitInternalPos(PWINDOW_OBJECT
WindowObject,
+ POINT *pt, PRECT
RestoreRect);
+
BOOL FASTCALL
UserGetClientOrigin(PWINDOW_OBJECT hWnd, LPPOINT Point);
/************************* SCROLLBAR.C ****************************/
DWORD FASTCALL
-coUserShowScrollBar(PWINDOW_OBJECT Wnd, int wBar, DWORD bShow);
+co_UserShowScrollBar(PWINDOW_OBJECT Wnd, int wBar, DWORD bShow);
#define IntGetScrollbarInfoFromWindow(Window, i) \
((PSCROLLBARINFO)(&((Window)->Scroll + i)->ScrollBarInfo))
@@ -572,7 +636,7 @@
#define SBOBJ_TO_SBID(Obj) ((Obj) - OBJID_HSCROLL)
#define SBID_IS_VALID(id) (id == SB_HORZ || id == SB_VERT || id ==
SB_CTL)
-BOOL FASTCALL coIntCreateScrollBars(PWINDOW_OBJECT Window);
+BOOL FASTCALL co_IntCreateScrollBars(PWINDOW_OBJECT Window);
BOOL FASTCALL IntDestroyScrollBars(PWINDOW_OBJECT Window);
@@ -603,7 +667,7 @@
PHOOK FASTCALL UserCreateHookObject();
PHOOK FASTCALL UserGetHookObject(HHOOK hHook);
-LRESULT FASTCALL coHOOK_CallHooks(INT HookId, INT Code, WPARAM wParam,
LPARAM lParam);
+LRESULT FASTCALL co_HOOK_CallHooks(INT HookId, INT Code, WPARAM wParam,
LPARAM lParam);
VOID FASTCALL HOOK_DestroyThreadHooks(PETHREAD Thread);
@@ -724,7 +788,7 @@
BOOL FASTCALL
MsqIsHung(PUSER_MESSAGE_QUEUE MessageQueue);
NTSTATUS FASTCALL
-coMsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
+co_MsqSendMessage(PUSER_MESSAGE_QUEUE MessageQueue,
HWND Wnd, UINT Msg, WPARAM wParam, LPARAM lParam,
UINT uTimeout, BOOL Block, BOOL HookMessage,
ULONG_PTR *uResult);
@@ -738,7 +802,7 @@
VOID FASTCALL
MsqPostQuitMessage(PUSER_MESSAGE_QUEUE MessageQueue, ULONG ExitCode);
BOOLEAN STDCALL
-coMsqFindMessage(IN PUSER_MESSAGE_QUEUE MessageQueue,
+co_MsqFindMessage(IN PUSER_MESSAGE_QUEUE MessageQueue,
IN BOOLEAN Hardware,
IN BOOLEAN Remove,
IN HWND Wnd,
@@ -756,9 +820,9 @@
NTSTATUS FASTCALL
MsqInitializeImpl(VOID);
BOOLEAN FASTCALL
-coMsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue);
+co_MsqDispatchOneSentMessage(PUSER_MESSAGE_QUEUE MessageQueue);
NTSTATUS FASTCALL
-coMsqWaitForNewMessages(PUSER_MESSAGE_QUEUE MessageQueue, HWND
WndFilter,
+co_MsqWaitForNewMessages(PUSER_MESSAGE_QUEUE MessageQueue, HWND
WndFilter,
UINT MsgFilterMin, UINT MsgFilterMax);
VOID FASTCALL
MsqSendNotifyMessage(PUSER_MESSAGE_QUEUE MessageQueue,
@@ -774,7 +838,7 @@
VOID FASTCALL
-coMsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
+co_MsqPostKeyboardMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
VOID FASTCALL
MsqPostHotKeyMessage(PVOID Thread, HWND hWnd, WPARAM wParam, LPARAM
lParam);
VOID FASTCALL
@@ -854,7 +918,7 @@
BOOLEAN ClipChildren, BOOLEAN ClipSiblings);
VOID FASTCALL
-coVIS_WindowLayoutChanged(PWINDOW_OBJECT Window, HRGN UncoveredRgn);
+co_VIS_WindowLayoutChanged(PWINDOW_OBJECT Window, HRGN UncoveredRgn);
/**************************** NTUSER.C ************************/
_____
Modified: branches/win32k rewrite attempt/win32k/include/win32.h
--- branches/win32k rewrite attempt/win32k/include/win32.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/win32.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -28,11 +28,9 @@
typedef struct _W32PROCESS
{
-// FAST_MUTEX ClassListLock;
PEPROCESS Process;
LIST_ENTRY ClassListHead;
LIST_ENTRY ExpiredTimersList;
-// FAST_MUTEX MenuListLock;
LIST_ENTRY MenuListHead;
FAST_MUTEX PrivateFontListLock;
LIST_ENTRY PrivateFontListHead;
_____
Modified: branches/win32k rewrite attempt/win32k/include/window.h
--- branches/win32k rewrite attempt/win32k/include/window.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/window.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -33,7 +33,6 @@
{
/*---------- USER_OBJECT_HDR --------------*/
HWND hSelf; /* typesafe handle */
- LONG refs_placeholder;
BYTE hdrFlags_placeholder;
/*---------- USER_OBJECT_HDR --------------*/
@@ -82,8 +81,8 @@
LIST_ENTRY ThreadListEntry;
/* Handle to the parent window. */
PWINDOW_OBJECT ParentWnd;
- /* Handle to the owner window. */
- HWND hOwner;
+ /* the owner window. */
+ HWND hOwnerWnd;
/* DC Entries (DCE) */
PDCE Dce;
@@ -103,7 +102,7 @@
PUSER_MESSAGE_QUEUE Queue;
PW32THREAD WThread;
};
- HWND hWndLastPopup; /* handle to last active popup window (wine
doesn't use pointer, for unk. reason)*/
+ HWND hLastActiveWnd; /* handle to last active popup window
(wine doesn't use pointer, for unk. reason)*/
PINTERNALPOS InternalPos;
// ULONG Status;
/* counter for tiled child windows */
@@ -122,111 +121,8 @@
#define WINDOWOBJECT_RESTOREMAX (0x00000020)
-#define HAS_DLGFRAME(Style, ExStyle) \
- (((ExStyle) & WS_EX_DLGMODALFRAME) || \
- (((Style) & WS_DLGFRAME) && (!((Style) & WS_THICKFRAME))))
-#define HAS_THICKFRAME(Style, ExStyle) \
- (((Style) & WS_THICKFRAME) && \
- (!(((Style) & (WS_DLGFRAME | WS_BORDER)) == WS_DLGFRAME)))
-#define HAS_THINFRAME(Style, ExStyle) \
- (((Style) & WS_BORDER) || (!((Style) & (WS_CHILD |
WS_POPUP))))
-
-#define IntIsDesktopWindow(WndObj) \
- (WndObj->ParentWnd == NULL)
-
-#define IntIsBroadcastHwnd(hWnd) \
- (hWnd == HWND_BROADCAST || hWnd == HWND_TOPMOST)
-
-#if 0
-#define IntWndBelongsToThread(WndObj, W32Thread) \
- (((WndObj->W32Thread->Thread &&
WndObj->W32Thread->Thread->Tcb.Win32Thread)) && \
- (WndObj->W32Thread->Thread->Tcb.Win32Thread == W32Thread))
-#endif
-
-#define IntWndBelongsToThread(WndObj, _W32Thread)
(QUEUE_2_WTHREAD((WndObj)->Queue) == (_W32Thread))
-
-
-#define IntGetWndThreadId(WndObj) \
- WndObj->WThread->Thread->Cid.UniqueThread
-
-#define IntGetWndProcessId(WndObj) \
- WndObj->WThread->Thread->ThreadsProcess->UniqueProcessId
-
-PWINDOW_OBJECT FASTCALL
-IntGetProcessWindowObject(PW32THREAD Thread, HWND hWnd);
-
-BOOL FASTCALL
-IntIsWindow(HWND hWnd);
-
-PWINDOW_OBJECT* FASTCALL
-UserListChildWnd(PWINDOW_OBJECT Window);
-
-HWND* FASTCALL
-IntWinListChildren(PWINDOW_OBJECT Window);
-
-NTSTATUS FASTCALL
-InitWindowImpl (VOID);
-
-NTSTATUS FASTCALL
-CleanupWindowImpl (VOID);
-
-VOID FASTCALL
-IntGetClientRect (PWINDOW_OBJECT WindowObject, PRECT Rect);
-
-PWINDOW_OBJECT FASTCALL
-UserGetActiveWindow(VOID);
-
-BOOL FASTCALL
-UserIsWindowVisible (PWINDOW_OBJECT hWnd);
-
-BOOL FASTCALL
-UserIsChildWindow (PWINDOW_OBJECT Parent, PWINDOW_OBJECT Child);
-
-VOID FASTCALL
-IntUnlinkWindow(PWINDOW_OBJECT Wnd);
-
-VOID FASTCALL
-IntLinkWindow(PWINDOW_OBJECT Wnd, PWINDOW_OBJECT WndParent,
PWINDOW_OBJECT WndPrevSibling);
-
-PWINDOW_OBJECT FASTCALL
-UserGetAncestor(PWINDOW_OBJECT Wnd, UINT Type);
-
-PWINDOW_OBJECT FASTCALL
-UserGetParent(PWINDOW_OBJECT Wnd);
-
-PWINDOW_OBJECT FASTCALL
-IntGetOwner(PWINDOW_OBJECT Wnd);
-
-INT FASTCALL
-IntGetWindowRgn(HWND hWnd, HRGN hRgn);
-
-INT FASTCALL
-IntGetWindowRgnBox(HWND hWnd, RECT *Rect);
-
-PWINDOW_OBJECT FASTCALL
-UserGetShellWindow();
-
-BOOL FASTCALL
-IntGetWindowInfo(PWINDOW_OBJECT WindowObject, PWINDOWINFO pwi);
-
-VOID FASTCALL
-IntGetWindowBorderMeasures(PWINDOW_OBJECT WindowObject, UINT *cx, UINT
*cy);
-
-BOOL FASTCALL
-IntAnyPopup(VOID);
-
-BOOL FASTCALL
-IntIsWindowInDestroy(PWINDOW_OBJECT Window);
-
-DWORD IntRemoveWndProcHandle(WNDPROC Handle);
-DWORD IntRemoveProcessWndProcHandles(HANDLE ProcessID);
-DWORD IntAddWndProcHandle(WNDPROC WindowProc, BOOL IsUnicode);
-
-BOOL FASTCALL
-coUserShowOwnedPopups( HWND owner, BOOL fShow );
-
#endif /* _WIN32K_WINDOW_H */
/* EOF */
_____
Modified: branches/win32k rewrite attempt/win32k/include/winpos.h
--- branches/win32k rewrite attempt/win32k/include/winpos.h
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/include/winpos.h
2005-09-02 20:45:56 UTC (rev 17607)
@@ -14,26 +14,5 @@
NtGdiPtInRegion((WndObject)->WindowRegion, (INT)((x) -
(WndObject)->WindowRect.left), \
(INT)((y) - (WndObject)->WindowRect.top))))
-UINT
-FASTCALL coWinPosArrangeIconicWindows(PWINDOW_OBJECT parent);
-LRESULT FASTCALL
-coWinPosGetNonClientSize(PWINDOW_OBJECT Wnd, RECT* WindowRect, RECT*
ClientRect);
-UINT FASTCALL
-coWinPosGetMinMaxInfo(PWINDOW_OBJECT Window, POINT* MaxSize, POINT*
MaxPos,
- POINT* MinTrack, POINT* MaxTrack);
-UINT FASTCALL
-coWinPosMinMaximize(PWINDOW_OBJECT WindowObject, UINT ShowFlag, RECT*
NewPos);
-BOOLEAN FASTCALL
-coWinPosSetWindowPos(HWND Wnd, HWND WndInsertAfter, INT x, INT y, INT
cx,
- INT cy, UINT flags);
-BOOLEAN FASTCALL
-coWinPosShowWindow(PWINDOW_OBJECT Wnd, INT Cmd);
-USHORT FASTCALL
-coWinPosWindowFromPoint(PWINDOW_OBJECT ScopeWin, PUSER_MESSAGE_QUEUE
OnlyHitTests, POINT *WinPoint,
- PWINDOW_OBJECT* Window);
-VOID FASTCALL coWinPosActivateOtherWindow(PWINDOW_OBJECT Window);
-PINTERNALPOS FASTCALL WinPosInitInternalPos(PWINDOW_OBJECT
WindowObject,
- POINT *pt, PRECT
RestoreRect);
-
#endif /* _WIN32K_WINPOS_H */
_____
Modified: branches/win32k rewrite attempt/win32k/ntuser/accelerator.c
--- branches/win32k rewrite attempt/win32k/ntuser/accelerator.c
2005-09-02 19:05:01 UTC (rev 17606)
+++ branches/win32k rewrite attempt/win32k/ntuser/accelerator.c
2005-09-02 20:45:56 UTC (rev 17607)
@@ -54,6 +54,45 @@
#define NDEBUG
#include <debug.h>
+
+/* USER OBJECT FUNCTIONS
*******************************************************/
+
+BOOLEAN FASTCALL UserDestroyAccel(PACCELERATOR_TABLE Accel)
+{
+ ASSERT_LOCK(ulExclusive);
+
+ if (Accel->Table != NULL)
+ {
+ ExFreePool(Accel->Table);
+ }
+
+ UserFreeHandle(&gHandleTable, Accel->hdr.hSelf);
+ UserFree(Accel);
+
+ return TRUE;
+}
+
+
+PACCELERATOR_TABLE FASTCALL UserCreateAccelObject()
+{
+ PACCELERATOR_TABLE Accel;
+ HACCEL hAccel;
+
+ ASSERT_LOCK(ulExclusive);
+
+ Accel =
(PACCELERATOR_TABLE)UserAllocZero(sizeof(ACCELERATOR_TABLE));
+ if (!Accel) return NULL;
+
+ hAccel = UserAllocHandle(&gHandleTable, Accel, otAccel);
+ if (!hAccel){
+ UserFree(Accel);
+ return NULL;
+ }
+ Accel->hSelf=hAccel;
+ return Accel;
+}
+
+
/* FUNCTIONS
*****************************************************************/
NTSTATUS FASTCALL
@@ -71,21 +110,19 @@
int
STDCALL
NtUserCopyAcceleratorTable(
- HACCEL Table,
+ HACCEL hAccel,
LPACCEL Entries,
int EntriesCount)
{
- PACCELERATOR_TABLE AcceleratorTable;
+ PACCELERATOR_TABLE Accel;
NTSTATUS Status;
int Ret;
DECLARE_RETURN(int);
[truncated at 1000 lines; 13185 more skipped]