prop: simplify refcounting, naming changes Modified: trunk/reactos/subsys/win32k/include/prop.h Modified: trunk/reactos/subsys/win32k/ntuser/prop.c _____
Modified: trunk/reactos/subsys/win32k/include/prop.h --- trunk/reactos/subsys/win32k/include/prop.h 2005-09-06 23:21:40 UTC (rev 17710) +++ trunk/reactos/subsys/win32k/include/prop.h 2005-09-06 23:29:54 UTC (rev 17711) @@ -8,11 +8,5 @@
ATOM Atom; } PROPERTY, *PPROPERTY;
-BOOL FASTCALL -IntSetProp(PWINDOW_OBJECT Wnd, ATOM Atom, HANDLE Data); - -PPROPERTY FASTCALL -IntGetProp(PWINDOW_OBJECT WindowObject, ATOM Atom); - #endif /* _WIN32K_PROP_H */
_____
Modified: trunk/reactos/subsys/win32k/ntuser/prop.c --- trunk/reactos/subsys/win32k/ntuser/prop.c 2005-09-06 23:21:40 UTC (rev 17710) +++ trunk/reactos/subsys/win32k/ntuser/prop.c 2005-09-06 23:29:54 UTC (rev 17711) @@ -39,16 +39,20 @@
HANDLE Data; } PROPLISTITEM, *PPROPLISTITEM;
+ +/* STATIC FUNCTIONS **********************************************************/ + /* FUNCTIONS *****************************************************************/
+static PPROPERTY FASTCALL -IntGetProp(PWINDOW_OBJECT WindowObject, ATOM Atom) +IntGetProp(PWINDOW_OBJECT Window, ATOM Atom) { PLIST_ENTRY ListEntry; PPROPERTY Property;
- ListEntry = WindowObject->PropListHead.Flink; - while (ListEntry != &WindowObject->PropListHead) + ListEntry = Window->PropListHead.Flink; + while (ListEntry != &Window->PropListHead) { Property = CONTAINING_RECORD(ListEntry, PROPERTY, PropListEntry); if (Property->Atom == Atom) @@ -66,7 +70,7 @@ DWORD BufferSize, DWORD *Count) { - PWINDOW_OBJECT WindowObject; + PWINDOW_OBJECT Window; PPROPERTY Property; PLIST_ENTRY ListEntry; PROPLISTITEM listitem, *li; @@ -77,7 +81,7 @@ DPRINT("Enter NtUserBuildPropList\n"); UserEnterShared();
- if (!(WindowObject = IntGetWindowObject(hWnd))) + if (!(Window = UserGetWindowObject(hWnd))) { RETURN( STATUS_INVALID_HANDLE); } @@ -86,14 +90,13 @@ { if(!BufferSize || (BufferSize % sizeof(PROPLISTITEM) != 0)) { - IntReleaseWindowObject(WindowObject); RETURN( STATUS_INVALID_PARAMETER); }
/* copy list */ li = (PROPLISTITEM *)Buffer; - ListEntry = WindowObject->PropListHead.Flink; - while((BufferSize >= sizeof(PROPLISTITEM)) && (ListEntry != &WindowObject->PropListHead)) + ListEntry = Window->PropListHead.Flink; + while((BufferSize >= sizeof(PROPLISTITEM)) && (ListEntry != &Window->PropListHead)) { Property = CONTAINING_RECORD(ListEntry, PROPERTY, PropListEntry); listitem.Atom = Property->Atom; @@ -102,7 +105,6 @@ Status = MmCopyToCaller(li, &listitem, sizeof(PROPLISTITEM)); if(!NT_SUCCESS(Status)) { - IntReleaseWindowObject(WindowObject); RETURN( Status); }
@@ -115,11 +117,9 @@ } else { - Cnt = WindowObject->PropListItems * sizeof(PROPLISTITEM); + Cnt = Window->PropListItems * sizeof(PROPLISTITEM); }
- IntReleaseWindowObject(WindowObject); - if(Count) { Status = MmCopyToCaller(Count, &Cnt, sizeof(DWORD)); @@ -140,7 +140,7 @@ HANDLE STDCALL NtUserRemoveProp(HWND hWnd, ATOM Atom) { - PWINDOW_OBJECT WindowObject; + PWINDOW_OBJECT Window; PPROPERTY Prop; HANDLE Data; DECLARE_RETURN(HANDLE); @@ -148,24 +148,22 @@ DPRINT("Enter NtUserRemoveProp\n"); UserEnterExclusive();
- if (!(WindowObject = IntGetWindowObject(hWnd))) + if (!(Window = UserGetWindowObject(hWnd))) { - SetLastWin32Error(ERROR_INVALID_WINDOW_HANDLE); RETURN( NULL); }
- Prop = IntGetProp(WindowObject, Atom); + Prop = IntGetProp(Window, Atom);
if (Prop == NULL) { - IntReleaseWindowObject(WindowObject); RETURN(NULL); } Data = Prop->Data; RemoveEntryList(&Prop->PropListEntry); ExFreePool(Prop); - WindowObject->PropListItems--; - IntReleaseWindowObject(WindowObject); + Window->PropListItems--; + RETURN(Data);
CLEANUP: @@ -177,7 +175,7 @@ HANDLE STDCALL NtUserGetProp(HWND hWnd, ATOM Atom) { - PWINDOW_OBJECT WindowObject; + PWINDOW_OBJECT Window; PPROPERTY Prop; HANDLE Data = NULL; DECLARE_RETURN(HANDLE); @@ -185,18 +183,17 @@ DPRINT("Enter NtUserGetProp\n"); UserEnterShared();
- if (!(WindowObject = IntGetWindowObject(hWnd))) + if (!(Window = UserGetWindowObject(hWnd))) { - SetLastWin32Error(ERROR_INVALID_WINDOW_HANDLE); RETURN( FALSE); }
- Prop = IntGetProp(WindowObject, Atom); + Prop = IntGetProp(Window, Atom); if (Prop != NULL) { Data = Prop->Data; } - IntReleaseWindowObject(WindowObject); + RETURN(Data);
CLEANUP: @@ -205,6 +202,7 @@ END_CLEANUP; }
+static BOOL FASTCALL IntSetProp(PWINDOW_OBJECT Wnd, ATOM Atom, HANDLE Data) { @@ -232,23 +230,18 @@ BOOL STDCALL NtUserSetProp(HWND hWnd, ATOM Atom, HANDLE Data) { - PWINDOW_OBJECT WindowObject; - BOOL ret; + PWINDOW_OBJECT Window; DECLARE_RETURN(BOOL);
DPRINT("Enter NtUserSetProp\n"); UserEnterExclusive();
- if (!(WindowObject = IntGetWindowObject(hWnd))) + if (!(Window = UserGetWindowObject(hWnd))) { - SetLastWin32Error(ERROR_INVALID_WINDOW_HANDLE); RETURN( FALSE); }
- ret = IntSetProp(WindowObject, Atom, Data); - - IntReleaseWindowObject(WindowObject); - RETURN( ret); + RETURN( IntSetProp(Window, Atom, Data));
CLEANUP: DPRINT("Leave NtUserSetProp, ret=%i\n",_ret_);