Author: jimtabor
Date: Thu Dec 13 21:34:46 2007
New Revision: 31203
URL:
http://svn.reactos.org/svn/reactos?rev=31203&view=rev
Log:
Thanks Timo! I have updated the information too.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c Thu Dec 13 21:34:46 2007
@@ -1509,12 +1509,21 @@
IN ULONG ulType
)
{
-// INT Index;
-// PGDI_TABLE_ENTRY Entry;
- HANDLE handle = GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TAG_CLIOBJ);
+// ATM we use DC object for KernelData. I think it should be at a minimum
GDIOBJEMPTYHDR.
+// The UserData is set in user mode, so it is always NULL.
+//
+ INT Index;
+ PGDI_TABLE_ENTRY Entry;
+ HANDLE handle = GDIOBJ_AllocObj(GdiHandleTable, GDI_OBJECT_TYPE_CLIOBJ);
// Need to change handle type based on ulType.
-// Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)handle);
-// Entry = &GdiHandleTable->Entries[Index];
+ Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)handle);
+ Entry = &GdiHandleTable->Entries[Index];
+// mask out lower half and set the type by ulType.
+ Entry->Type &= GDI_HANDLE_UPPER_MASK;
+ Entry->Type |= ulType >> GDI_ENTRY_UPPER_SHIFT;
+// mask out handle type than set it by ulType.
+ handle = (HANDLE)(((ULONG_PTR)(handle)) &
(GDI_HANDLE_REUSE_MASK|GDI_HANDLE_STOCK_MASK|0x0ffff));
+ handle = (HANDLE)(((ULONG_PTR)(handle)) | ulType);
return handle;
}
@@ -1525,7 +1534,7 @@
IN HANDLE h
)
{
- return GDIOBJ_FreeObj(GdiHandleTable, h, GDI_OBJECT_TAG_CLIOBJ);
+ return GDIOBJ_FreeObj(GdiHandleTable, h, GDI_OBJECT_TYPE_CLIOBJ);
}
/* EOF */