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:
Magnus Olsen 2005-10-07 20:27:52 +00:00
parent a2e6df2fb3
commit f84e3fa9f1
3 changed files with 381 additions and 238 deletions

View file

@ -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);

View file

@ -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 */

View file

@ -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)