mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 10:04:49 +00:00
Properly synchronize with GPU
svn path=/trunk/; revision=13444
This commit is contained in:
parent
90b5ddc462
commit
78a54aa150
3 changed files with 18 additions and 0 deletions
|
@ -97,6 +97,8 @@ typedef LONG (STDCALL *PGD_QUERYSPOOLTYPE)(DHPDEV, LPWSTR);
|
||||||
|
|
||||||
typedef BOOL (STDCALL *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
|
typedef BOOL (STDCALL *PGD_GRADIENTFILL)(SURFOBJ*, CLIPOBJ*, XLATEOBJ*, TRIVERTEX*, ULONG, PVOID, ULONG, RECTL*, POINTL*, ULONG);
|
||||||
|
|
||||||
|
typedef VOID (STDCALL *PGD_SYNCHRONIZESURFACE)(SURFOBJ*, RECTL *, FLONG);
|
||||||
|
|
||||||
typedef struct _DRIVER_FUNCTIONS
|
typedef struct _DRIVER_FUNCTIONS
|
||||||
{
|
{
|
||||||
PGD_ENABLEDRIVER EnableDriver;
|
PGD_ENABLEDRIVER EnableDriver;
|
||||||
|
@ -158,6 +160,7 @@ typedef struct _DRIVER_FUNCTIONS
|
||||||
PGD_DISABLEDIRECTDRAW DisableDirectDraw;
|
PGD_DISABLEDIRECTDRAW DisableDirectDraw;
|
||||||
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
PGD_QUERYSPOOLTYPE QuerySpoolType;
|
||||||
PGD_GRADIENTFILL GradientFill;
|
PGD_GRADIENTFILL GradientFill;
|
||||||
|
PGD_SYNCHRONIZESURFACE SynchronizeSurface;
|
||||||
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
} DRIVER_FUNCTIONS, *PDRIVER_FUNCTIONS;
|
||||||
|
|
||||||
BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
|
BOOL DRIVER_RegisterDriver(LPCWSTR Name, PGD_ENABLEDRIVER EnableDriver);
|
||||||
|
|
|
@ -123,6 +123,20 @@ IntEngEnter(PINTENG_ENTER_LEAVE EnterLeave,
|
||||||
*OutputObj = DestObj;
|
*OutputObj = DestObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (NULL != *OutputObj
|
||||||
|
&& 0 != (((BITMAPOBJ*) *OutputObj)->flHooks & HOOK_SYNCHRONIZE))
|
||||||
|
{
|
||||||
|
if (NULL != GDIDEVFUNCS(*OutputObj).SynchronizeSurface)
|
||||||
|
{
|
||||||
|
GDIDEVFUNCS(*OutputObj).SynchronizeSurface(*OutputObj, DestRect, 0);
|
||||||
|
}
|
||||||
|
else if (STYPE_BITMAP == (*OutputObj)->iType
|
||||||
|
&& NULL != GDIDEVFUNCS(*OutputObj).Synchronize)
|
||||||
|
{
|
||||||
|
GDIDEVFUNCS(*OutputObj).Synchronize((*OutputObj)->dhpdev, DestRect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EnterLeave->DestObj = DestObj;
|
EnterLeave->DestObj = DestObj;
|
||||||
EnterLeave->OutputObj = *OutputObj;
|
EnterLeave->OutputObj = *OutputObj;
|
||||||
EnterLeave->ReadOnly = ReadOnly;
|
EnterLeave->ReadOnly = ReadOnly;
|
||||||
|
|
|
@ -239,6 +239,7 @@ BOOL DRIVER_BuildDDIFunctions(PDRVENABLEDATA DED,
|
||||||
DRIVER_FUNCTION(DisableDirectDraw);
|
DRIVER_FUNCTION(DisableDirectDraw);
|
||||||
DRIVER_FUNCTION(QuerySpoolType);
|
DRIVER_FUNCTION(QuerySpoolType);
|
||||||
DRIVER_FUNCTION(GradientFill);
|
DRIVER_FUNCTION(GradientFill);
|
||||||
|
DRIVER_FUNCTION(SynchronizeSurface);
|
||||||
|
|
||||||
END_FUNCTION_MAP();
|
END_FUNCTION_MAP();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue