mirror of
https://github.com/reactos/reactos.git
synced 2025-07-29 07:32:09 +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
1 changed files with 111 additions and 0 deletions
|
@ -442,16 +442,27 @@ DWORD STDCALL NtGdiDdUnlock(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UNLOCK))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.Unlock(puUnlockData);
|
ddRVal = pDirectDraw->Surf.Unlock(puUnlockData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puUnlockData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -463,16 +474,27 @@ DWORD STDCALL NtGdiDdBlt(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDest, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDest, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_BLT))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.Blt(puBltData);
|
ddRVal = pDirectDraw->Surf.Blt(puBltData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puBltData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -483,16 +505,27 @@ DWORD STDCALL NtGdiDdSetColorKey(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_SETCOLORKEY))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.SetColorKey(puSetColorKeyData);
|
ddRVal = pDirectDraw->Surf.SetColorKey(puSetColorKeyData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puSetColorKeyData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -505,16 +538,27 @@ DWORD STDCALL NtGdiDdAddAttachedSurface(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceAttached, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceAttached, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_ADDATTACHEDSURFACE))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.AddAttachedSurface(puAddAttachedSurfaceData);
|
ddRVal = pDirectDraw->Surf.AddAttachedSurface(puAddAttachedSurfaceData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puAddAttachedSurfaceData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -525,16 +569,27 @@ DWORD STDCALL NtGdiDdGetBltStatus(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_GETBLTSTATUS))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.GetBltStatus(puGetBltStatusData);
|
ddRVal = pDirectDraw->Surf.GetBltStatus(puGetBltStatusData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puGetBltStatusData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -545,16 +600,27 @@ DWORD STDCALL NtGdiDdGetFlipStatus(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_GETFLIPSTATUS))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.GetFlipStatus(puGetFlipStatusData);
|
ddRVal = pDirectDraw->Surf.GetFlipStatus(puGetFlipStatusData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puGetFlipStatusData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -566,16 +632,27 @@ DWORD STDCALL NtGdiDdUpdateOverlay(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.UpdateOverlay(puUpdateOverlayData);
|
ddRVal = pDirectDraw->Surf.UpdateOverlay(puUpdateOverlayData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puUpdateOverlayData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -587,16 +664,27 @@ DWORD STDCALL NtGdiDdSetOverlayPosition(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||||
if (pDirectDraw == NULL)
|
if (pDirectDraw == NULL)
|
||||||
return DDHAL_DRIVER_NOTHANDLED;
|
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))
|
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_SETOVERLAYPOSITION))
|
||||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
else
|
else
|
||||||
ddRVal = pDirectDraw->Surf.SetOverlayPosition(puSetOverlayPositionData);
|
ddRVal = pDirectDraw->Surf.SetOverlayPosition(puSetOverlayPositionData);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puSetOverlayPositionData->lpDD = lgpl;
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
@ -698,13 +786,25 @@ DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
DWORD ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
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);
|
// ddRVal = pDirectDraw->DdGetAvailDriverMemory(puGetAvailDriverMemoryData);
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
|
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puGetAvailDriverMemoryData->lpDD = lgpl;
|
||||||
|
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -717,13 +817,24 @@ DWORD STDCALL NtGdiDdSetExclusiveMode(
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
DWORD ddRVal;
|
DWORD ddRVal;
|
||||||
|
PDD_DIRECTDRAW_GLOBAL lgpl;
|
||||||
|
|
||||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW);
|
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);
|
ddRVal = pDirectDraw->DdSetExclusiveMode(puSetExclusiveModeData);
|
||||||
|
|
||||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||||
|
|
||||||
|
/* But back the orignal PDev */
|
||||||
|
puSetExclusiveModeData->lpDD = lgpl;
|
||||||
|
|
||||||
return ddRVal;
|
return ddRVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue