Author: tkreuzer
Date: Tue Mar 29 10:25:10 2011
New Revision: 51191
URL:
http://svn.reactos.org/svn/reactos?rev=51191&view=rev
Log:
[WIN32K]
- Move IntGdiSetBrushOwner to brush.c
- Move IntGdiSetDCOwnerEx to dclife.c
- Move IntGdiSetRegionOwner to region.c
Modified:
trunk/reactos/subsystems/win32/win32k/objects/brush.c
trunk/reactos/subsystems/win32/win32k/objects/dclife.c
trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c
trunk/reactos/subsystems/win32/win32k/objects/region.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/brush.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/brush.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/brush.c [iso-8859-1] Tue Mar 29 10:25:10
2011
@@ -573,4 +573,53 @@
return TRUE;
}
+BOOL
+FASTCALL
+IntGdiSetBrushOwner(PBRUSH pbr, DWORD OwnerMask)
+{
+ HBRUSH hBR;
+ PEPROCESS Owner = NULL;
+ PGDI_TABLE_ENTRY pEntry = NULL;
+
+ if (!pbr) return FALSE;
+
+ hBR = pbr->BaseObject.hHmgr;
+
+ if (!hBR || (GDI_HANDLE_GET_TYPE(hBR) != GDI_OBJECT_TYPE_BRUSH))
+ return FALSE;
+ else
+ {
+ INT Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)hBR);
+ pEntry = &GdiHandleTable->Entries[Index];
+ }
+
+ if (pbr->flAttrs & GDIBRUSH_IS_GLOBAL)
+ {
+ GDIOBJ_ShareUnlockObjByPtr((POBJ)pbr);
+ return TRUE;
+ }
+
+ if ((OwnerMask == GDI_OBJ_HMGR_PUBLIC) || OwnerMask == GDI_OBJ_HMGR_NONE)
+ {
+ // Set this Brush to inaccessible mode and to an Owner of NONE.
+// if (OwnerMask == GDI_OBJ_HMGR_NONE) Owner = OwnerMask;
+
+ if (!GDIOBJ_SetOwnership((HGDIOBJ) hBR, Owner))
+ return FALSE;
+
+ // Deny user access to User Data.
+ pEntry->UserData = NULL; // This hBR is inaccessible!
+ }
+
+ if (OwnerMask == GDI_OBJ_HMGR_POWNED)
+ {
+ if (!GDIOBJ_SetOwnership((HGDIOBJ) hBR, PsGetCurrentProcess() ))
+ return FALSE;
+
+ // Allow user access to User Data.
+ pEntry->UserData = pbr->pBrushAttr;
+ }
+ return TRUE;
+}
+
/* EOF */
Modified: trunk/reactos/subsystems/win32/win32k/objects/dclife.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] Tue Mar 29
10:25:10 2011
@@ -836,7 +836,7 @@
{
DPRINT1("Attempted to Delete 0x%x currently being destroyed!!!\n",
hDC);
}
-
+
return TRUE;
}
@@ -973,3 +973,45 @@
return hDC;
}
+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->dcattr, pDC->pdcattr, sizeof(DC_ATTR));
+ DC_vFreeDcAttr(pDC);
+ DC_UnlockDc( pDC );
+
+ if (!DC_SetOwnership( hDC, NULL )) // This hDC is inaccessible!
+ return Ret;
+ }
+
+ if (OwnerMask == GDI_OBJ_HMGR_POWNED)
+ {
+ pDC = DC_LockDc ( hDC );
+ ASSERT(pDC->pdcattr == &pDC->dcattr);
+ DC_UnlockDc( pDC );
+
+ 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((PBRUSH)pDC->dclevel.pbrFill, OwnerMask))
+ IntGdiSetBrushOwner((PBRUSH)pDC->dclevel.pbrLine, OwnerMask);
+ 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/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/gdiobj.c [iso-8859-1] Tue Mar 29
10:25:10 2011
@@ -1726,126 +1726,6 @@
/** PUBLIC FUNCTIONS **********************************************************/
-BOOL
-FASTCALL
-IntGdiSetRegionOwner(HRGN hRgn, DWORD OwnerMask)
-{
- INT Index;
- PGDI_TABLE_ENTRY Entry;
-/*
- System Regions:
- These regions do not use attribute sections and when allocated, use gdiobj
- level functions.
- */
- // FIXME! HAX!!! Remove this once we get everything right!
- Index = GDI_HANDLE_GET_INDEX(hRgn);
- Entry = &GdiHandleTable->Entries[Index];
- if (Entry->UserData) FreeObjectAttr(Entry->UserData);
- Entry->UserData = NULL;
- //
- if ((OwnerMask == GDI_OBJ_HMGR_PUBLIC) || OwnerMask == GDI_OBJ_HMGR_NONE)
- {
- return GDIOBJ_SetOwnership(hRgn, NULL);
- }
- if (OwnerMask == GDI_OBJ_HMGR_POWNED)
- {
- return GDIOBJ_SetOwnership((HGDIOBJ) hRgn, PsGetCurrentProcess() );
- }
- return FALSE;
-}
-
-BOOL
-FASTCALL
-IntGdiSetBrushOwner(PBRUSH pbr, DWORD OwnerMask)
-{
- HBRUSH hBR;
- PEPROCESS Owner = NULL;
- PGDI_TABLE_ENTRY pEntry = NULL;
-
- if (!pbr) return FALSE;
-
- hBR = pbr->BaseObject.hHmgr;
-
- if (!hBR || (GDI_HANDLE_GET_TYPE(hBR) != GDI_OBJECT_TYPE_BRUSH))
- return FALSE;
- else
- {
- INT Index = GDI_HANDLE_GET_INDEX((HGDIOBJ)hBR);
- pEntry = &GdiHandleTable->Entries[Index];
- }
-
- if (pbr->flAttrs & GDIBRUSH_IS_GLOBAL)
- {
- GDIOBJ_ShareUnlockObjByPtr((POBJ)pbr);
- return TRUE;
- }
-
- if ((OwnerMask == GDI_OBJ_HMGR_PUBLIC) || OwnerMask == GDI_OBJ_HMGR_NONE)
- {
- // Set this Brush to inaccessible mode and to an Owner of NONE.
-// if (OwnerMask == GDI_OBJ_HMGR_NONE) Owner = OwnerMask;
-
- if (!GDIOBJ_SetOwnership((HGDIOBJ) hBR, Owner))
- return FALSE;
-
- // Deny user access to User Data.
- pEntry->UserData = NULL; // This hBR is inaccessible!
- }
-
- if (OwnerMask == GDI_OBJ_HMGR_POWNED)
- {
- if (!GDIOBJ_SetOwnership((HGDIOBJ) hBR, PsGetCurrentProcess() ))
- return FALSE;
-
- // Allow user access to User Data.
- pEntry->UserData = pbr->pBrushAttr;
- }
- 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->dcattr, pDC->pdcattr, sizeof(DC_ATTR));
- DC_vFreeDcAttr(pDC);
- DC_UnlockDc( pDC );
-
- if (!DC_SetOwnership( hDC, NULL )) // This hDC is inaccessible!
- return Ret;
- }
-
- if (OwnerMask == GDI_OBJ_HMGR_POWNED)
- {
- pDC = DC_LockDc ( hDC );
- ASSERT(pDC->pdcattr == &pDC->dcattr);
- DC_UnlockDc( pDC );
-
- 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((PBRUSH)pDC->dclevel.pbrFill, OwnerMask))
- IntGdiSetBrushOwner((PBRUSH)pDC->dclevel.pbrLine, OwnerMask);
- DC_UnlockDc( pDC );
- }
- return TRUE;
-}
-
INT
FASTCALL
GreGetObjectOwner(HGDIOBJ Handle, GDIOBJTYPE ObjType)
Modified: trunk/reactos/subsystems/win32/win32k/objects/region.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/region.c [iso-8859-1] Tue Mar 29
10:25:10 2011
@@ -3942,4 +3942,32 @@
return size + sizeof(RGNDATAHEADER);
}
+BOOL
+FASTCALL
+IntGdiSetRegionOwner(HRGN hRgn, DWORD OwnerMask)
+{
+ INT Index;
+ PGDI_TABLE_ENTRY Entry;
+/*
+ System Regions:
+ These regions do not use attribute sections and when allocated, use gdiobj
+ level functions.
+ */
+ // FIXME! HAX!!! Remove this once we get everything right!
+ Index = GDI_HANDLE_GET_INDEX(hRgn);
+ Entry = &GdiHandleTable->Entries[Index];
+ if (Entry->UserData) FreeObjectAttr(Entry->UserData);
+ Entry->UserData = NULL;
+ //
+ if ((OwnerMask == GDI_OBJ_HMGR_PUBLIC) || OwnerMask == GDI_OBJ_HMGR_NONE)
+ {
+ return GDIOBJ_SetOwnership(hRgn, NULL);
+ }
+ if (OwnerMask == GDI_OBJ_HMGR_POWNED)
+ {
+ return GDIOBJ_SetOwnership((HGDIOBJ) hRgn, PsGetCurrentProcess() );
+ }
+ return FALSE;
+}
+
/* EOF */