[ros-diffs] [jimtabor] 33765: Modified GDIOBJ_Copy and Set owner to return bool. Start the use of server info for metrics data. Tested with Qemu on Linux.
jimtabor at svn.reactos.org
jimtabor at svn.reactos.org
Fri May 30 06:56:11 CEST 2008
Author: jimtabor
Date: Thu May 29 23:56:10 2008
New Revision: 33765
URL: http://svn.reactos.org/svn/reactos?rev=33765&view=rev
Log:
Modified GDIOBJ_Copy and Set owner to return bool. Start the use of server info for metrics data. Tested with Qemu on Linux.
Modified:
trunk/reactos/include/reactos/win32k/ntuser.h
trunk/reactos/subsystems/win32/win32k/include/dc.h
trunk/reactos/subsystems/win32/win32k/include/gdiobj.h
trunk/reactos/subsystems/win32/win32k/ntuser/metric.c
trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c
trunk/reactos/subsystems/win32/win32k/objects/dc.c
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
trunk/reactos/subsystems/win32/win32k/objects/stockobj.c
Modified: trunk/reactos/include/reactos/win32k/ntuser.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/win32k/ntuser.h?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] (original)
+++ trunk/reactos/include/reactos/win32k/ntuser.h [iso-8859-1] Thu May 29 23:56:10 2008
@@ -169,10 +169,12 @@
UINT HideAccel : 1;
} WINDOW, *PWINDOW;
+#define SRVINFO_METRICS 0x0020
+
typedef struct _SERVERINFO
{
-// DWORD SystemMetrics[SM_CMETRICS]; // System Metrics
-// COLORREF SystemColorCopy[COLOR_MENUBAR+1]; // Backup Copy of system colors.
+ DWORD SRVINFO_Flags;
+ DWORD SystemMetrics[SM_CMETRICS]; // System Metrics
COLORREF SysColors[COLOR_MENUBAR+1]; // GetSysColor
HBRUSH SysColorBrushes[COLOR_MENUBAR+1]; // GetSysColorBrush
HPEN SysColorPens[COLOR_MENUBAR+1]; // ReactOS exclusive
Modified: trunk/reactos/subsystems/win32/win32k/include/dc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/dc.h?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/dc.h [iso-8859-1] Thu May 29 23:56:10 2008
@@ -277,7 +277,7 @@
BOOL INTERNAL_CALL DC_Cleanup(PVOID ObjectBody);
HDC FASTCALL DC_GetNextDC (PDC pDC);
VOID FASTCALL DC_SetNextDC (PDC pDC, HDC hNextDC);
-VOID FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
+BOOL FASTCALL DC_SetOwnership(HDC DC, PEPROCESS Owner);
VOID FASTCALL DC_LockDisplay(HDC);
VOID FASTCALL DC_UnlockDisplay(HDC);
VOID FASTCALL IntGdiCopyFromSaveState(PDC, PDC, HDC);
Modified: trunk/reactos/subsystems/win32/win32k/include/gdiobj.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/include/gdiobj.h?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/include/gdiobj.h [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/include/gdiobj.h [iso-8859-1] Thu May 29 23:56:10 2008
@@ -58,8 +58,8 @@
};
BOOL INTERNAL_CALL GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle);
-VOID INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner);
-VOID INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo);
+BOOL INTERNAL_CALL GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS Owner);
+BOOL INTERNAL_CALL GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo);
BOOL INTERNAL_CALL GDIOBJ_ConvertToStockObj(HGDIOBJ *hObj);
VOID INTERNAL_CALL GDIOBJ_UnlockObjByPtr(POBJ Object);
VOID INTERNAL_CALL GDIOBJ_ShareUnlockObjByPtr(POBJ Object);
@@ -82,6 +82,6 @@
BOOL FASTCALL NtGdiDeleteObject(HGDIOBJ hObject);
BOOL FASTCALL IsObjectDead(HGDIOBJ);
-BOOL FASTCALL IntGdiSetDCOwnerEx( HGDIOBJ, DWORD, BOOL);
+BOOL FASTCALL IntGdiSetDCOwnerEx( HDC, DWORD, BOOL);
#endif
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/metric.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/metric.c?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/metric.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/metric.c [iso-8859-1] Thu May 29 23:56:10 2008
@@ -16,7 +16,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
-/* $Id$
+/*
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
@@ -34,9 +34,243 @@
#define NDEBUG
#include <debug.h>
+extern PSERVERINFO gpsi;
+
+static BOOL Setup = FALSE;
+
/* FUNCTIONS *****************************************************************/
-/* FIXME: Alot of thse values should NOT be hardcoded but they are */
+BOOL
+FASTCALL
+InitMetrics(VOID)
+{
+ INT Index;
+ NTSTATUS Status;
+ PWINSTATION_OBJECT WinStaObject;
+ ULONG Width = 640, Height = 480;
+
+ for (Index = 0; Index < SM_CMETRICS; Index++)
+ {
+ switch (Index)
+ {
+ case SM_CXSCREEN:
+ {
+ HDC ScreenDCHandle;
+ PDC ScreenDC;
+
+ ScreenDCHandle = IntGdiCreateDC(NULL, NULL, NULL, NULL, TRUE);
+ if (NULL != ScreenDCHandle)
+ {
+ ScreenDC = DC_LockDc(ScreenDCHandle);
+ if (NULL != ScreenDC)
+ {
+ Width = ((PGDIDEVICE)ScreenDC->pPDev)->GDIInfo.ulHorzRes;
+ Height = ((PGDIDEVICE)ScreenDC->pPDev)->GDIInfo.ulVertRes;
+ DC_UnlockDc(ScreenDC);
+ }
+ NtGdiDeleteObjectApp(ScreenDCHandle);
+ }
+ gpsi->SystemMetrics[Index] = Width;
+ break;
+ }
+ case SM_CYSCREEN:
+ gpsi->SystemMetrics[Index] = Height;
+ break;
+ case SM_ARRANGE:
+ gpsi->SystemMetrics[Index] = 8;
+ break;
+ case SM_CLEANBOOT:
+ gpsi->SystemMetrics[Index] = 0;
+ break;
+ case SM_CMOUSEBUTTONS:
+ gpsi->SystemMetrics[Index] = 2;
+ break;
+ case SM_CXBORDER:
+ case SM_CYBORDER:
+ gpsi->SystemMetrics[Index] = 1;
+ break;
+ case SM_CXCURSOR:
+ case SM_CYCURSOR:
+ gpsi->SystemMetrics[Index] = 32;
+ break;
+ case SM_CXDLGFRAME:
+ case SM_CYDLGFRAME:
+ gpsi->SystemMetrics[Index] = 3;
+ break;
+ case SM_CXDOUBLECLK:
+ case SM_CYDOUBLECLK:
+ case SM_SWAPBUTTON:
+ {
+ PSYSTEM_CURSORINFO CurInfo;
+ Status = IntValidateWindowStationHandle(PsGetCurrentProcess()->Win32WindowStation,
+ KernelMode,
+ 0,
+ &WinStaObject);
+ if (!NT_SUCCESS(Status))
+ gpsi->SystemMetrics[Index] = 0xFFFFFFFF;
+ break;
+
+ CurInfo = IntGetSysCursorInfo(WinStaObject);
+ switch(Index)
+ {
+ case SM_CXDOUBLECLK:
+ gpsi->SystemMetrics[Index] = CurInfo->DblClickWidth;
+ break;
+ case SM_CYDOUBLECLK:
+ gpsi->SystemMetrics[Index] = CurInfo->DblClickWidth;
+ break;
+ case SM_SWAPBUTTON:
+ gpsi->SystemMetrics[Index] = CurInfo->SwapButtons;
+ break;
+ }
+
+ ObDereferenceObject(WinStaObject);
+ break;
+ }
+ case SM_CXDRAG:
+ case SM_CYDRAG:
+ gpsi->SystemMetrics[Index] = 2;
+ break;
+ case SM_CXEDGE:
+ case SM_CYEDGE:
+ gpsi->SystemMetrics[Index] = 2;
+ break;
+ case SM_CXFRAME:
+ case SM_CYFRAME:
+ gpsi->SystemMetrics[Index] = 4;
+ break;
+ case SM_CXFULLSCREEN:
+ /* FIXME: shouldn't we take borders etc into account??? */
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CXSCREEN];
+ break;
+ case SM_CYFULLSCREEN:
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CYSCREEN];
+ break;
+ case SM_CXHSCROLL:
+ case SM_CYHSCROLL:
+ gpsi->SystemMetrics[Index] = 16;
+ break;
+ case SM_CYVTHUMB:
+ case SM_CXHTHUMB:
+ gpsi->SystemMetrics[Index] = 16;
+ break;
+ case SM_CXICON:
+ case SM_CYICON:
+ gpsi->SystemMetrics[Index] = 32;
+ break;
+ case SM_CXICONSPACING:
+ case SM_CYICONSPACING:
+ gpsi->SystemMetrics[Index] = 64;
+ break;
+ case SM_CXMAXIMIZED:
+ /* This seems to be 8 pixels greater than the screen width */
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CXSCREEN] + 8;
+ break;
+ case SM_CYMAXIMIZED:
+ /* This seems to be 20 pixels less than the screen height, taskbar maybe? */
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CYSCREEN] - 20;
+ break;
+ case SM_CXMAXTRACK:
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CYSCREEN] + 12;
+ break;
+ case SM_CYMAXTRACK:
+ gpsi->SystemMetrics[Index] = gpsi->SystemMetrics[SM_CYSCREEN] + 12;
+ break;
+ case SM_CXMENUCHECK:
+ case SM_CYMENUCHECK:
+ gpsi->SystemMetrics[Index] = 13;
+ break;
+ case SM_CXMENUSIZE:
+ case SM_CYMENUSIZE:
+ gpsi->SystemMetrics[Index] = 18;
+ break;
+ case SM_CXMIN:
+ gpsi->SystemMetrics[Index] = 112;
+ break;
+ case SM_CYMIN:
+ gpsi->SystemMetrics[Index] = 27;
+ break;
+ case SM_CXMINIMIZED:
+ gpsi->SystemMetrics[Index] = 160;
+ break;
+ case SM_CYMINIMIZED:
+ gpsi->SystemMetrics[Index] = 24;
+ break;
+ case SM_CXMINSPACING:
+ gpsi->SystemMetrics[Index] = 160;
+ break;
+ case SM_CYMINSPACING:
+ gpsi->SystemMetrics[Index] = 24;
+ break;
+ case SM_CXMINTRACK:
+ gpsi->SystemMetrics[Index] = 112;
+ break;
+ case SM_CYMINTRACK:
+ gpsi->SystemMetrics[Index] = 27;
+ break;
+ case SM_CXSIZE:
+ case SM_CYSIZE:
+ gpsi->SystemMetrics[Index] = 18;
+ break;
+ case SM_CXSMICON:
+ case SM_CYSMICON:
+ gpsi->SystemMetrics[Index] = 16;
+ break;
+ case SM_CXSMSIZE:
+ gpsi->SystemMetrics[Index] = 12;
+ break;
+ case SM_CYSMSIZE:
+ gpsi->SystemMetrics[Index] = 14;
+ break;
+ case SM_CXVSCROLL:
+ case SM_CYVSCROLL:
+ gpsi->SystemMetrics[Index] = 16;
+ break;
+ case SM_CYCAPTION:
+ gpsi->SystemMetrics[Index] = 19;
+ break;
+ case SM_CYKANJIWINDOW:
+ gpsi->SystemMetrics[Index] = 0;
+ break;
+ case SM_CYMENU:
+ gpsi->SystemMetrics[Index] = 19;
+ break;
+ case SM_CYSMCAPTION:
+ gpsi->SystemMetrics[Index] = 15;
+ break;
+ case SM_DBCSENABLED:
+ case SM_DEBUG:
+ case SM_MENUDROPALIGNMENT:
+ case SM_MIDEASTENABLED:
+ gpsi->SystemMetrics[Index] = 0;
+ break;
+ case SM_MOUSEPRESENT:
+ gpsi->SystemMetrics[Index] = 1;
+ break;
+ case SM_NETWORK:
+ gpsi->SystemMetrics[Index] = 3;
+ break;
+ case SM_PENWINDOWS:
+ case SM_SECURE:
+ case SM_SHOWSOUNDS:
+ case SM_SLOWMACHINE:
+ gpsi->SystemMetrics[Index] = 0;
+ break;
+ case SM_CMONITORS:
+ gpsi->SystemMetrics[Index] = 1;
+ break;
+ case SM_REMOTESESSION:
+ gpsi->SystemMetrics[Index] = 0;
+ break;
+ default:
+ gpsi->SystemMetrics[Index] = 0xFFFFFFFF;
+ }
+ }
+ gpsi->SRVINFO_Flags |= SRVINFO_METRICS;
+ Setup = TRUE;
+ return TRUE;
+}
+
ULONG FASTCALL
UserGetSystemMetrics(ULONG Index)
{
@@ -44,6 +278,11 @@
PWINSTATION_OBJECT WinStaObject;
ULONG Width, Height, Result;
+// DPRINT1("UserGetSystemMetrics -> %d\n",Index);
+ if (gpsi && Setup)
+ return gpsi->SystemMetrics[Index];
+ else
+ {
Result = 0;
switch (Index)
{
@@ -176,6 +415,7 @@
return SM_CXSCREEN == Index ? Width : Height;
}
case SM_CXSIZE:
+ InitMetrics();
case SM_CYSIZE:
return(18);
case SM_CXSMICON:
@@ -218,11 +458,9 @@
default:
return(0xFFFFFFFF);
}
+ }
}
-
-
-/* FIXME: Alot of thse values should NOT be hardcoded but they are */
ULONG STDCALL
NtUserGetSystemMetrics(ULONG Index)
{
@@ -238,4 +476,6 @@
UserLeave();
END_CLEANUP;
}
+
+
/* EOF */
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/ntuser/winsta.c [iso-8859-1] Thu May 29 23:56:10 2008
@@ -290,6 +290,8 @@
return NT_SUCCESS(Status);
}
+extern HDC hSystemBM;
+
BOOL FASTCALL
co_IntInitializeDesktopGraphics(VOID)
{
@@ -304,11 +306,15 @@
IntDestroyPrimarySurface();
return FALSE;
}
- DC_FreeDcAttr(ScreenDeviceContext); // Free the dcattr!
- DC_SetOwnership(ScreenDeviceContext, NULL); // This hDC is inaccessible!
+ IntGdiSetDCOwnerEx(ScreenDeviceContext, GDI_OBJ_HMGR_PUBLIC, FALSE);
/* Setup the cursor */
co_IntLoadDefaultCursors();
+
+ hSystemBM = NtGdiCreateCompatibleDC(ScreenDeviceContext);
+
+ NtGdiSelectFont( hSystemBM, NtGdiGetStockObject(SYSTEM_FONT));
+ IntGdiSetDCOwnerEx( hSystemBM, GDI_OBJ_HMGR_PUBLIC, FALSE);
return TRUE;
}
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/dc.c?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c [iso-8859-1] Thu May 29 23:56:10 2008
@@ -2642,29 +2642,31 @@
return TRUE;
}
-VOID FASTCALL
+BOOL
+FASTCALL
DC_SetOwnership(HDC hDC, PEPROCESS Owner)
{
PDC pDC;
- GDIOBJ_SetOwnership(hDC, Owner);
+ if(!GDIOBJ_SetOwnership(hDC, Owner)) return FALSE;
pDC = DC_LockDc(hDC);
if (pDC)
{
if (pDC->w.hClipRgn)
{
- GDIOBJ_SetOwnership(pDC->w.hClipRgn, Owner);
+ if(!GDIOBJ_SetOwnership(pDC->w.hClipRgn, Owner)) return FALSE;
}
if (pDC->w.hVisRgn)
{
- GDIOBJ_SetOwnership(pDC->w.hVisRgn, Owner);
+ if(!GDIOBJ_SetOwnership(pDC->w.hVisRgn, Owner)) return FALSE;
}
if (pDC->w.hGCClipRgn)
{
- GDIOBJ_SetOwnership(pDC->w.hGCClipRgn, Owner);
+ if(!GDIOBJ_SetOwnership(pDC->w.hGCClipRgn, Owner)) return FALSE;
}
DC_UnlockDc(pDC);
}
+ return TRUE;
}
//
Modified: trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] Thu May 29 23:56:10 2008
@@ -1151,12 +1151,13 @@
return FALSE;
}
-void INTERNAL_CALL
+BOOL INTERNAL_CALL
GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle, PEPROCESS NewOwner)
{
PGDI_TABLE_ENTRY Entry;
HANDLE ProcessId, LockedProcessId, PrevProcId;
PW32THREAD Thread;
+ BOOL Ret = TRUE;
GDIDBG_INITLOOPTRACE();
@@ -1223,7 +1224,7 @@
(void)_InterlockedExchangePointer((PVOID*)&Entry->ProcessId, ProcessId);
/* we're done! */
- return;
+ return Ret;
}
else
{
@@ -1245,6 +1246,7 @@
{
DPRINT1("Attempted to change ownership of an object 0x%x currently being destroyed!!!\n", ObjectHandle);
DPRINT1("Entry->Type = 0x%lx, Entry->KernelData = 0x%p\n", Entry->Type, Entry->KernelData);
+ Ret = FALSE;
}
}
else if (PrevProcId == LockedProcessId)
@@ -1267,20 +1269,24 @@
else if ((HANDLE)((ULONG_PTR)PrevProcId & ~0x1) != PsGetCurrentProcessId())
{
DPRINT1("Attempted to change ownership of object 0x%x (pid: 0x%x) from pid 0x%x!!!\n", ObjectHandle, (ULONG_PTR)PrevProcId & ~0x1, PsGetCurrentProcessId());
+ Ret = FALSE;
}
else
{
DPRINT1("Attempted to change owner of invalid handle: 0x%x\n", ObjectHandle);
- }
- }
-}
-
-void INTERNAL_CALL
+ Ret = FALSE;
+ }
+ }
+ return Ret;
+}
+
+BOOL INTERNAL_CALL
GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom, HGDIOBJ CopyTo)
{
PGDI_TABLE_ENTRY FromEntry;
PW32THREAD Thread;
HANDLE FromProcessId, FromLockedProcessId, FromPrevProcId;
+ BOOL Ret = TRUE;
GDIDBG_INITLOOPTRACE();
@@ -1351,6 +1357,7 @@
else
{
DPRINT1("Attempted to copy ownership from an object 0x%x currently being destroyed!!!\n", CopyFrom);
+ Ret = FALSE;
}
}
else if (FromPrevProcId == FromLockedProcessId)
@@ -1374,8 +1381,10 @@
else
{
DPRINT1("Attempted to copy ownership from invalid handle: 0x%x\n", CopyFrom);
- }
- }
+ Ret = FALSE;
+ }
+ }
+ return Ret;
}
PVOID INTERNAL_CALL
@@ -1410,6 +1419,60 @@
/** PUBLIC FUNCTIONS **********************************************************/
+BOOL
+FASTCALL
+IntGdiSetBrushOwner(PGDIBRUSHOBJ pbr, DWORD OwnerMask)
+{
+ // Inc/Dec share locks and process counts.
+ return TRUE;
+}
+
+
+BOOL
+FASTCALL
+IntGdiSetDCOwnerEx( HDC hDC, DWORD OwnerMask, BOOL NoSetBrush)
+{
+ PDC pDC;
+ BOOL Ret = FALSE;
+
+ if (!hDC || (GDI_HANDLE_GET_TYPE(hDC) != GDI_OBJECT_TYPE_DC)) return FALSE;
+
+ if ((OwnerMask == GDI_OBJ_HMGR_PUBLIC) || OwnerMask == GDI_OBJ_HMGR_NONE)
+ {
+ pDC = DC_LockDc ( hDC );
+ MmCopyFromCaller(&pDC->Dc_Attr, pDC->pDc_Attr, sizeof(DC_ATTR));
+ DC_UnlockDc( pDC );
+
+ DC_FreeDcAttr( hDC ); // Free the dcattr!
+
+ if (!DC_SetOwnership( hDC, NULL )) // This hDC is inaccessible!
+ return Ret;
+ }
+
+ if (OwnerMask == GDI_OBJ_HMGR_POWNED)
+ {
+ pDC = DC_LockDc ( hDC );
+ if ( !pDC->pDc_Attr ) Ret = TRUE; // Must be zero.
+ DC_UnlockDc( pDC );
+ if (!Ret) return Ret;
+
+ if (!DC_SetOwnership( hDC, PsGetCurrentProcess() )) return Ret;
+
+ DC_AllocateDcAttr( hDC ); // Allocate new dcattr
+
+ DCU_SynchDcAttrtoUser( hDC ); // Copy data from dc to dcattr
+ }
+
+ if ((OwnerMask != GDI_OBJ_HMGR_NONE) && !NoSetBrush)
+ {
+ pDC = DC_LockDc ( hDC );
+ if (IntGdiSetBrushOwner((PGDIBRUSHOBJ)pDC->DcLevel.pbrFill, OwnerMask))
+ IntGdiSetBrushOwner((PGDIBRUSHOBJ)pDC->DcLevel.pbrLine, OwnerMask);
+ DC_UnlockDc( pDC );
+ }
+ return TRUE;
+}
+
W32KAPI
HANDLE
APIENTRY
@@ -1417,11 +1480,6 @@
IN ULONG ulType
)
{
-// ATM we use DC object for KernelData. This is wrong.
-// The real type consists of BASEOBJECT and a pointer.
-// The UserData is set in user mode, so it is always NULL.
-// HANDLE should be HGDIOBJ
-//
POBJ pObject;
HANDLE handle;
@@ -1521,13 +1579,6 @@
}
-BOOL
-FASTCALL
-IntGdiSetDCOwnerEx( HGDIOBJ hObject, DWORD OwnerMask, BOOL NoSetBrush)
-{
- UNIMPLEMENTED;
- return FALSE;
-}
W32KAPI
INT
Modified: trunk/reactos/subsystems/win32/win32k/objects/stockobj.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/objects/stockobj.c?rev=33765&r1=33764&r2=33765&view=diff
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/stockobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/stockobj.c [iso-8859-1] Thu May 29 23:56:10 2008
@@ -19,7 +19,6 @@
/*
* STOCKOBJ.C - GDI Stock Objects
*
- * $Id$
*
*/
@@ -66,11 +65,8 @@
};
#define NUM_SYSCOLORS (sizeof(SysColors) / sizeof(SysColors[0]))
-//static HPEN SysColorPens[NUM_SYSCOLORS];
-//static HBRUSH SysColorBrushes[NUM_SYSCOLORS];
-
-// System Bitmap DC and System Display DC...
-HDC hSystemBM, hSystemDisplayDC;
+// System Bitmap DC
+HDC hSystemBM;
/* GDI stock objects */
More information about the Ros-diffs
mailing list