mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 16:36:11 +00:00
[WIN32K]
- apply policy into DC_vPrepareDCsForBlit as in GDIOBJ_LockMultipleObjects before Physicus sees this :-D - GDIOBJ_LockObj : return NULL when handle is NULL : more speed, less debug output svn path=/branches/reactos-yarotows/; revision=46909
This commit is contained in:
parent
d2655f9e72
commit
fa0a6275a9
|
@ -463,15 +463,50 @@ DC_vPrepareDCsForBlit(PDC pdc1,
|
||||||
PDC pdc2,
|
PDC pdc2,
|
||||||
RECT rc2)
|
RECT rc2)
|
||||||
{
|
{
|
||||||
if(pdc1->dctype == DCTYPE_DIRECT)
|
PDC pdcFirst, pdcSecond;
|
||||||
|
PRECT prcFirst, prcSecond;
|
||||||
|
/* Lock them in good order */
|
||||||
|
if(pdc2)
|
||||||
{
|
{
|
||||||
EngAcquireSemaphore(pdc1->ppdev->hsemDevLock);
|
if((ULONG_PTR)pdc1->BaseObject.hHmgr >= (ULONG_PTR)pdc2->BaseObject.hHmgr)
|
||||||
MouseSafetyOnDrawStart(&pdc1->dclevel.pSurface->SurfObj, rc1.left, rc1.top, rc1.right, rc1.bottom) ;
|
{
|
||||||
|
pdcFirst = pdc1;
|
||||||
|
prcFirst = &rc1;
|
||||||
|
pdcSecond = pdc2;
|
||||||
|
prcSecond = &rc2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pdcFirst = pdc2;
|
||||||
|
prcFirst = &rc2;
|
||||||
|
pdcSecond = pdc1;
|
||||||
|
prcSecond = &rc1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(pdc2 && pdc2->dctype == DCTYPE_DIRECT)
|
else
|
||||||
{
|
{
|
||||||
EngAcquireSemaphore(pdc2->ppdev->hsemDevLock);
|
pdcFirst = pdc1 ;
|
||||||
MouseSafetyOnDrawStart(&pdc2->dclevel.pSurface->SurfObj, rc2.left, rc2.top, rc2.right, rc2.bottom) ;
|
prcFirst = &rc1;
|
||||||
|
pdcSecond = NULL ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pdcFirst && pdcFirst->dctype == DCTYPE_DIRECT)
|
||||||
|
{
|
||||||
|
EngAcquireSemaphore(pdcFirst->ppdev->hsemDevLock);
|
||||||
|
MouseSafetyOnDrawStart(&pdcFirst->dclevel.pSurface->SurfObj,
|
||||||
|
prcFirst->left,
|
||||||
|
prcFirst->top,
|
||||||
|
prcFirst->right,
|
||||||
|
prcFirst->bottom) ;
|
||||||
|
}
|
||||||
|
if(pdcSecond && pdcSecond->dctype == DCTYPE_DIRECT)
|
||||||
|
{
|
||||||
|
EngAcquireSemaphore(pdcSecond->ppdev->hsemDevLock);
|
||||||
|
MouseSafetyOnDrawStart(&pdcSecond->dclevel.pSurface->SurfObj,
|
||||||
|
prcSecond->left,
|
||||||
|
prcSecond->top,
|
||||||
|
prcSecond->right,
|
||||||
|
prcSecond->bottom) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -952,6 +952,10 @@ GDIOBJ_LockObj(HGDIOBJ hObj, DWORD ExpectedType)
|
||||||
POBJ Object = NULL;
|
POBJ Object = NULL;
|
||||||
ULONG HandleType, HandleUpper;
|
ULONG HandleType, HandleUpper;
|
||||||
|
|
||||||
|
/* Check for dummy call */
|
||||||
|
if(hObj == NULL)
|
||||||
|
return NULL ;
|
||||||
|
|
||||||
GDIDBG_INITLOOPTRACE();
|
GDIDBG_INITLOOPTRACE();
|
||||||
|
|
||||||
HandleIndex = GDI_HANDLE_GET_INDEX(hObj);
|
HandleIndex = GDI_HANDLE_GET_INDEX(hObj);
|
||||||
|
@ -959,7 +963,7 @@ GDIOBJ_LockObj(HGDIOBJ hObj, DWORD ExpectedType)
|
||||||
HandleUpper = GDI_HANDLE_GET_UPPER(hObj);
|
HandleUpper = GDI_HANDLE_GET_UPPER(hObj);
|
||||||
|
|
||||||
/* Check that the handle index is valid. */
|
/* Check that the handle index is valid. */
|
||||||
if (HandleIndex >= GDI_HANDLE_COUNT)
|
if (HandleIndex >= GDI_HANDLE_COUNT )
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
Entry = &GdiHandleTable->Entries[HandleIndex];
|
Entry = &GdiHandleTable->Entries[HandleIndex];
|
||||||
|
|
Loading…
Reference in a new issue