[MSIEXEC] Sync with Wine Staging 3.3. CORE-14434
[reactos.git] / win32ss / reactx / ntddraw / dd.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * PURPOSE: Native DirectDraw implementation
5 * FILE: win32ss/reactx/ntddraw/dd.c
6 * PROGRAMER: Magnus Olsen (greatlord@reactos.org)
7 * REVISION HISTORY:
8 * 19/1-2006 Magnus Olsen
9 */
10
11 #include <win32k.h>
12 #include <debug.h>
13
14 /************************************************************************/
15 /* NtGdiDdCreateSurface */
16 /************************************************************************/
17 DWORD
18 APIENTRY
19 NtGdiDdCreateSurface(HANDLE hDirectDrawLocal,
20 HANDLE *hSurface,
21 DDSURFACEDESC *puSurfaceDescription,
22 DD_SURFACE_GLOBAL *puSurfaceGlobalData,
23 DD_SURFACE_LOCAL *puSurfaceLocalData,
24 DD_SURFACE_MORE *puSurfaceMoreData,
25 PDD_CREATESURFACEDATA puCreateSurfaceData,
26 HANDLE *puhSurface)
27 {
28 PGD_DDCREATESURFACE pfnDdCreateSurface = (PGD_DDCREATESURFACE)gpDxFuncs[DXG_INDEX_DxDdCreateSurface].pfn;
29
30 if (pfnDdCreateSurface == NULL)
31 {
32 DPRINT1("Warning: no pfnDdCreateSurface\n");
33 return DDHAL_DRIVER_NOTHANDLED;
34 }
35
36 DPRINT1("Calling dxg.sys pfnDdCreateSurface\n");
37 return pfnDdCreateSurface(hDirectDrawLocal,hSurface,puSurfaceDescription,puSurfaceGlobalData,
38 puSurfaceLocalData,puSurfaceMoreData,puCreateSurfaceData,puhSurface);
39 }
40
41 /************************************************************************/
42 /* NtGdiDdWaitForVerticalBlank */
43 /************************************************************************/
44 DWORD
45 APIENTRY
46 NtGdiDdWaitForVerticalBlank(HANDLE hDirectDraw,
47 PDD_WAITFORVERTICALBLANKDATA puWaitForVerticalBlankData)
48 {
49 PGD_DXDDWAITFORVERTICALBLANK pfnDdWaitForVerticalBlank = (PGD_DXDDWAITFORVERTICALBLANK)gpDxFuncs[DXG_INDEX_DxDdWaitForVerticalBlank].pfn;
50
51 if (pfnDdWaitForVerticalBlank == NULL)
52 {
53 DPRINT1("Warning: no pfnDdWaitForVerticalBlank\n");
54 return DDHAL_DRIVER_NOTHANDLED;
55 }
56
57 DPRINT1("Calling dxg.sys pfnDdWaitForVerticalBlank\n");
58 return pfnDdWaitForVerticalBlank(hDirectDraw, puWaitForVerticalBlankData);
59 }
60
61 /************************************************************************/
62 /* NtGdiDdCanCreateSurface */
63 /************************************************************************/
64 DWORD
65 APIENTRY
66 NtGdiDdCanCreateSurface(HANDLE hDirectDrawLocal,
67 PDD_CANCREATESURFACEDATA puCanCreateSurfaceData)
68 {
69 PGD_DDCANCREATESURFACE pfnDdCanCreateSurface = (PGD_DDCANCREATESURFACE)gpDxFuncs[DXG_INDEX_DxDdCanCreateSurface].pfn;
70
71 if (pfnDdCanCreateSurface == NULL)
72 {
73 DPRINT1("Warning: no pfnDdCanCreateSurface\n");
74 return DDHAL_DRIVER_NOTHANDLED;
75 }
76
77 DPRINT1("Calling dxg.sys DdCanCreateSurface\n");
78
79 return pfnDdCanCreateSurface(hDirectDrawLocal,puCanCreateSurfaceData);
80 }
81
82 /************************************************************************/
83 /* NtGdiDdGetScanLine */
84 /************************************************************************/
85 DWORD
86 APIENTRY
87 NtGdiDdGetScanLine(HANDLE hDirectDrawLocal,
88 PDD_GETSCANLINEDATA puGetScanLineData)
89 {
90 PGD_DXDDGETSCANLINE pfnDdGetScanLine = (PGD_DXDDGETSCANLINE)gpDxFuncs[DXG_INDEX_DxDdGetScanLine].pfn;
91
92 if (pfnDdGetScanLine == NULL)
93 {
94 DPRINT1("Warning: no pfnDdGetScanLine\n");
95 return DDHAL_DRIVER_NOTHANDLED;
96 }
97
98 DPRINT1("Calling dxg.sys pfnDdGetScanLine\n");
99
100 return pfnDdGetScanLine(hDirectDrawLocal,puGetScanLineData);
101 }
102
103
104 /************************************************************************/
105 /* This is not part of the ddsurface interface but it */
106 /* deals with the surface */
107 /************************************************************************/
108
109 /************************************************************************/
110 /* NtGdiDdCreateSurfaceEx */
111 /************************************************************************/
112 DWORD
113 APIENTRY
114 NtGdiDdCreateSurfaceEx(HANDLE hDirectDraw,
115 HANDLE hSurface,
116 DWORD dwSurfaceHandle)
117 {
118 PGD_DXDDCREATESURFACEEX pfnDdCreateSurfaceEx = (PGD_DXDDCREATESURFACEEX)gpDxFuncs[DXG_INDEX_DxDdCreateSurfaceEx].pfn;
119
120 if (pfnDdCreateSurfaceEx == NULL)
121 {
122 DPRINT1("Warning: no pfnDdCreateSurfaceEx\n");
123 return DDHAL_DRIVER_NOTHANDLED;
124 }
125
126 DPRINT1("Calling dxg.sys pfnDdCreateSurfaceEx\n");
127 return pfnDdCreateSurfaceEx(hDirectDraw,hSurface,dwSurfaceHandle);
128
129 }
130