2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native DirectDraw implementation
5 * FILE: subsys/win32k/ntddraw/dd.c
6 * PROGRAMER: Magnus Olsen (greatlord@reactos.org)
8 * 19/1-2006 Magnus Olsen
14 /************************************************************************/
15 /* NtGdiDdCreateSurface */
16 /************************************************************************/
19 NtGdiDdCreateSurface(HANDLE hDirectDrawLocal
,
21 DDSURFACEDESC
*puSurfaceDescription
,
22 DD_SURFACE_GLOBAL
*puSurfaceGlobalData
,
23 DD_SURFACE_LOCAL
*puSurfaceLocalData
,
24 DD_SURFACE_MORE
*puSurfaceMoreData
,
25 PDD_CREATESURFACEDATA puCreateSurfaceData
,
28 PGD_DDCREATESURFACE pfnDdCreateSurface
= (PGD_DDCREATESURFACE
)gpDxFuncs
[DXG_INDEX_DxDdCreateSurface
].pfn
;
30 if (pfnDdCreateSurface
== NULL
)
32 DPRINT1("Warning: no pfnDdCreateSurface\n");
33 return DDHAL_DRIVER_NOTHANDLED
;
36 DPRINT1("Calling dxg.sys pfnDdCreateSurface\n");
37 return pfnDdCreateSurface(hDirectDrawLocal
,hSurface
,puSurfaceDescription
,puSurfaceGlobalData
,
38 puSurfaceLocalData
,puSurfaceMoreData
,puCreateSurfaceData
,puhSurface
);
41 /************************************************************************/
42 /* NtGdiDdWaitForVerticalBlank */
43 /************************************************************************/
46 NtGdiDdWaitForVerticalBlank(HANDLE hDirectDraw
,
47 PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData
)
49 PGD_DXDDWAITFORVERTICALBLANK pfnDdWaitForVerticalBlank
= (PGD_DXDDWAITFORVERTICALBLANK
)gpDxFuncs
[DXG_INDEX_DxDdWaitForVerticalBlank
].pfn
;
51 if (pfnDdWaitForVerticalBlank
== NULL
)
53 DPRINT1("Warning: no pfnDdWaitForVerticalBlank\n");
54 return DDHAL_DRIVER_NOTHANDLED
;
57 DPRINT1("Calling dxg.sys pfnDdWaitForVerticalBlank\n");
58 return pfnDdWaitForVerticalBlank(hDirectDraw
, puWaitForVerticalBlankData
);
61 /************************************************************************/
62 /* NtGdiDdCanCreateSurface */
63 /************************************************************************/
66 NtGdiDdCanCreateSurface(HANDLE hDirectDrawLocal
,
67 PDD_CANCREATESURFACEDATA puCanCreateSurfaceData
)
69 PGD_DDCANCREATESURFACE pfnDdCanCreateSurface
= (PGD_DDCANCREATESURFACE
)gpDxFuncs
[DXG_INDEX_DxDdCanCreateSurface
].pfn
;
71 if (pfnDdCanCreateSurface
== NULL
)
73 DPRINT1("Warning: no pfnDdCanCreateSurface\n");
74 return DDHAL_DRIVER_NOTHANDLED
;
77 DPRINT1("Calling dxg.sys DdCanCreateSurface\n");
79 return pfnDdCanCreateSurface(hDirectDrawLocal
,puCanCreateSurfaceData
);
82 /************************************************************************/
83 /* NtGdiDdGetScanLine */
84 /************************************************************************/
87 NtGdiDdGetScanLine(HANDLE hDirectDrawLocal
,
88 PDD_GETSCANLINEDATA puGetScanLineData
)
90 PGD_DXDDGETSCANLINE pfnDdGetScanLine
= (PGD_DXDDGETSCANLINE
)gpDxFuncs
[DXG_INDEX_DxDdGetScanLine
].pfn
;
92 if (pfnDdGetScanLine
== NULL
)
94 DPRINT1("Warning: no pfnDdGetScanLine\n");
95 return DDHAL_DRIVER_NOTHANDLED
;
98 DPRINT1("Calling dxg.sys pfnDdGetScanLine\n");
100 return pfnDdGetScanLine(hDirectDrawLocal
,puGetScanLineData
);
104 /************************************************************************/
105 /* This is not part of the ddsurface interface but it have */
106 /* deal with the surface */
107 /************************************************************************/
109 /************************************************************************/
110 /* NtGdiDdCreateSurfaceEx */
111 /************************************************************************/
114 NtGdiDdCreateSurfaceEx(HANDLE hDirectDraw
,
116 DWORD dwSurfaceHandle
)
118 PGD_DXDDCREATESURFACEEX pfnDdCreateSurfaceEx
= (PGD_DXDDCREATESURFACEEX
)gpDxFuncs
[DXG_INDEX_DxDdCreateSurfaceEx
].pfn
;
120 if (pfnDdCreateSurfaceEx
== NULL
)
122 DPRINT1("Warning: no pfnDdCreateSurfaceEx\n");
123 return DDHAL_DRIVER_NOTHANDLED
;
126 DPRINT1("Calling dxg.sys pfnDdCreateSurfaceEx\n");
127 return pfnDdCreateSurfaceEx(hDirectDraw
,hSurface
,dwSurfaceHandle
);