mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 16:36:11 +00:00
prepare the rest of directdraw syscall using cache info, that will make our ddraw.dll work evently in reactos.
left todo implemet the rest stub. svn path=/trunk/; revision=18757
This commit is contained in:
parent
aaa2a0d33a
commit
dd10647983
|
@ -442,16 +442,27 @@ DWORD STDCALL NtGdiDdUnlock(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puUnlockData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puUnlockData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UNLOCK))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Unlock(puUnlockData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puUnlockData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -463,16 +474,27 @@ DWORD STDCALL NtGdiDdBlt(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDest, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puBltData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puBltData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_BLT))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Blt(puBltData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puBltData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -483,16 +505,27 @@ DWORD STDCALL NtGdiDdSetColorKey(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puSetColorKeyData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puSetColorKeyData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_SETCOLORKEY))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.SetColorKey(puSetColorKeyData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puSetColorKeyData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -505,16 +538,27 @@ DWORD STDCALL NtGdiDdAddAttachedSurface(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceAttached, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puAddAttachedSurfaceData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puAddAttachedSurfaceData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_ADDATTACHEDSURFACE))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.AddAttachedSurface(puAddAttachedSurfaceData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puAddAttachedSurfaceData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -525,16 +569,27 @@ DWORD STDCALL NtGdiDdGetBltStatus(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puGetBltStatusData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puGetBltStatusData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_GETBLTSTATUS))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.GetBltStatus(puGetBltStatusData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puGetBltStatusData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -545,16 +600,27 @@ DWORD STDCALL NtGdiDdGetFlipStatus(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puGetFlipStatusData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puGetFlipStatusData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_GETFLIPSTATUS))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.GetFlipStatus(puGetFlipStatusData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puGetFlipStatusData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -566,16 +632,27 @@ DWORD STDCALL NtGdiDdUpdateOverlay(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puUpdateOverlayData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puUpdateOverlayData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.UpdateOverlay(puUpdateOverlayData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puUpdateOverlayData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -587,16 +664,27 @@ DWORD STDCALL NtGdiDdSetOverlayPosition(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puSetOverlayPositionData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puSetOverlayPositionData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_SETOVERLAYPOSITION))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.SetOverlayPosition(puSetOverlayPositionData);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puSetOverlayPositionData->lpDD = lgpl;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
@ -698,13 +786,25 @@ DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puGetAvailDriverMemoryData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puGetAvailDriverMemoryData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
// ddRVal = pDirectDraw->DdGetAvailDriverMemory(puGetAvailDriverMemoryData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puGetAvailDriverMemoryData->lpDD = lgpl;
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
@ -717,12 +817,23 @@ DWORD STDCALL NtGdiDdSetExclusiveMode(
|
|||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
/* backup the orignal PDev and info */
|
||||
lgpl = puSetExclusiveModeData->lpDD;
|
||||
|
||||
/* use our cache version instead */
|
||||
puSetExclusiveModeData->lpDD = &pDirectDraw->Global;
|
||||
|
||||
/* make the call */
|
||||
ddRVal = pDirectDraw->DdSetExclusiveMode(puSetExclusiveModeData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
/* But back the orignal PDev */
|
||||
puSetExclusiveModeData->lpDD = lgpl;
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue