mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 13:35:47 +00:00
Remove more stub from ntdraw and implement it, (untested) it is alot of stub that have been implemet. fill DD_CALLBACKS right in NtGdiDdCreateDirectDrawObject, and fix party the internal struct.
implemet follow but not tested - NtGdiDdCreateSurface, NtGdiDdDestroySurface some part it need fill the info right before it call on DdCreateSurface - NtGdiDdFlip done - NtGdiDdGetScanLine done - NtGdiDdSetColorKey done - NtGdiDdUnlock done - NtGdiDdUpdateOverlay done - NtGdiDdSetExclusiveMode done (need setup the callback) - NtGdiDdLock done svn path=/trunk/; revision=18313
This commit is contained in:
parent
a2e6df2fb3
commit
f84e3fa9f1
3 changed files with 381 additions and 238 deletions
|
@ -8,6 +8,7 @@
|
|||
#define GDI_OBJECT_TYPE_DD_CLIPPER 0x00640000
|
||||
#define GDI_OBJECT_TYPE_DD_MOTIONCOMP 0x00650000
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DD_SURFACE_LOCAL Local;
|
||||
|
@ -22,38 +23,62 @@ typedef struct
|
|||
{
|
||||
DD_DIRECTDRAW_LOCAL Local;
|
||||
DD_DIRECTDRAW_GLOBAL Global;
|
||||
// Drv callbacks
|
||||
PGD_GETDIRECTDRAWINFO DrvGetDirectDrawInfo;
|
||||
PGD_DISABLEDIRECTDRAW DrvDisableDirectDraw;
|
||||
// Drv callbacks
|
||||
PGD_GETDIRECTDRAWINFO DrvGetDirectDrawInfo;
|
||||
PGD_DISABLEDIRECTDRAW DrvDisableDirectDraw;
|
||||
PDD_GETDRIVERINFO DdGetDriverInfo;
|
||||
|
||||
// DD callbacks
|
||||
PDD_CREATESURFACE DdCreateSurface;
|
||||
PDD_SETCOLORKEY DdDrvSetColorKey; // ?????
|
||||
PDD_WAITFORVERTICALBLANK DdWaitForVerticalBlank;
|
||||
PDD_CANCREATESURFACE DdCanCreateSurface;
|
||||
PDD_CREATEPALETTE DdCreatePalette;
|
||||
PDD_GETSCANLINE DdGetScanLine;
|
||||
PDD_MAPMEMORY DdMapMemory;
|
||||
DD_CALLBACKS DD;
|
||||
|
||||
// Surface callbacks
|
||||
PDD_SURFCB_DESTROYSURFACE DdDestroySurface;
|
||||
PDD_SURFCB_FLIP DdFlip;
|
||||
PDD_SURFCB_SETCLIPLIST DdSetClipList;
|
||||
PDD_SURFCB_LOCK DdLock;
|
||||
PDD_SURFCB_UNLOCK DdUnlock;
|
||||
PDD_SURFCB_BLT DdBlt;
|
||||
PDD_SURFCB_SETCOLORKEY DdSetColorKey;
|
||||
PDD_SURFCB_ADDATTACHEDSURFACE DdAddAttachedSurface;
|
||||
PDD_SURFCB_GETBLTSTATUS DdGetBltStatus;
|
||||
PDD_SURFCB_GETFLIPSTATUS DdGetFlipStatus;
|
||||
PDD_SURFCB_UPDATEOVERLAY DdUpdateOverlay;
|
||||
PDD_SURFCB_SETOVERLAYPOSITION DdSetOverlayPosition;
|
||||
PDD_SURFCB_SETPALETTE DdSetPalette;
|
||||
// Miscellaneous Callback Function
|
||||
PDD_GETAVAILDRIVERMEMORY DdGetAvailDriverMemory;
|
||||
// NT callbacks
|
||||
DD_FREEDRIVERMEMORYDATA DdFreeDriverMemory;
|
||||
DD_SURFACECALLBACKS Surf;
|
||||
|
||||
// Palette callbacks
|
||||
PDD_PALCB_DESTROYPALETTE DdDestroyPalette;
|
||||
PDD_PALCB_SETENTRIES DdSetEntries;
|
||||
DD_PALETTECALLBACKS Pal;
|
||||
|
||||
// Color Control Callback
|
||||
PDD_COLORCB_COLORCONTROL DdControlColor;
|
||||
// Miscellaneous Callback
|
||||
PDD_GETAVAILDRIVERMEMORY DdGetAvailDriverMemory;
|
||||
// Kernel Callback
|
||||
PDD_KERNELCB_SYNCSURFACE DdSyncSurfaceData;
|
||||
PDD_KERNELCB_SYNCVIDEOPORT DdSyncVideoPortData;
|
||||
// NT-based Callback
|
||||
PDD_FLIPTOGDISURFACE DdFlipToGDISurface;
|
||||
PDD_FREEDRIVERMEMORY DdFreeDriverMemory;
|
||||
PDD_SETEXCLUSIVEMODE DdSetExclusiveMode;
|
||||
// Motion Compensation
|
||||
PDD_MOCOMPCB_BEGINFRAME DdMoCompBeginFrame;
|
||||
PDD_MOCOMPCB_CREATE DdMoCompCreate;
|
||||
PDD_MOCOMPCB_DESTROY DdMoCompDestroy;
|
||||
PDD_MOCOMPCB_ENDFRAME DdMoCompEndFrame;
|
||||
PDD_MOCOMPCB_GETCOMPBUFFINFO DdMoCompGetBuffInfo;
|
||||
PDD_MOCOMPCB_GETFORMATS DdMoCompGetFormats;
|
||||
PDD_MOCOMPCB_GETGUIDS DdMoCompGetGuids;
|
||||
PDD_MOCOMPCB_GETINTERNALINFO DdMoCompGetInternalInfo;
|
||||
PDD_MOCOMPCB_QUERYSTATUS DdMoCompQueryStatus;
|
||||
PDD_MOCOMPCB_RENDER DdMoCompRender;
|
||||
// Video Port Callback
|
||||
PDD_VPORTCB_CANCREATEVIDEOPORT DdVideoPortCanCreate;
|
||||
PDD_VPORTCB_COLORCONTROL DdVideoPortColorControl;
|
||||
PDD_VPORTCB_CREATEVIDEOPORT DdVideoPortCreate;
|
||||
PDD_VPORTCB_DESTROYVPORT DdVideoPortDestroy;
|
||||
PDD_VPORTCB_FLIP DdVideoPortFlip;
|
||||
PDD_VPORTCB_GETBANDWIDTH DdVideoPortGetBandwidth;
|
||||
PDD_VPORTCB_GETVPORTCONNECT DdVideoPortGetConnectInfo;
|
||||
PDD_VPORTCB_GETFIELD DdVideoPortGetField;
|
||||
PDD_VPORTCB_GETFLIPSTATUS DdVideoPortGetFlipStatus;
|
||||
PDD_VPORTCB_GETINPUTFORMATS DdVideoPortGetInputFormats;
|
||||
PDD_VPORTCB_GETLINE DdVideoPortGetLine;
|
||||
PDD_VPORTCB_GETOUTPUTFORMATS DdVideoPortGetOutputFormats;
|
||||
PDD_VPORTCB_GETSIGNALSTATUS DdVideoPortGetSignalStatus;
|
||||
PDD_VPORTCB_UPDATE DdVideoPortUpdate;
|
||||
PDD_VPORTCB_WAITFORSYNC DdVideoPortWaitForSync;
|
||||
// Notify Callback
|
||||
//LPDD_NOTIFYCALLBACK NotifyCallback
|
||||
|
||||
|
||||
// D3D Device context callbacks
|
||||
PD3DNTHAL_CONTEXTCREATECB D3dContextCreate;
|
||||
PD3DNTHAL_CONTEXTDESTROYCB D3dContextDestroy;
|
||||
|
@ -63,6 +88,9 @@ typedef struct
|
|||
PDD_SURFCB_DESTROYSURFACE DdDestroyD3DBuffer;
|
||||
PDD_SURFCB_LOCK DdLockD3DBuffer;
|
||||
PDD_SURFCB_UNLOCK DdUnlockD3DBuffer;
|
||||
|
||||
|
||||
|
||||
} DD_DIRECTDRAW, *PDD_DIRECTDRAW;
|
||||
|
||||
BOOL INTERNAL_CALL DD_Cleanup(PVOID pDD);
|
||||
|
|
|
@ -83,53 +83,67 @@ HANDLE STDCALL NtGdiDdCreateDirectDrawObject(
|
|||
|
||||
pDirectDraw->DrvGetDirectDrawInfo = pDC->DriverFunctions.GetDirectDrawInfo;
|
||||
pDirectDraw->DrvDisableDirectDraw = pDC->DriverFunctions.DisableDirectDraw;
|
||||
|
||||
|
||||
/* DD_CALLBACKS setup */
|
||||
pDirectDraw->DD.dwFlags = callbacks.dwFlags;
|
||||
|
||||
/* DestroyDriver Unsuse in win2k or higher */
|
||||
if (callbacks.dwFlags & DDHAL_CB32_DESTROYDRIVER)
|
||||
pDirectDraw->DD.DestroyDriver = callbacks.DestroyDriver;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_CREATESURFACE)
|
||||
pDirectDraw->DdCreateSurface = callbacks.CreateSurface;
|
||||
pDirectDraw->DD.CreateSurface = callbacks.CreateSurface;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_SETCOLORKEY)
|
||||
pDirectDraw->DdDrvSetColorKey = callbacks.SetColorKey;
|
||||
pDirectDraw->DD.SetColorKey = callbacks.SetColorKey;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_SETMODE)
|
||||
pDirectDraw->DD.SetMode = callbacks.SetMode;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK)
|
||||
pDirectDraw->DdWaitForVerticalBlank = callbacks.WaitForVerticalBlank;
|
||||
pDirectDraw->DD.WaitForVerticalBlank = callbacks.WaitForVerticalBlank;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_CANCREATESURFACE)
|
||||
pDirectDraw->DdCanCreateSurface = callbacks.CanCreateSurface;
|
||||
pDirectDraw->DD.CanCreateSurface = callbacks.CanCreateSurface;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_CREATEPALETTE)
|
||||
pDirectDraw->DdCreatePalette = callbacks.CreatePalette;
|
||||
pDirectDraw->DD.CreatePalette = callbacks.CreatePalette;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_GETSCANLINE)
|
||||
pDirectDraw->DdGetScanLine = callbacks.GetScanLine;
|
||||
pDirectDraw->DD.GetScanLine = callbacks.GetScanLine;
|
||||
if (callbacks.dwFlags & DDHAL_CB32_MAPMEMORY)
|
||||
pDirectDraw->DdMapMemory = callbacks.MapMemory;
|
||||
pDirectDraw->DD.MapMemory = callbacks.MapMemory;
|
||||
|
||||
/* Surface Callbacks */
|
||||
pDirectDraw->Surf.dwFlags = surface_callbacks.dwFlags;
|
||||
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_DESTROYSURFACE)
|
||||
pDirectDraw->DdDestroySurface = surface_callbacks.DestroySurface;
|
||||
pDirectDraw->Surf.DestroySurface = surface_callbacks.DestroySurface;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_FLIP)
|
||||
pDirectDraw->DdFlip = surface_callbacks.Flip;
|
||||
pDirectDraw->Surf.Flip = surface_callbacks.Flip;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_SETCLIPLIST)
|
||||
pDirectDraw->DdSetClipList = surface_callbacks.SetClipList;
|
||||
pDirectDraw->Surf.SetClipList = surface_callbacks.SetClipList;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_LOCK)
|
||||
pDirectDraw->DdLock = surface_callbacks.Lock;
|
||||
pDirectDraw->Surf.Lock = surface_callbacks.Lock;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_UNLOCK)
|
||||
pDirectDraw->DdUnlock = surface_callbacks.Unlock;
|
||||
pDirectDraw->Surf.Unlock = surface_callbacks.Unlock;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_BLT)
|
||||
pDirectDraw->DdBlt = surface_callbacks.Blt;
|
||||
pDirectDraw->Surf.Blt = surface_callbacks.Blt;
|
||||
/* DD Callbacks SetColorKey is same as Surface callback SetColorKey */
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_SETCOLORKEY)
|
||||
pDirectDraw->DdSetColorKey = surface_callbacks.SetColorKey;
|
||||
pDirectDraw->Surf.SetColorKey = surface_callbacks.SetColorKey;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_ADDATTACHEDSURFACE)
|
||||
pDirectDraw->DdAddAttachedSurface = surface_callbacks.AddAttachedSurface;
|
||||
pDirectDraw->Surf.AddAttachedSurface = surface_callbacks.AddAttachedSurface;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_GETBLTSTATUS)
|
||||
pDirectDraw->DdGetBltStatus = surface_callbacks.GetBltStatus;
|
||||
pDirectDraw->Surf.GetBltStatus = surface_callbacks.GetBltStatus;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_GETFLIPSTATUS)
|
||||
pDirectDraw->DdGetFlipStatus = surface_callbacks.GetFlipStatus;
|
||||
pDirectDraw->Surf.GetFlipStatus = surface_callbacks.GetFlipStatus;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY)
|
||||
pDirectDraw->DdUpdateOverlay = surface_callbacks.UpdateOverlay;
|
||||
pDirectDraw->Surf.UpdateOverlay = surface_callbacks.UpdateOverlay;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_SETOVERLAYPOSITION)
|
||||
pDirectDraw->DdSetOverlayPosition = surface_callbacks.SetOverlayPosition;
|
||||
pDirectDraw->Surf.SetOverlayPosition = surface_callbacks.SetOverlayPosition;
|
||||
if (surface_callbacks.dwFlags & DDHAL_SURFCB32_SETPALETTE)
|
||||
pDirectDraw->DdSetPalette = surface_callbacks.SetPalette;
|
||||
|
||||
pDirectDraw->Surf.SetPalette = surface_callbacks.SetPalette;
|
||||
|
||||
/* Palette Callbacks */
|
||||
pDirectDraw->Pal.dwFlags = palette_callbacks.dwFlags;
|
||||
if (palette_callbacks.dwFlags & DDHAL_PALCB32_DESTROYPALETTE)
|
||||
pDirectDraw->DdDestroyPalette = palette_callbacks.DestroyPalette;
|
||||
pDirectDraw->Pal.DestroyPalette = palette_callbacks.DestroyPalette;
|
||||
if (palette_callbacks.dwFlags & DDHAL_PALCB32_SETENTRIES)
|
||||
pDirectDraw->DdSetEntries = palette_callbacks.SetEntries;
|
||||
pDirectDraw->Pal.SetEntries = palette_callbacks.SetEntries;
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
DC_UnlockDc(pDC);
|
||||
|
@ -204,6 +218,264 @@ BOOL STDCALL NtGdiDdQueryDirectDrawObject(
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* DD CALLBACKS */
|
||||
/* FIXME NtGdiDdCreateSurface we do not call to ddCreateSurface */
|
||||
/************************************************************************/
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateSurface(
|
||||
HANDLE hDirectDrawLocal,
|
||||
HANDLE *hSurface,
|
||||
DDSURFACEDESC *puSurfaceDescription,
|
||||
DD_SURFACE_GLOBAL *puSurfaceGlobalData,
|
||||
DD_SURFACE_LOCAL *puSurfaceLocalData,
|
||||
DD_SURFACE_MORE *puSurfaceMoreData,
|
||||
PDD_CREATESURFACEDATA puCreateSurfaceData,
|
||||
HANDLE *puhSurface
|
||||
)
|
||||
{
|
||||
DWORD ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
/* DD_CREATESURFACEDATA surf; */
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->DD.dwFlags & DDHAL_CB32_CANCREATESURFACE))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
/*
|
||||
ddRVal = pDirectDraw->DD.CreateSurface(&surf);
|
||||
*/
|
||||
}
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdWaitForVerticalBlank(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->DD.dwFlags & DDHAL_CB32_WAITFORVERTICALBLANK))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->DD.WaitForVerticalBlank(puWaitForVerticalBlankData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdCanCreateSurface(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_CANCREATESURFACEDATA puCanCreateSurfaceData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->DD.dwFlags & DDHAL_CB32_CANCREATESURFACE))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->DD.CanCreateSurface(puCanCreateSurfaceData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdGetScanLine(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_GETSCANLINEDATA puGetScanLineData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->DD.dwFlags & DDHAL_CB32_GETSCANLINE))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->DD.GetScanLine(puGetScanLineData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* Surface CALLBACKS */
|
||||
/* FIXME */
|
||||
/* NtGdiDdDestroySurface */
|
||||
/************************************************************************/
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroySurface(
|
||||
HANDLE hSurface,
|
||||
BOOL bRealDestroy
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_DESTROYSURFACE))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
{
|
||||
/* DD_DESTROYSURFACEDATA DestroySurf; */
|
||||
UNIMPLEMENTED;
|
||||
/* ddRVal = pDirectDraw->Surf.DestroySurface(DestroySurf); */
|
||||
}
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdFlip(
|
||||
HANDLE hSurfaceCurrent,
|
||||
HANDLE hSurfaceTarget,
|
||||
HANDLE hSurfaceCurrentLeft,
|
||||
HANDLE hSurfaceTargetLeft,
|
||||
PDD_FLIPDATA puFlipData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceTarget, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_FLIP))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Flip(puFlipData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdLock(
|
||||
HANDLE hSurface,
|
||||
PDD_LOCKDATA puLockData,
|
||||
HDC hdcClip
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_LOCK))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Lock(puLockData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdSetColorKey(
|
||||
HANDLE hSurface,
|
||||
PDD_SETCOLORKEYDATA puSetColorKeyData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_SETCOLORKEY))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.SetColorKey(puSetColorKeyData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdBlt(
|
||||
HANDLE hSurfaceDest,
|
||||
HANDLE hSurfaceSrc,
|
||||
PDD_BLTDATA puBltData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDest, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_BLT))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Blt(puBltData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdUpdateOverlay(
|
||||
HANDLE hSurfaceDestination,
|
||||
HANDLE hSurfaceSource,
|
||||
PDD_UPDATEOVERLAYDATA puUpdateOverlayData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDestination, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.UpdateOverlay(puUpdateOverlayData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdUnlock(
|
||||
HANDLE hSurface,
|
||||
PDD_UNLOCKDATA puUnlockData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurface, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
if (pDirectDraw == NULL)
|
||||
return DDHAL_DRIVER_NOTHANDLED;
|
||||
|
||||
if (!(pDirectDraw->Surf.dwFlags & DDHAL_SURFCB32_UPDATEOVERLAY))
|
||||
ddRVal = DDHAL_DRIVER_NOTHANDLED;
|
||||
else
|
||||
ddRVal = pDirectDraw->Surf.Unlock(puUnlockData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* SURFACE OBJECT */
|
||||
/************************************************************************/
|
||||
|
@ -260,6 +532,13 @@ BOOL STDCALL NtGdiDdDeleteSurfaceObject(
|
|||
return GDIOBJ_FreeObj(hSurface, GDI_OBJECT_TYPE_DD_SURFACE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* DIRECT DRAW SURFACR END */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
BOOL STDCALL NtGdiDdAttachSurface(
|
||||
HANDLE hSurfaceFrom,
|
||||
|
@ -294,18 +573,12 @@ DWORD STDCALL NtGdiDdGetDriverInfo(
|
|||
PDD_GETDRIVERINFODATA puGetDriverInfoData)
|
||||
|
||||
{
|
||||
DWORD pdwNumHeaps;
|
||||
VIDEOMEMORY *pvmList = NULL;
|
||||
DWORD pdwNumFourCC;
|
||||
DWORD *pdwFourCC = NULL;
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
ddRVal = pDirectDraw->DrvGetDirectDrawInfo(
|
||||
pDirectDraw->Global.dhpdev,(PDD_HALINFO) puGetDriverInfoData,
|
||||
&pdwNumHeaps, pvmList, &pdwNumFourCC, pdwFourCC);
|
||||
|
||||
ddRVal = pDirectDraw->DdGetDriverInfo(puGetDriverInfoData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
|
@ -313,67 +586,14 @@ DWORD STDCALL NtGdiDdGetDriverInfo(
|
|||
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdWaitForVerticalBlank(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
ddRVal = pDirectDraw->DdWaitForVerticalBlank(puWaitForVerticalBlankData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdCanCreateSurface(
|
||||
HANDLE hDirectDrawLocal,
|
||||
PDD_CANCREATESURFACEDATA puCanCreateSurfaceData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDrawLocal, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
ddRVal = pDirectDraw->DdCanCreateSurface(puCanCreateSurfaceData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdBlt(
|
||||
HANDLE hSurfaceDest,
|
||||
HANDLE hSurfaceSrc,
|
||||
PDD_BLTDATA puBltData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hSurfaceDest, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
puBltData->lpDDDestSurface = hSurfaceDest;
|
||||
puBltData->lpDDSrcSurface = hSurfaceSrc;
|
||||
puBltData->lpDD = pDirectDraw->Local.lpGbl;
|
||||
|
||||
ddRVal = pDirectDraw->DdBlt(puBltData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
/* FIXME
|
||||
this call is not implement yet
|
||||
where to get the pointer DdGetAvailDriverMemory(puGetAvailDriverMemoryData
|
||||
for the call in NtGdiDdCreateDirectDrawObject `??
|
||||
or some where else ??
|
||||
*/
|
||||
|
||||
DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
||||
HANDLE hDirectDrawLocal,
|
||||
|
@ -394,4 +614,23 @@ DWORD STDCALL NtGdiDdGetAvailDriverMemory(
|
|||
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdSetExclusiveMode(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData
|
||||
)
|
||||
{
|
||||
DWORD ddRVal;
|
||||
|
||||
PDD_DIRECTDRAW pDirectDraw = GDIOBJ_LockObj(hDirectDraw, GDI_OBJECT_TYPE_DIRECTDRAW);
|
||||
|
||||
ddRVal = pDirectDraw->DdSetExclusiveMode(puSetExclusiveModeData);
|
||||
|
||||
GDIOBJ_UnlockObjByPtr(pDirectDraw);
|
||||
|
||||
return ddRVal;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -141,16 +141,7 @@ DWORD STDCALL NtGdiDdCreateD3DBuffer(
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HANDLE STDCALL NtGdiDdCreateDirectDrawObject(
|
||||
HDC hdc
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
HANDLE STDCALL NtGdiDdCreateMoComp(
|
||||
HANDLE hDirectDraw,
|
||||
|
@ -162,21 +153,7 @@ HANDLE STDCALL NtGdiDdCreateMoComp(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateSurface(
|
||||
HANDLE hDirectDraw,
|
||||
HANDLE *hSurface,
|
||||
DDSURFACEDESC *puSurfaceDescription,
|
||||
DD_SURFACE_GLOBAL *puSurfaceGlobalData,
|
||||
DD_SURFACE_LOCAL *puSurfaceLocalData,
|
||||
DD_SURFACE_MORE *puSurfaceMoreData,
|
||||
PDD_CREATESURFACEDATA puCreateSurfaceData,
|
||||
HANDLE *puhSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdCreateSurfaceEx(
|
||||
HANDLE hDirectDraw,
|
||||
|
@ -189,39 +166,7 @@ DWORD STDCALL NtGdiDdCreateSurfaceEx(
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
HANDLE STDCALL NtGdiDdCreateSurfaceObject(
|
||||
HANDLE hDirectDrawLocal,
|
||||
HANDLE hSurface,
|
||||
PDD_SURFACE_LOCAL puSurfaceLocal,
|
||||
PDD_SURFACE_MORE puSurfaceMore,
|
||||
PDD_SURFACE_GLOBAL puSurfaceGlobal,
|
||||
BOOL bComplete
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL STDCALL NtGdiDdDeleteDirectDrawObject(
|
||||
HANDLE hDirectDrawLocal
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL STDCALL NtGdiDdDeleteSurfaceObject(
|
||||
HANDLE hSurface
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
*/
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroyD3DBuffer(
|
||||
HANDLE hSurface
|
||||
|
@ -242,15 +187,7 @@ DWORD STDCALL NtGdiDdDestroyMoComp(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdDestroySurface(
|
||||
HANDLE hSurface,
|
||||
BOOL bRealDestroy
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdEndMoCompFrame(
|
||||
HANDLE hMoComp,
|
||||
|
@ -262,18 +199,7 @@ DWORD STDCALL NtGdiDdEndMoCompFrame(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdFlip(
|
||||
HANDLE hSurfaceCurrent,
|
||||
HANDLE hSurfaceTarget,
|
||||
HANDLE hSurfaceCurrentLeft,
|
||||
HANDLE hSurfaceTargetLeft,
|
||||
PDD_FLIPDATA puFlipData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdFlipToGDISurface(
|
||||
HANDLE hDirectDraw,
|
||||
|
@ -378,26 +304,9 @@ DWORD STDCALL NtGdiDdGetMoCompGuids(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdGetScanLine(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_GETSCANLINEDATA puGetScanLineData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdLock(
|
||||
HANDLE hSurface,
|
||||
PDD_LOCKDATA puLockData,
|
||||
HDC hdcClip
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdLockD3D(
|
||||
HANDLE hSurface,
|
||||
|
@ -459,25 +368,9 @@ BOOL STDCALL NtGdiDdResetVisrgn(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdSetColorKey(
|
||||
HANDLE hSurface,
|
||||
PDD_SETCOLORKEYDATA puSetColorKeyData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdSetExclusiveMode(
|
||||
HANDLE hDirectDraw,
|
||||
PDD_SETEXCLUSIVEMODEDATA puSetExclusiveModeData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL STDCALL NtGdiDdSetGammaRamp(
|
||||
HANDLE hDirectDraw,
|
||||
|
@ -509,15 +402,7 @@ VOID STDCALL NtGdiDdUnattachSurface(
|
|||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdUnlock(
|
||||
HANDLE hSurface,
|
||||
PDD_UNLOCKDATA puUnlockData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdUnlockD3D(
|
||||
HANDLE hSurface,
|
||||
|
@ -529,16 +414,7 @@ DWORD STDCALL NtGdiDdUnlockD3D(
|
|||
return 0;
|
||||
}
|
||||
|
||||
DWORD STDCALL NtGdiDdUpdateOverlay(
|
||||
HANDLE hSurfaceDestination,
|
||||
HANDLE hSurfaceSource,
|
||||
PDD_UPDATEOVERLAYDATA puUpdateOverlayData
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
DWORD STDCALL NtGdiDdAlphaBlt(VOID)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue