Author: jgardou
Date: Fri May 14 22:19:46 2010
New Revision: 47205
URL:
http://svn.reactos.org/svn/reactos?rev=47205&view=rev
Log:
[WIN32K]
- clean up some unused code
- use GDIOBJ_IncrementShareCount on Timo suggestion
- use ppdev semaphore as sort criterion in DC_vPrepareDCsForBlit, spotted by Timo
- Get ownership before freeing the object in GDIOBJ_ShareUnlockObjByPtr, as whoever set
it ready to die had the right to
Modified:
branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h
branches/reactos-yarotows/subsystems/win32/win32k/include/gdiobj.h
branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c
branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h
URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h [iso-8859-1]
(original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/include/dc.h [iso-8859-1] Fri May 14
22:19:46 2010
@@ -152,52 +152,10 @@
/* Internal functions *********************************************************/
-#if 1
#define DC_LockDc(hDC) \
((PDC) GDIOBJ_LockObj ((HGDIOBJ) hDC, GDI_OBJECT_TYPE_DC))
#define DC_UnlockDc(pDC) \
GDIOBJ_UnlockObjByPtr ((POBJ)pDC)
-#else
-
-VOID NTAPI EngAcquireSemaphoreShared(IN HSEMAPHORE hsem);
-
-PDC
-FORCEINLINE
-DC_LockDc(HDC hdc)
-{
- PDC pdc;
- pdc = GDIOBJ_LockObj(hdc, GDILoObjType_LO_DC_TYPE);
-
- /* Direct DC's need PDEV locking */
- if(pdc && pdc->dctype == DCTYPE_DIRECT)
- {
- /* Acquire shared PDEV lock */
- EngAcquireSemaphoreShared(pdc->ppdev->hsemDevLock);
-
- /* Update Surface if needed */
- if(pdc->dclevel.pSurface != pdc->ppdev->pSurface)
- {
- if(pdc->dclevel.pSurface)
SURFACE_ShareUnlockSurface(pdc->dclevel.pSurface);
- pdc->dclevel.pSurface = PDEVOBJ_pSurface(pdc->ppdev);
- }
- }
- return pdc;
-}
-
-void
-FORCEINLINE
-DC_UnlockDc(PDC pdc)
-{
- if(pdc->dctype == DCTYPE_DIRECT)
- {
- /* Release PDEV lock */
- EngReleaseSemaphore(pdc->ppdev->hsemDevLock);
- }
-
- GDIOBJ_UnlockObjByPtr(&pdc->BaseObject);
-}
-#endif
-
extern PDC defaultDCstate;
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/gdiobj.h
URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/include/gdiobj.h [iso-8859-1]
(original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/include/gdiobj.h [iso-8859-1] Fri
May 14 22:19:46 2010
@@ -113,6 +113,7 @@
ASSERT(cLocks >= 0);
if ((flags & BASEFLAG_READY_TO_DIE) && (cLocks == 0))
{
+ GDIOBJ_SetOwnership(hobj, PsGetCurrentProcess());
GDIOBJ_FreeObjByHandle(hobj, GDI_OBJECT_TYPE_DONTCARE);
}
return cLocks;
Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c
URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c [iso-8859-1]
(original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/objects/bitmaps.c [iso-8859-1] Fri
May 14 22:19:46 2010
@@ -95,7 +95,7 @@
{
case 1:
psurfBmp->ppal = &gpalMono;
- gpalMono.BaseObject.ulShareCount++;
+ GDIOBJ_IncrementShareCount((POBJ)&gpalMono);
break;
case 4:
case 8:
@@ -103,16 +103,15 @@
break;
case 15:
psurfBmp->ppal = &gpalRGB555;
- gpalRGB555.BaseObject.ulShareCount++;
+ GDIOBJ_IncrementShareCount((POBJ)&gpalRGB555);
break;
case 16:
psurfBmp->ppal = &gpalRGB565;
- gpalRGB565.BaseObject.ulShareCount++;
- break;
+ GDIOBJ_IncrementShareCount((POBJ)&gpalRGB565);
case 24:
case 32:
psurfBmp->ppal = &gpalRGB;
- gpalRGB.BaseObject.ulShareCount++;
+ GDIOBJ_IncrementShareCount((POBJ)&gpalRGB);
break;
default:
DPRINT1("Could not determine palette for bit depth %u.\n",
BitsPixel);
Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c
URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
==============================================================================
--- branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c [iso-8859-1]
(original)
+++ branches/reactos-yarotows/subsystems/win32/win32k/objects/dclife.c [iso-8859-1] Fri
May 14 22:19:46 2010
@@ -115,14 +115,6 @@
DCTYPE dctype,
PPDEVOBJ ppdev)
{
-#if 0
- if (dctype == DCTYPE_DIRECT)
- {
- /* Lock ppdev */
- EngAcquireSemaphoreShared(ppdev->hsemDevLock);
- }
-#endif
-
/* Setup some basic fields */
pdc->dctype = dctype;
pdc->ppdev = ppdev;
@@ -496,7 +488,7 @@
/* Lock them in good order */
if(pdc2)
{
- if((ULONG_PTR)pdc1->BaseObject.hHmgr >=
(ULONG_PTR)pdc2->BaseObject.hHmgr)
+ if((ULONG_PTR)pdc1->ppdev->hsemDevLock >=
(ULONG_PTR)pdc2->ppdev->hsemDevLock)
{
pdcFirst = pdc1;
prcFirst = &rc1;