Don't return from overlapped ReadFile on EAGAIN and other non-fatal
[wine/gsoc_dplay.git] / dlls / ddraw / d3ddevice / main.c
blob7ba5530d03aa48392113554c2410542221f80116
1 /* Direct3D Device
2 (c) 1998 Lionel ULMER
4 This files contains all the common stuff for D3D devices.
5 */
7 #include "config.h"
9 #include <string.h>
11 #include "windef.h"
12 #include "winerror.h"
13 #include "wine/obj_base.h"
14 #include "ddraw.h"
15 #include "d3d.h"
16 #include "debugtools.h"
18 #include "d3d_private.h"
20 DEFAULT_DEBUG_CHANNEL(ddraw);
22 /*******************************************************************************
23 * IDirect3DDevice2
26 HRESULT WINAPI IDirect3DDevice2Impl_QueryInterface(
27 LPDIRECT3DDEVICE2 iface, REFIID riid, LPVOID* ppvObj
28 ) {
29 ICOM_THIS(IDirect3DDevice2Impl,iface);
30 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
31 return S_OK;
34 ULONG WINAPI IDirect3DDevice2Impl_AddRef(LPDIRECT3DDEVICE2 iface)
36 ICOM_THIS(IDirect3DDevice2Impl,iface);
37 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
39 return ++(This->ref);
44 ULONG WINAPI IDirect3DDevice2Impl_Release(LPDIRECT3DDEVICE2 iface)
46 ICOM_THIS(IDirect3DDevice2Impl,iface);
47 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
49 if (!--(This->ref)) {
50 HeapFree(GetProcessHeap(),0,This);
51 return 0;
53 return This->ref;
57 /*** IDirect3DDevice2 methods ***/
58 HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
59 LPDIRECT3DDEVICE2 iface, LPD3DDEVICEDESC lpdescsoft,
60 LPD3DDEVICEDESC lpdeschard
61 ) {
62 ICOM_THIS(IDirect3DDevice2Impl,iface);
63 FIXME("(%p)->(%p,%p), stub!\n", This, lpdescsoft, lpdeschard);
64 return DD_OK;
69 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
70 LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2
71 ) {
72 ICOM_THIS(IDirect3DDevice2Impl,iface);
73 FIXME("(%p)->(%p,%p): stub\n", This, lptex1, lptex2);
75 return DD_OK;
78 HRESULT WINAPI IDirect3DDevice2Impl_GetStats(
79 LPDIRECT3DDEVICE2 iface, LPD3DSTATS lpstats)
81 ICOM_THIS(IDirect3DDevice2Impl,iface);
82 FIXME("(%p)->(%p): stub\n", This, lpstats);
84 return DD_OK;
87 HRESULT WINAPI IDirect3DDevice2Impl_AddViewport(
88 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
89 ) {
90 ICOM_THIS(IDirect3DDevice2Impl,iface);
91 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
92 FIXME("(%p)->(%p): stub\n", This, ilpvp);
94 /* Adds this viewport to the viewport list */
95 ilpvp->next = This->viewport_list;
96 This->viewport_list = ilpvp;
98 return DD_OK;
101 HRESULT WINAPI IDirect3DDevice2Impl_DeleteViewport(
102 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp)
104 ICOM_THIS(IDirect3DDevice2Impl,iface);
105 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
106 IDirect3DViewport2Impl *cur, *prev;
107 FIXME("(%p)->(%p): stub\n", This, lpvp);
109 /* Finds this viewport in the list */
110 prev = NULL;
111 cur = This->viewport_list;
112 while ((cur != NULL) && (cur != ilpvp)) {
113 prev = cur;
114 cur = cur->next;
116 if (cur == NULL)
117 return DDERR_INVALIDOBJECT;
119 /* And remove it */
120 if (prev == NULL)
121 This->viewport_list = cur->next;
122 else
123 prev->next = cur->next;
124 return DD_OK;
127 HRESULT WINAPI IDirect3DDevice2Impl_NextViewport(
128 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp,
129 LPDIRECT3DVIEWPORT2* lplpvp, DWORD dwFlags
131 ICOM_THIS(IDirect3DDevice2Impl,iface);
132 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
133 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
134 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, lpvp, lpvp, dwFlags);
136 switch (dwFlags) {
137 case D3DNEXT_NEXT:
138 *ilplpvp = ilpvp->next;
139 break;
140 case D3DNEXT_HEAD:
141 *ilplpvp = This->viewport_list;
142 break;
143 case D3DNEXT_TAIL:
144 ilpvp = This->viewport_list;
145 while (ilpvp->next != NULL)
146 ilpvp = ilpvp->next;
147 *ilplpvp = ilpvp;
148 break;
149 default:
150 return DDERR_INVALIDPARAMS;
152 return DD_OK;
155 HRESULT WINAPI IDirect3DDevice2Impl_EnumTextureFormats(
156 LPDIRECT3DDEVICE2 iface, LPD3DENUMTEXTUREFORMATSCALLBACK cb, LPVOID context
158 ICOM_THIS(IDirect3DDevice2Impl,iface);
159 FIXME("(%p)->(%p,%p), stub!\n", This, cb, context);
161 return DD_OK; /* no texture formats in stub implementation */
166 HRESULT WINAPI IDirect3DDevice2Impl_BeginScene(LPDIRECT3DDEVICE2 iface)
168 ICOM_THIS(IDirect3DDevice2Impl,iface);
170 FIXME("(%p)->(), stub!\n", This);
172 /* Here, we should get the DDraw surface and 'copy it' to the
173 OpenGL surface.... */
174 return DD_OK;
177 HRESULT WINAPI IDirect3DDevice2Impl_EndScene(LPDIRECT3DDEVICE2 iface)
179 ICOM_THIS(IDirect3DDevice2Impl,iface);
180 FIXME("(%p)->(): stub\n", This);
181 return DD_OK;
184 HRESULT WINAPI IDirect3DDevice2Impl_GetDirect3D(
185 LPDIRECT3DDEVICE2 iface, LPDIRECT3D2 *lpd3d2
187 ICOM_THIS(IDirect3DDevice2Impl,iface);
188 TRACE("(%p)->(%p): stub\n", This, lpd3d2);
189 *lpd3d2 = (LPDIRECT3D2)This->d3d;
190 return DD_OK;
193 /*** DrawPrimitive API ***/
194 HRESULT WINAPI IDirect3DDevice2Impl_SetCurrentViewport(
195 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 lpvp
197 ICOM_THIS(IDirect3DDevice2Impl,iface);
198 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
199 FIXME("(%p)->(%p): stub\n", This, ilpvp);
201 /* Should check if the viewport was added or not */
203 /* Set this viewport as the current viewport */
204 This->current_viewport = ilpvp;
206 /* Activate this viewport */
207 ilpvp->device.active_device2 = This;
208 ilpvp->activate(ilpvp);
210 return DD_OK;
215 HRESULT WINAPI IDirect3DDevice2Impl_GetCurrentViewport(
216 LPDIRECT3DDEVICE2 iface, LPDIRECT3DVIEWPORT2 *lplpvp
218 ICOM_THIS(IDirect3DDevice2Impl,iface);
219 FIXME("(%p)->(%p): stub\n", This, lplpvp);
221 /* Returns the current viewport */
222 *lplpvp = (LPDIRECT3DVIEWPORT2)This->current_viewport;
224 return DD_OK;
227 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderTarget(
228 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE lpdds, DWORD dwFlags
230 ICOM_THIS(IDirect3DDevice2Impl,iface);
231 FIXME("(%p)->(%p,%08lx): stub\n", This, lpdds, dwFlags);
233 return DD_OK;
236 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderTarget(
237 LPDIRECT3DDEVICE2 iface, LPDIRECTDRAWSURFACE *lplpdds
239 ICOM_THIS(IDirect3DDevice2Impl,iface);
240 FIXME("(%p)->(%p): stub\n", This, lplpdds);
242 /* Returns the current rendering target (the surface on wich we render) */
243 *lplpdds = (LPDIRECTDRAWSURFACE)This->surface;
245 return DD_OK;
248 HRESULT WINAPI IDirect3DDevice2Impl_Begin(
249 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
250 DWORD dwFlags
252 ICOM_THIS(IDirect3DDevice2Impl,iface);
253 FIXME("(%p)->(%d,%d,%08lx): stub\n", This, d3dp, d3dv, dwFlags);
255 return DD_OK;
258 HRESULT WINAPI IDirect3DDevice2Impl_BeginIndexed(
259 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
260 LPVOID lpvert, DWORD numvert, DWORD dwFlags
262 ICOM_THIS(IDirect3DDevice2Impl,iface);
263 FIXME("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvert, numvert, dwFlags);
265 return DD_OK;
268 HRESULT WINAPI IDirect3DDevice2Impl_Vertex(
269 LPDIRECT3DDEVICE2 iface,LPVOID lpvert
271 ICOM_THIS(IDirect3DDevice2Impl,iface);
272 FIXME("(%p)->(%p): stub\n", This, lpvert);
274 return DD_OK;
277 HRESULT WINAPI IDirect3DDevice2Impl_Index(LPDIRECT3DDEVICE2 iface, WORD index) {
278 ICOM_THIS(IDirect3DDevice2Impl,iface);
279 FIXME("(%p)->(%d): stub\n", This, index);
281 return DD_OK;
286 HRESULT WINAPI IDirect3DDevice2Impl_End(LPDIRECT3DDEVICE2 iface,DWORD dwFlags) {
287 ICOM_THIS(IDirect3DDevice2Impl,iface);
288 FIXME("(%p)->(%08lx): stub\n", This, dwFlags);
290 return DD_OK;
293 HRESULT WINAPI IDirect3DDevice2Impl_GetRenderState(
294 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE d3drs, LPDWORD lprstate
296 ICOM_THIS(IDirect3DDevice2Impl,iface);
297 FIXME("(%p)->(%d,%p): stub\n", This, d3drs, lprstate);
299 return DD_OK;
302 HRESULT WINAPI IDirect3DDevice2Impl_SetRenderState(
303 LPDIRECT3DDEVICE2 iface, D3DRENDERSTATETYPE dwRenderStateType,
304 DWORD dwRenderState
306 ICOM_THIS(IDirect3DDevice2Impl,iface);
308 FIXME("(%p)->(%d,%ld)\n", This, dwRenderStateType, dwRenderState);
310 return DD_OK;
313 HRESULT WINAPI IDirect3DDevice2Impl_GetLightState(
314 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE d3dls, LPDWORD lplstate
316 ICOM_THIS(IDirect3DDevice2Impl,iface);
317 FIXME("(%p)->(%d,%p): stub\n", This, d3dls, lplstate);
319 return DD_OK;
324 HRESULT WINAPI IDirect3DDevice2Impl_SetLightState(
325 LPDIRECT3DDEVICE2 iface, D3DLIGHTSTATETYPE dwLightStateType,
326 DWORD dwLightState
328 ICOM_THIS(IDirect3DDevice2Impl,iface);
329 FIXME("(%p)->(%d,%08lx): stub\n", This, dwLightStateType, dwLightState);
330 return DD_OK;
333 HRESULT WINAPI IDirect3DDevice2Impl_SetTransform(
334 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
336 ICOM_THIS(IDirect3DDevice2Impl,iface);
337 FIXME("(%p)->(%d,%p),stub!\n",This,d3dts,lpmatrix);
338 return DD_OK;
343 HRESULT WINAPI IDirect3DDevice2Impl_GetTransform(
344 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
346 ICOM_THIS(IDirect3DDevice2Impl,iface);
347 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
349 return DD_OK;
354 HRESULT WINAPI IDirect3DDevice2Impl_MultiplyTransform(
355 LPDIRECT3DDEVICE2 iface, D3DTRANSFORMSTATETYPE d3dts, LPD3DMATRIX lpmatrix
357 ICOM_THIS(IDirect3DDevice2Impl,iface);
358 FIXME("(%p)->(%d,%p): stub\n", This, d3dts, lpmatrix);
360 return DD_OK;
363 HRESULT WINAPI IDirect3DDevice2Impl_DrawPrimitive(
364 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
365 LPVOID lpvertex, DWORD vertcount, DWORD dwFlags
367 ICOM_THIS(IDirect3DDevice2Impl,iface);
369 TRACE("(%p)->(%d,%d,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, dwFlags);
371 return D3D_OK;
374 HRESULT WINAPI IDirect3DDevice2Impl_DrawIndexedPrimitive(
375 LPDIRECT3DDEVICE2 iface, D3DPRIMITIVETYPE d3dp, D3DVERTEXTYPE d3dv,
376 LPVOID lpvertex, DWORD vertcount, LPWORD lpindexes, DWORD indexcount,
377 DWORD dwFlags
379 ICOM_THIS(IDirect3DDevice2Impl,iface);
380 TRACE("(%p)->(%d,%d,%p,%ld,%p,%ld,%08lx): stub\n", This, d3dp, d3dv, lpvertex, vertcount, lpindexes, indexcount, dwFlags);
381 return D3D_OK;
384 HRESULT WINAPI IDirect3DDevice2Impl_SetClipStatus(
385 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
387 ICOM_THIS(IDirect3DDevice2Impl,iface);
388 FIXME("(%p)->(%p): stub\n", This, lpcs);
390 return DD_OK;
393 HRESULT WINAPI IDirect3DDevice2Impl_GetClipStatus(
394 LPDIRECT3DDEVICE2 iface, LPD3DCLIPSTATUS lpcs
396 ICOM_THIS(IDirect3DDevice2Impl,iface);
397 FIXME("(%p)->(%p): stub\n", This, lpcs);
399 return DD_OK;
402 /*******************************************************************************
403 * Direct3DDevice
405 HRESULT WINAPI IDirect3DDeviceImpl_QueryInterface(
406 LPDIRECT3DDEVICE iface, REFIID riid, LPVOID* ppvObj
408 ICOM_THIS(IDirect3DDeviceImpl,iface);
409 FIXME("(%p)->(%s,%p): stub\n", This, debugstr_guid(riid),ppvObj);
410 return S_OK;
413 ULONG WINAPI IDirect3DDeviceImpl_AddRef(LPDIRECT3DDEVICE iface)
415 ICOM_THIS(IDirect3DDeviceImpl,iface);
416 TRACE("(%p)->()incrementing from %lu.\n", This, This->ref );
418 return ++(This->ref);
421 ULONG WINAPI IDirect3DDeviceImpl_Release(LPDIRECT3DDEVICE iface)
423 ICOM_THIS(IDirect3DDeviceImpl,iface);
424 FIXME("(%p)->() decrementing from %lu.\n", This, This->ref );
426 if (!--(This->ref)) {
427 HeapFree(GetProcessHeap(),0,This);
428 return 0;
430 return This->ref;
433 HRESULT WINAPI IDirect3DDeviceImpl_Initialize(
434 LPDIRECT3DDEVICE iface, LPDIRECT3D lpd3d, LPGUID lpGUID,
435 LPD3DDEVICEDESC lpd3ddvdesc
437 ICOM_THIS(IDirect3DDeviceImpl,iface);
438 TRACE("(%p)->(%p,%p,%p): stub\n", This, lpd3d,lpGUID, lpd3ddvdesc);
440 return DDERR_ALREADYINITIALIZED;
444 HRESULT WINAPI IDirect3DDeviceImpl_GetCaps(
445 LPDIRECT3DDEVICE iface, LPD3DDEVICEDESC lpD3DHWDevDesc,
446 LPD3DDEVICEDESC lpD3DSWDevDesc
448 ICOM_THIS(IDirect3DDeviceImpl,iface);
449 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DHWDevDesc, lpD3DSWDevDesc);
451 return DD_OK;
455 HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
456 LPDIRECT3DDEVICE iface, LPDIRECT3DTEXTURE lpD3DTex1,
457 LPDIRECT3DTEXTURE lpD3DTex2
459 ICOM_THIS(IDirect3DDeviceImpl,iface);
460 TRACE("(%p)->(%p,%p): stub\n", This, lpD3DTex1, lpD3DTex2);
462 return DD_OK;
465 HRESULT WINAPI IDirect3DDeviceImpl_CreateExecuteBuffer(
466 LPDIRECT3DDEVICE iface, LPD3DEXECUTEBUFFERDESC lpDesc,
467 LPDIRECT3DEXECUTEBUFFER *lplpDirect3DExecuteBuffer, IUnknown *pUnkOuter
469 ICOM_THIS(IDirect3DDeviceImpl,iface);
470 FIXME("(%p)->(%p,%p,%p): stub\n", This, lpDesc, lplpDirect3DExecuteBuffer, pUnkOuter);
471 return DD_OK;
474 HRESULT WINAPI IDirect3DDeviceImpl_GetStats(
475 LPDIRECT3DDEVICE iface, LPD3DSTATS lpD3DStats
477 ICOM_THIS(IDirect3DDeviceImpl,iface);
478 TRACE("(%p)->(%p): stub\n", This, lpD3DStats);
480 return DD_OK;
484 HRESULT WINAPI IDirect3DDeviceImpl_Execute(
485 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
486 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags
488 ICOM_THIS(IDirect3DDeviceImpl,iface);
489 TRACE("(%p)->(%p,%p,%08ld): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags);
491 /* Put this as the default context */
493 /* Execute... */
494 ((IDirect3DExecuteBufferImpl*)lpDirect3DExecuteBuffer)->execute(lpDirect3DExecuteBuffer, iface, (IDirect3DViewport*)lpDirect3DViewport);
496 return DD_OK;
499 HRESULT WINAPI IDirect3DDeviceImpl_AddViewport(
500 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
502 ICOM_THIS(IDirect3DDeviceImpl,iface);
503 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
504 FIXME("(%p)->(%p): stub\n", This, ilpvp);
506 /* Adds this viewport to the viewport list */
507 ilpvp->next = This->viewport_list;
508 This->viewport_list = ilpvp;
510 return DD_OK;
515 HRESULT WINAPI IDirect3DDeviceImpl_DeleteViewport(
516 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp
518 ICOM_THIS(IDirect3DDeviceImpl,iface);
519 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
520 IDirect3DViewport2Impl *cur, *prev;
521 FIXME("(%p)->(%p): stub\n", This, lpvp);
523 /* Finds this viewport in the list */
524 prev = NULL;
525 cur = This->viewport_list;
526 while ((cur != NULL) && (cur != ilpvp)) {
527 prev = cur;
528 cur = cur->next;
530 if (cur == NULL)
531 return DDERR_INVALIDOBJECT;
533 /* And remove it */
534 if (prev == NULL)
535 This->viewport_list = cur->next;
536 else
537 prev->next = cur->next;
538 return DD_OK;
541 HRESULT WINAPI IDirect3DDeviceImpl_NextViewport(
542 LPDIRECT3DDEVICE iface, LPDIRECT3DVIEWPORT lpvp,
543 LPDIRECT3DVIEWPORT* lplpvp, DWORD dwFlags
545 ICOM_THIS(IDirect3DDeviceImpl,iface);
546 IDirect3DViewport2Impl* ilpvp=(IDirect3DViewport2Impl*)lpvp;
547 IDirect3DViewport2Impl** ilplpvp=(IDirect3DViewport2Impl**)lplpvp;
548 FIXME("(%p)->(%p,%p,%08lx): stub\n", This, ilpvp, ilplpvp, dwFlags);
550 switch (dwFlags) {
551 case D3DNEXT_NEXT:
552 *ilplpvp = ilpvp->next;
553 break;
554 case D3DNEXT_HEAD:
555 *ilplpvp = This->viewport_list;
556 break;
557 case D3DNEXT_TAIL:
558 ilpvp = This->viewport_list;
559 while (ilpvp->next != NULL)
560 ilpvp = ilpvp->next;
561 *ilplpvp = ilpvp;
562 break;
563 default:
564 return DDERR_INVALIDPARAMS;
566 return DD_OK;
569 HRESULT WINAPI IDirect3DDeviceImpl_Pick(
570 LPDIRECT3DDEVICE iface, LPDIRECT3DEXECUTEBUFFER lpDirect3DExecuteBuffer,
571 LPDIRECT3DVIEWPORT lpDirect3DViewport, DWORD dwFlags, LPD3DRECT lpRect
573 ICOM_THIS(IDirect3DDeviceImpl,iface);
574 TRACE("(%p)->(%p,%p,%08lx,%p): stub\n", This, lpDirect3DExecuteBuffer, lpDirect3DViewport, dwFlags, lpRect);
575 return DD_OK;
578 HRESULT WINAPI IDirect3DDeviceImpl_GetPickRecords(
579 LPDIRECT3DDEVICE iface, LPDWORD lpCount, LPD3DPICKRECORD lpD3DPickRec
581 ICOM_THIS(IDirect3DDeviceImpl,iface);
582 TRACE("(%p)->(%p,%p): stub\n", This, lpCount, lpD3DPickRec);
584 return DD_OK;
588 HRESULT WINAPI IDirect3DDeviceImpl_EnumTextureFormats(
589 LPDIRECT3DDEVICE iface,LPD3DENUMTEXTUREFORMATSCALLBACK lpd3dEnumTextureProc,
590 LPVOID lpArg
592 ICOM_THIS(IDirect3DDeviceImpl,iface);
593 TRACE("(%p)->(%p,%p): stub\n", This, lpd3dEnumTextureProc, lpArg);
594 return D3D_OK;
598 HRESULT WINAPI IDirect3DDeviceImpl_CreateMatrix(
599 LPDIRECT3DDEVICE iface, LPD3DMATRIXHANDLE lpD3DMatHandle
602 ICOM_THIS(IDirect3DDeviceImpl,iface);
603 TRACE("(%p)->(%p)\n", This, lpD3DMatHandle);
605 *lpD3DMatHandle = (D3DMATRIXHANDLE) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(D3DMATRIX));
607 return DD_OK;
611 HRESULT WINAPI IDirect3DDeviceImpl_SetMatrix(
612 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle,
613 const LPD3DMATRIX lpD3DMatrix)
615 ICOM_THIS(IDirect3DDeviceImpl,iface);
616 TRACE("(%p)->(%08lx,%p)\n", This, d3dMatHandle, lpD3DMatrix);
618 dump_mat(lpD3DMatrix);
619 *((D3DMATRIX *) d3dMatHandle) = *lpD3DMatrix;
620 return DD_OK;
624 HRESULT WINAPI IDirect3DDeviceImpl_GetMatrix(
625 LPDIRECT3DDEVICE iface,D3DMATRIXHANDLE D3DMatHandle,LPD3DMATRIX lpD3DMatrix
627 ICOM_THIS(IDirect3DDeviceImpl,iface);
628 TRACE("(%p)->(%08lx,%p)\n", This, D3DMatHandle, lpD3DMatrix);
630 *lpD3DMatrix = *((D3DMATRIX *) D3DMatHandle);
632 return DD_OK;
636 HRESULT WINAPI IDirect3DDeviceImpl_DeleteMatrix(
637 LPDIRECT3DDEVICE iface, D3DMATRIXHANDLE d3dMatHandle
639 ICOM_THIS(IDirect3DDeviceImpl,iface);
640 TRACE("(%p)->(%08lx)\n", This, d3dMatHandle);
641 HeapFree(GetProcessHeap(),0, (void *) d3dMatHandle);
642 return DD_OK;
646 HRESULT WINAPI IDirect3DDeviceImpl_BeginScene(LPDIRECT3DDEVICE iface)
648 ICOM_THIS(IDirect3DDeviceImpl,iface);
649 FIXME("(%p)->(): stub\n", This);
650 return DD_OK;
653 /* This is for the moment copy-pasted from IDirect3DDevice2...
654 Will make a common function ... */
655 HRESULT WINAPI IDirect3DDeviceImpl_EndScene(LPDIRECT3DDEVICE iface)
657 ICOM_THIS(IDirect3DDeviceImpl,iface);
658 FIXME("(%p)->(): stub\n", This);
659 return DD_OK;
662 HRESULT WINAPI IDirect3DDeviceImpl_GetDirect3D(
663 LPDIRECT3DDEVICE iface, LPDIRECT3D *lpDirect3D
665 ICOM_THIS(IDirect3DDeviceImpl,iface);
666 TRACE("(%p)->(%p): stub\n", This, lpDirect3D);
668 return DD_OK;
671 /*******************************************************************************
672 * Direct3DDevice VTable
674 static ICOM_VTABLE(IDirect3DDevice) WINE_UNUSED d3d_d3ddevice_vtbl =
676 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
677 IDirect3DDeviceImpl_QueryInterface,
678 IDirect3DDeviceImpl_AddRef,
679 IDirect3DDeviceImpl_Release,
680 IDirect3DDeviceImpl_Initialize,
681 IDirect3DDeviceImpl_GetCaps,
682 IDirect3DDeviceImpl_SwapTextureHandles,
683 IDirect3DDeviceImpl_CreateExecuteBuffer,
684 IDirect3DDeviceImpl_GetStats,
685 IDirect3DDeviceImpl_Execute,
686 IDirect3DDeviceImpl_AddViewport,
687 IDirect3DDeviceImpl_DeleteViewport,
688 IDirect3DDeviceImpl_NextViewport,
689 IDirect3DDeviceImpl_Pick,
690 IDirect3DDeviceImpl_GetPickRecords,
691 IDirect3DDeviceImpl_EnumTextureFormats,
692 IDirect3DDeviceImpl_CreateMatrix,
693 IDirect3DDeviceImpl_SetMatrix,
694 IDirect3DDeviceImpl_GetMatrix,
695 IDirect3DDeviceImpl_DeleteMatrix,
696 IDirect3DDeviceImpl_BeginScene,
697 IDirect3DDeviceImpl_EndScene,
698 IDirect3DDeviceImpl_GetDirect3D,