ReactOS 0.4.17-dev-966-gf06eace
device.c
Go to the documentation of this file.
1/*
2 * Implementation of IDirect3DRMDevice Interface
3 *
4 * Copyright 2011, 2012 André Hentschel
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21#include "d3drm_private.h"
22
24
25static inline struct d3drm_device *impl_from_IDirect3DRMDevice(IDirect3DRMDevice *iface)
26{
28}
29
30static inline struct d3drm_device *impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2 *iface)
31{
33}
34
35static inline struct d3drm_device *impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
36{
38}
39
41{
42 d3drm_object_cleanup((IDirect3DRMObject *)&device->IDirect3DRMDevice_iface, &device->obj);
43 if (device->device)
44 {
45 TRACE("Releasing attached ddraw interfaces.\n");
47 }
48 if (device->render_target)
49 IDirectDrawSurface_Release(device->render_target);
50 if (device->primary_surface)
51 {
52 TRACE("Releasing primary surface and attached clipper.\n");
53 IDirectDrawSurface_Release(device->primary_surface);
54 IDirectDrawClipper_Release(device->clipper);
55 }
56 if (device->ddraw)
57 {
58 IDirectDraw_Release(device->ddraw);
60 }
61 free(device);
62}
63
64static inline struct d3drm_device *impl_from_IDirect3DRMWinDevice(IDirect3DRMWinDevice *iface)
65{
67}
68
69HRESULT d3drm_device_create_surfaces_from_clipper(struct d3drm_device *object, IDirectDraw *ddraw, IDirectDrawClipper *clipper, int width, int height, IDirectDrawSurface **surface)
70{
71 DDSURFACEDESC surface_desc;
72 IDirectDrawSurface *primary_surface, *render_target;
74 HRESULT hr;
75
76 hr = IDirectDrawClipper_GetHWnd(clipper, &window);
77 if (FAILED(hr))
78 return hr;
79
80 hr = IDirectDraw_SetCooperativeLevel(ddraw, window, DDSCL_NORMAL);
81 if (FAILED(hr))
82 return hr;
83
84 memset(&surface_desc, 0, sizeof(surface_desc));
85 surface_desc.dwSize = sizeof(surface_desc);
86 surface_desc.dwFlags = DDSD_CAPS;
87 surface_desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
88 hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &primary_surface, NULL);
89 if (FAILED(hr))
90 return hr;
91 hr = IDirectDrawSurface_SetClipper(primary_surface, clipper);
92 if (FAILED(hr))
93 {
94 IDirectDrawSurface_Release(primary_surface);
95 return hr;
96 }
97
98 memset(&surface_desc, 0, sizeof(surface_desc));
99 surface_desc.dwSize = sizeof(surface_desc);
100 surface_desc.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
101 surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN | DDSCAPS_3DDEVICE;
102 surface_desc.dwWidth = width;
103 surface_desc.dwHeight = height;
104
105 hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &render_target, NULL);
106 if (FAILED(hr))
107 {
108 IDirectDrawSurface_Release(primary_surface);
109 return hr;
110 }
111
112 object->primary_surface = primary_surface;
113 object->clipper = clipper;
114 IDirectDrawClipper_AddRef(clipper);
115 *surface = render_target;
116
117 return D3DRM_OK;
118}
119
120HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw *ddraw, IDirectDrawSurface *surface,
121 BOOL create_z_surface)
122{
123 DDSCAPS caps = { DDSCAPS_ZBUFFER };
124 IDirectDrawSurface *ds = NULL;
125 IDirect3DDevice *device1 = NULL;
126 IDirect3DDevice2 *device2 = NULL;
127 IDirect3DDevice3 *device3 = NULL;
128 IDirect3D2 *d3d2 = NULL;
129 IDirect3D3 *d3d3 = NULL;
130 DDSURFACEDESC desc, surface_desc;
131 HRESULT hr;
132
133 device->ddraw = ddraw;
134 IDirectDraw_AddRef(ddraw);
136 device->render_target = surface;
137 IDirectDrawSurface_AddRef(surface);
138
139 desc.dwSize = sizeof(desc);
140 hr = IDirectDrawSurface_GetSurfaceDesc(surface, &desc);
141 if (FAILED(hr))
142 return hr;
143
144 if (!(desc.ddsCaps.dwCaps & DDSCAPS_3DDEVICE))
145 return DDERR_INVALIDCAPS;
146
147 hr = IDirectDrawSurface_GetAttachedSurface(surface, &caps, &ds);
148 if (SUCCEEDED(hr))
149 {
150 create_z_surface = FALSE;
151 IDirectDrawSurface_Release(ds);
152 ds = NULL;
153 }
154
155 if (create_z_surface)
156 {
157 memset(&surface_desc, 0, sizeof(surface_desc));
158 surface_desc.dwSize = sizeof(surface_desc);
159 surface_desc.dwFlags = DDSD_CAPS | DDSD_ZBUFFERBITDEPTH | DDSD_WIDTH | DDSD_HEIGHT;
160 surface_desc.ddsCaps.dwCaps = DDSCAPS_ZBUFFER;
161 surface_desc.dwZBufferBitDepth = 16;
162 surface_desc.dwWidth = desc.dwWidth;
163 surface_desc.dwHeight = desc.dwHeight;
164 hr = IDirectDraw_CreateSurface(ddraw, &surface_desc, &ds, NULL);
165 if (FAILED(hr))
166 return hr;
167
168 hr = IDirectDrawSurface_AddAttachedSurface(surface, ds);
169 IDirectDrawSurface_Release(ds);
170 if (FAILED(hr))
171 return hr;
172 }
173
174 if (version == 1)
175 hr = IDirectDrawSurface_QueryInterface(surface, &IID_IDirect3DRGBDevice, (void **)&device1);
176 else if (version == 2)
177 {
178 IDirectDraw_QueryInterface(ddraw, &IID_IDirect3D2, (void**)&d3d2);
179 hr = IDirect3D2_CreateDevice(d3d2, &IID_IDirect3DRGBDevice, surface, &device2);
180 IDirect3D2_Release(d3d2);
181 }
182 else
183 {
184 IDirectDrawSurface4 *surface4 = NULL;
185
186 IDirectDrawSurface_QueryInterface(surface, &IID_IDirectDrawSurface4, (void**)&surface4);
187 IDirectDraw_QueryInterface(ddraw, &IID_IDirect3D3, (void**)&d3d3);
188 hr = IDirect3D3_CreateDevice(d3d3, &IID_IDirect3DRGBDevice, surface4, &device3, NULL);
189 IDirectDrawSurface4_Release(surface4);
190 IDirect3D3_Release(d3d3);
191 }
192 if (FAILED(hr))
193 {
194 IDirectDrawSurface_DeleteAttachedSurface(surface, 0, ds);
195 return hr;
196 }
197
198 if (version == 2)
199 {
200 hr = IDirect3DDevice2_QueryInterface(device2, &IID_IDirect3DDevice, (void**)&device1);
202 if (FAILED(hr))
203 {
204 IDirectDrawSurface_DeleteAttachedSurface(surface, 0, ds);
205 return hr;
206 }
207 }
208 else if (version == 3)
209 {
210 hr = IDirect3DDevice3_QueryInterface(device3, &IID_IDirect3DDevice, (void**)&device1);
212 if (FAILED(hr))
213 {
214 IDirectDrawSurface_DeleteAttachedSurface(surface, 0, ds);
215 return hr;
216 }
217 }
218 device->device = device1;
219 device->width = desc.dwWidth;
220 device->height = desc.dwHeight;
221
222 return hr;
223}
224
225static HRESULT d3drm_device_set_ddraw_device_d3d(struct d3drm_device *device, IDirect3D *d3d, IDirect3DDevice *d3d_device)
226{
227 IDirectDraw *ddraw;
228 IDirectDrawSurface *surface;
229 IDirect3DDevice2 *d3d_device2 = NULL;
231 HRESULT hr;
232
233 /* AddRef these interfaces beforehand for the intentional leak on reinitialization. */
234 if (FAILED(hr = IDirect3D_QueryInterface(d3d, &IID_IDirectDraw, (void **)&ddraw)))
235 return hr;
238
239 /* Fetch render target and get width/height from there */
240 if (FAILED(hr = IDirect3DDevice_QueryInterface(d3d_device, &IID_IDirectDrawSurface, (void **)&surface)))
241 {
242 if (FAILED(hr = IDirect3DDevice_QueryInterface(d3d_device, &IID_IDirect3DDevice2, (void **)&d3d_device2)))
243 return hr;
244 hr = IDirect3DDevice2_GetRenderTarget(d3d_device2, &surface);
245 IDirect3DDevice2_Release(d3d_device2);
246 if (FAILED(hr))
247 return hr;
248 }
249
250 if (device->ddraw)
251 {
252 if (d3d_device2)
253 IDirectDrawSurface_Release(surface);
254 return D3DRMERR_BADOBJECT;
255 }
256
257 desc.dwSize = sizeof(desc);
258 hr = IDirectDrawSurface_GetSurfaceDesc(surface, &desc);
259 if (FAILED(hr))
260 {
261 IDirectDrawSurface_Release(surface);
262 return hr;
263 }
264
265 device->ddraw = ddraw;
266 device->width = desc.dwWidth;
267 device->height = desc.dwHeight;
268 device->device = d3d_device;
269 device->render_target = surface;
270
271 return hr;
272}
273
274static HRESULT WINAPI d3drm_device3_QueryInterface(IDirect3DRMDevice3 *iface, REFIID riid, void **out)
275{
277
278 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
279
280 if (IsEqualGUID(riid, &IID_IDirect3DRMDevice)
281 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
283 {
284 *out = &device->IDirect3DRMDevice_iface;
285 }
286 else if (IsEqualGUID(riid, &IID_IDirect3DRMDevice2))
287 {
288 *out = &device->IDirect3DRMDevice2_iface;
289 }
290 else if (IsEqualGUID(riid, &IID_IDirect3DRMDevice3))
291 {
292 *out = &device->IDirect3DRMDevice3_iface;
293 }
294 else if (IsEqualGUID(riid, &IID_IDirect3DRMWinDevice))
295 {
296 *out = &device->IDirect3DRMWinDevice_iface;
297 }
298 else
299 {
300 *out = NULL;
301 WARN("%s not implemented, returning CLASS_E_CLASSNOTAVAILABLE.\n", debugstr_guid(riid));
303 }
304
305 IUnknown_AddRef((IUnknown *)*out);
306 return S_OK;
307}
308
309static HRESULT WINAPI d3drm_device2_QueryInterface(IDirect3DRMDevice2 *iface, REFIID riid, void **out)
310{
312
313 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
314
315 return d3drm_device3_QueryInterface(&device->IDirect3DRMDevice3_iface, riid, out);
316}
317
318static HRESULT WINAPI d3drm_device1_QueryInterface(IDirect3DRMDevice *iface, REFIID riid, void **out)
319{
321
322 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
323
324 return d3drm_device3_QueryInterface(&device->IDirect3DRMDevice3_iface, riid, out);
325}
326
327static ULONG WINAPI d3drm_device3_AddRef(IDirect3DRMDevice3 *iface)
328{
330 ULONG refcount = InterlockedIncrement(&device->obj.ref);
331
332 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
333
334 return refcount;
335}
336
337static ULONG WINAPI d3drm_device2_AddRef(IDirect3DRMDevice2 *iface)
338{
340
341 TRACE("iface %p.\n", iface);
342
343 return d3drm_device3_AddRef(&device->IDirect3DRMDevice3_iface);
344}
345
346static ULONG WINAPI d3drm_device1_AddRef(IDirect3DRMDevice *iface)
347{
349
350 TRACE("iface %p.\n", iface);
351
352 return d3drm_device3_AddRef(&device->IDirect3DRMDevice3_iface);
353}
354
355static ULONG WINAPI d3drm_device3_Release(IDirect3DRMDevice3 *iface)
356{
358 ULONG refcount = InterlockedDecrement(&device->obj.ref);
359
360 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
361
362 if (!refcount)
364
365 return refcount;
366}
367
368static ULONG WINAPI d3drm_device2_Release(IDirect3DRMDevice2 *iface)
369{
371
372 TRACE("iface %p.\n", iface);
373
374 return d3drm_device3_Release(&device->IDirect3DRMDevice3_iface);
375}
376
377static ULONG WINAPI d3drm_device1_Release(IDirect3DRMDevice *iface)
378{
380
381 TRACE("iface %p.\n", iface);
382
383 return d3drm_device3_Release(&device->IDirect3DRMDevice3_iface);
384}
385
386static HRESULT WINAPI d3drm_device3_Clone(IDirect3DRMDevice3 *iface,
387 IUnknown *outer, REFIID iid, void **out)
388{
389 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
390
391 return E_NOTIMPL;
392}
393
394static HRESULT WINAPI d3drm_device2_Clone(IDirect3DRMDevice2 *iface,
395 IUnknown *outer, REFIID iid, void **out)
396{
398
399 TRACE("iface %p, outer %p, iid %s, out %p\n", iface, outer, debugstr_guid(iid), out);
400
401 return d3drm_device3_Clone(&device->IDirect3DRMDevice3_iface, outer, iid, out);
402}
403
404static HRESULT WINAPI d3drm_device1_Clone(IDirect3DRMDevice *iface,
405 IUnknown *outer, REFIID iid, void **out)
406{
408
409 TRACE("iface %p, outer %p, iid %s, out %p.\n", iface, outer, debugstr_guid(iid), out);
410
411 return d3drm_device3_Clone(&device->IDirect3DRMDevice3_iface, outer, iid, out);
412}
413
414static HRESULT WINAPI d3drm_device3_AddDestroyCallback(IDirect3DRMDevice3 *iface,
416{
418
419 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
420
422}
423
424static HRESULT WINAPI d3drm_device2_AddDestroyCallback(IDirect3DRMDevice2 *iface,
426{
428
429 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
430
431 return d3drm_device3_AddDestroyCallback(&device->IDirect3DRMDevice3_iface, cb, ctx);
432}
433
434static HRESULT WINAPI d3drm_device1_AddDestroyCallback(IDirect3DRMDevice *iface,
436{
438
439 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
440
441 return d3drm_device3_AddDestroyCallback(&device->IDirect3DRMDevice3_iface, cb, ctx);
442}
443
444static HRESULT WINAPI d3drm_device3_DeleteDestroyCallback(IDirect3DRMDevice3 *iface,
446{
448
449 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
450
452}
453
454static HRESULT WINAPI d3drm_device2_DeleteDestroyCallback(IDirect3DRMDevice2 *iface,
456{
458
459 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
460
461 return d3drm_device3_DeleteDestroyCallback(&device->IDirect3DRMDevice3_iface, cb, ctx);
462}
463
464static HRESULT WINAPI d3drm_device1_DeleteDestroyCallback(IDirect3DRMDevice *iface,
466{
468
469 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
470
471 return d3drm_device3_DeleteDestroyCallback(&device->IDirect3DRMDevice3_iface, cb, ctx);
472}
473
474static HRESULT WINAPI d3drm_device3_SetAppData(IDirect3DRMDevice3 *iface, DWORD data)
475{
477
478 TRACE("iface %p, data %#lx.\n", iface, data);
479
480 device->obj.appdata = data;
481
482 return D3DRM_OK;
483}
484
485static HRESULT WINAPI d3drm_device2_SetAppData(IDirect3DRMDevice2 *iface, DWORD data)
486{
488
489 TRACE("iface %p, data %#lx.\n", iface, data);
490
491 return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
492}
493
494static HRESULT WINAPI d3drm_device1_SetAppData(IDirect3DRMDevice *iface, DWORD data)
495{
497
498 TRACE("iface %p, data %#lx.\n", iface, data);
499
500 return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
501}
502
503static DWORD WINAPI d3drm_device3_GetAppData(IDirect3DRMDevice3 *iface)
504{
506
507 TRACE("iface %p.\n", iface);
508
509 return device->obj.appdata;
510}
511
512static DWORD WINAPI d3drm_device2_GetAppData(IDirect3DRMDevice2 *iface)
513{
515
516 TRACE("iface %p.\n", iface);
517
518 return d3drm_device3_GetAppData(&device->IDirect3DRMDevice3_iface);
519}
520
521static DWORD WINAPI d3drm_device1_GetAppData(IDirect3DRMDevice *iface)
522{
524
525 TRACE("iface %p.\n", iface);
526
527 return d3drm_device3_GetAppData(&device->IDirect3DRMDevice3_iface);
528}
529
530static HRESULT WINAPI d3drm_device3_SetName(IDirect3DRMDevice3 *iface, const char *name)
531{
533
534 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
535
536 return d3drm_object_set_name(&device->obj, name);
537}
538
539static HRESULT WINAPI d3drm_device2_SetName(IDirect3DRMDevice2 *iface, const char *name)
540{
542
543 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
544
545 return d3drm_device3_SetName(&device->IDirect3DRMDevice3_iface, name);
546}
547
548static HRESULT WINAPI d3drm_device1_SetName(IDirect3DRMDevice *iface, const char *name)
549{
551
552 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
553
554 return d3drm_device3_SetName(&device->IDirect3DRMDevice3_iface, name);
555}
556
557static HRESULT WINAPI d3drm_device3_GetName(IDirect3DRMDevice3 *iface, DWORD *size, char *name)
558{
560
561 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
562
563 return d3drm_object_get_name(&device->obj, size, name);
564}
565
566static HRESULT WINAPI d3drm_device2_GetName(IDirect3DRMDevice2 *iface, DWORD *size, char *name)
567{
569
570 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
571
572 return d3drm_device3_GetName(&device->IDirect3DRMDevice3_iface, size, name);
573}
574
575static HRESULT WINAPI d3drm_device1_GetName(IDirect3DRMDevice *iface, DWORD *size, char *name)
576{
578
579 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
580
581 return d3drm_device3_GetName(&device->IDirect3DRMDevice3_iface, size, name);
582}
583
584static HRESULT WINAPI d3drm_device3_GetClassName(IDirect3DRMDevice3 *iface, DWORD *size, char *name)
585{
587
588 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
589
591}
592
593static HRESULT WINAPI d3drm_device2_GetClassName(IDirect3DRMDevice2 *iface, DWORD *size, char *name)
594{
596
597 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
598
599 return d3drm_device3_GetClassName(&device->IDirect3DRMDevice3_iface, size, name);
600}
601
602static HRESULT WINAPI d3drm_device1_GetClassName(IDirect3DRMDevice *iface, DWORD *size, char *name)
603{
605
606 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
607
608 return d3drm_device3_GetClassName(&device->IDirect3DRMDevice3_iface, size, name);
609}
610
611static HRESULT WINAPI d3drm_device3_Init(IDirect3DRMDevice3 *iface, ULONG width, ULONG height)
612{
614
615 FIXME("iface %p, width %lu, height %lu stub!\n", iface, width, height);
616
617 device->height = height;
618 device->width = width;
619
620 return D3DRM_OK;
621}
622
623static HRESULT WINAPI d3drm_device2_Init(IDirect3DRMDevice2 *iface, ULONG width, ULONG height)
624{
626
627 TRACE("iface %p, width %lu, height %lu.\n", iface, width, height);
628
629 return d3drm_device3_Init(&device->IDirect3DRMDevice3_iface, width, height);
630}
631
632static HRESULT WINAPI d3drm_device1_Init(IDirect3DRMDevice *iface, ULONG width, ULONG height)
633{
635
636 TRACE("iface %p, width %lu, height %lu.\n", iface, width, height);
637
638 return d3drm_device3_Init(&device->IDirect3DRMDevice3_iface, width, height);
639}
640
641static HRESULT WINAPI d3drm_device3_InitFromD3D(IDirect3DRMDevice3 *iface,
642 IDirect3D *d3d, IDirect3DDevice *d3d_device)
643{
644 FIXME("iface %p, d3d %p, d3d_device %p stub!\n", iface, d3d, d3d_device);
645
646 if (!d3d || !d3d_device)
647 return D3DRMERR_BADVALUE;
648
649 return E_NOINTERFACE;
650}
651
652static HRESULT WINAPI d3drm_device2_InitFromD3D(IDirect3DRMDevice2 *iface,
653 IDirect3D *d3d, IDirect3DDevice *d3d_device)
654{
656
657 TRACE("iface %p, d3d %p, d3d_device %p.\n", iface, d3d, d3d_device);
658
659 return d3drm_device3_InitFromD3D(&device->IDirect3DRMDevice3_iface, d3d, d3d_device);
660}
661
662static HRESULT WINAPI d3drm_device1_InitFromD3D(IDirect3DRMDevice *iface,
663 IDirect3D *d3d, IDirect3DDevice *d3d_device)
664{
666
667 TRACE("iface %p, d3d %p, d3d_device %p.\n", iface, d3d, d3d_device);
668
669 if (!d3d || !d3d_device)
670 return D3DRMERR_BADVALUE;
671
673}
674
675static HRESULT WINAPI d3drm_device3_InitFromClipper(IDirect3DRMDevice3 *iface,
676 IDirectDrawClipper *clipper, GUID *guid, int width, int height)
677{
679
680 FIXME("iface %p, clipper %p, guid %s, width %d, height %d stub!\n",
682
683 device->height = height;
684 device->width = width;
685
686 return D3DRM_OK;
687}
688
689static HRESULT WINAPI d3drm_device2_InitFromClipper(IDirect3DRMDevice2 *iface,
690 IDirectDrawClipper *clipper, GUID *guid, int width, int height)
691{
693
694 TRACE("iface %p, clipper %p, guid %s, width %d, height %d.\n",
696
697 return d3drm_device3_InitFromClipper(&device->IDirect3DRMDevice3_iface,
699}
700
701static HRESULT WINAPI d3drm_device1_InitFromClipper(IDirect3DRMDevice *iface,
702 IDirectDrawClipper *clipper, GUID *guid, int width, int height)
703{
705
706 TRACE("iface %p, clipper %p, guid %s, width %d, height %d.\n",
708
709 return d3drm_device3_InitFromClipper(&device->IDirect3DRMDevice3_iface,
711}
712
713static HRESULT WINAPI d3drm_device3_Update(IDirect3DRMDevice3 *iface)
714{
715 FIXME("iface %p stub!\n", iface);
716
717 return D3DRM_OK;
718}
719
720static HRESULT WINAPI d3drm_device2_Update(IDirect3DRMDevice2 *iface)
721{
722 FIXME("iface %p stub!\n", iface);
723
724 return D3DRM_OK;
725}
726
727static HRESULT WINAPI d3drm_device1_Update(IDirect3DRMDevice *iface)
728{
729 FIXME("iface %p stub!\n", iface);
730
731 return D3DRM_OK;
732}
733
734static HRESULT WINAPI d3drm_device3_AddUpdateCallback(IDirect3DRMDevice3 *iface,
736{
737 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
738
739 return E_NOTIMPL;
740}
741
742static HRESULT WINAPI d3drm_device2_AddUpdateCallback(IDirect3DRMDevice2 *iface,
744{
745 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
746
747 return E_NOTIMPL;
748}
749
750static HRESULT WINAPI d3drm_device1_AddUpdateCallback(IDirect3DRMDevice *iface,
752{
753 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
754
755 return E_NOTIMPL;
756}
757
758static HRESULT WINAPI d3drm_device3_DeleteUpdateCallback(IDirect3DRMDevice3 *iface,
760{
761 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
762
763 return E_NOTIMPL;
764}
765
766static HRESULT WINAPI d3drm_device2_DeleteUpdateCallback(IDirect3DRMDevice2 *iface,
768{
769 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
770
771 return E_NOTIMPL;
772}
773
774static HRESULT WINAPI d3drm_device1_DeleteUpdateCallback(IDirect3DRMDevice *iface,
776{
777 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
778
779 return E_NOTIMPL;
780}
781
782static HRESULT WINAPI d3drm_device3_SetBufferCount(IDirect3DRMDevice3 *iface, DWORD count)
783{
784 FIXME("iface %p, count %lu stub!\n", iface, count);
785
786 return E_NOTIMPL;
787}
788
789static HRESULT WINAPI d3drm_device2_SetBufferCount(IDirect3DRMDevice2 *iface, DWORD count)
790{
792
793 TRACE("iface %p, count %lu.\n", iface, count);
794
795 return d3drm_device3_SetBufferCount(&device->IDirect3DRMDevice3_iface, count);
796}
797
798static HRESULT WINAPI d3drm_device1_SetBufferCount(IDirect3DRMDevice *iface, DWORD count)
799{
801
802 TRACE("iface %p, count %lu.\n", iface, count);
803
804 return d3drm_device3_SetBufferCount(&device->IDirect3DRMDevice3_iface, count);
805}
806
807static DWORD WINAPI d3drm_device3_GetBufferCount(IDirect3DRMDevice3 *iface)
808{
809 FIXME("iface %p stub!\n", iface);
810
811 return E_NOTIMPL;
812}
813
814static DWORD WINAPI d3drm_device2_GetBufferCount(IDirect3DRMDevice2 *iface)
815{
817
818 TRACE("iface %p.\n", iface);
819
820 return d3drm_device3_GetBufferCount(&device->IDirect3DRMDevice3_iface);
821}
822
823static DWORD WINAPI d3drm_device1_GetBufferCount(IDirect3DRMDevice *iface)
824{
826
827 TRACE("iface %p.\n", iface);
828
829 return d3drm_device3_GetBufferCount(&device->IDirect3DRMDevice3_iface);
830}
831
832static HRESULT WINAPI d3drm_device3_SetDither(IDirect3DRMDevice3 *iface, BOOL enable)
833{
835
836 TRACE("iface %p, enable %#x.\n", iface, enable);
837
838 device->dither = enable;
839
840 return D3DRM_OK;
841}
842
843static HRESULT WINAPI d3drm_device2_SetDither(IDirect3DRMDevice2 *iface, BOOL enable)
844{
846
847 TRACE("iface %p, enabled %#x.\n", iface, enable);
848
849 return d3drm_device3_SetDither(&device->IDirect3DRMDevice3_iface, enable);
850}
851
852static HRESULT WINAPI d3drm_device1_SetDither(IDirect3DRMDevice *iface, BOOL enable)
853{
855
856 TRACE("iface %p, enabled %#x.\n", iface, enable);
857
858 return d3drm_device3_SetDither(&device->IDirect3DRMDevice3_iface, enable);
859}
860
861static HRESULT WINAPI d3drm_device3_SetShades(IDirect3DRMDevice3 *iface, DWORD count)
862{
863 FIXME("iface %p, count %lu stub!\n", iface, count);
864
865 return E_NOTIMPL;
866}
867
868static HRESULT WINAPI d3drm_device2_SetShades(IDirect3DRMDevice2 *iface, DWORD count)
869{
871
872 TRACE("iface %p, count %lu.\n", iface, count);
873
874 return d3drm_device3_SetShades(&device->IDirect3DRMDevice3_iface, count);
875}
876
877static HRESULT WINAPI d3drm_device1_SetShades(IDirect3DRMDevice *iface, DWORD count)
878{
880
881 TRACE("iface %p, count %lu.\n", iface, count);
882
883 return d3drm_device3_SetShades(&device->IDirect3DRMDevice3_iface, count);
884}
885
887{
889
890 TRACE("iface %p, quality %lu.\n", iface, quality);
891
892 device->quality = quality;
893
894 return D3DRM_OK;
895}
896
898{
900
901 TRACE("iface %p, quality %lu.\n", iface, quality);
902
903 return d3drm_device3_SetQuality(&device->IDirect3DRMDevice3_iface, quality);
904}
905
907{
909
910 TRACE("iface %p, quality %lu.\n", iface, quality);
911
912 return d3drm_device3_SetQuality(&device->IDirect3DRMDevice3_iface, quality);
913}
914
916{
917 FIXME("iface %p, quality %u stub!\n", iface, quality);
918
919 return E_NOTIMPL;
920}
921
923{
925
926 TRACE("iface %p, quality %u.\n", iface, quality);
927
928 return d3drm_device3_SetTextureQuality(&device->IDirect3DRMDevice3_iface, quality);
929}
930
932{
934
935 TRACE("iface %p, quality %u.\n", iface, quality);
936
937 return d3drm_device3_SetTextureQuality(&device->IDirect3DRMDevice3_iface, quality);
938}
939
940static HRESULT WINAPI d3drm_device3_GetViewports(IDirect3DRMDevice3 *iface, IDirect3DRMViewportArray **array)
941{
942 FIXME("iface %p, array %p stub!\n", iface, array);
943
944 return E_NOTIMPL;
945}
946
947static HRESULT WINAPI d3drm_device2_GetViewports(IDirect3DRMDevice2 *iface, IDirect3DRMViewportArray **array)
948{
950
951 TRACE("iface %p, array %p.\n", iface, array);
952
953 return d3drm_device3_GetViewports(&device->IDirect3DRMDevice3_iface, array);
954}
955
956static HRESULT WINAPI d3drm_device1_GetViewports(IDirect3DRMDevice *iface, IDirect3DRMViewportArray **array)
957{
959
960 TRACE("iface %p, array %p.\n", iface, array);
961
962 return d3drm_device3_GetViewports(&device->IDirect3DRMDevice3_iface, array);
963}
964
965static BOOL WINAPI d3drm_device3_GetDither(IDirect3DRMDevice3 *iface)
966{
968
969 TRACE("iface %p.\n", iface);
970
971 return device->dither;
972}
973
974static BOOL WINAPI d3drm_device2_GetDither(IDirect3DRMDevice2 *iface)
975{
977
978 TRACE("iface %p.\n", iface);
979
980 return d3drm_device3_GetDither(&device->IDirect3DRMDevice3_iface);
981}
982
983static BOOL WINAPI d3drm_device1_GetDither(IDirect3DRMDevice *iface)
984{
986
987 TRACE("iface %p.\n", iface);
988
989 return d3drm_device3_GetDither(&device->IDirect3DRMDevice3_iface);
990}
991
992static DWORD WINAPI d3drm_device3_GetShades(IDirect3DRMDevice3 *iface)
993{
994 FIXME("iface %p stub!\n", iface);
995
996 return E_NOTIMPL;
997}
998
999static DWORD WINAPI d3drm_device2_GetShades(IDirect3DRMDevice2 *iface)
1000{
1002
1003 TRACE("iface %p.\n", iface);
1004
1005 return d3drm_device3_GetShades(&device->IDirect3DRMDevice3_iface);
1006}
1007
1008static DWORD WINAPI d3drm_device1_GetShades(IDirect3DRMDevice *iface)
1009{
1011
1012 TRACE("iface %p.\n", iface);
1013
1014 return d3drm_device3_GetShades(&device->IDirect3DRMDevice3_iface);
1015}
1016
1017static DWORD WINAPI d3drm_device3_GetHeight(IDirect3DRMDevice3 *iface)
1018{
1020
1021 TRACE("iface %p.\n", iface);
1022
1023 return device->height;
1024}
1025
1026static DWORD WINAPI d3drm_device2_GetHeight(IDirect3DRMDevice2 *iface)
1027{
1029
1030 TRACE("iface %p.\n", iface);
1031
1032 return d3drm_device3_GetHeight(&device->IDirect3DRMDevice3_iface);
1033}
1034
1035static DWORD WINAPI d3drm_device1_GetHeight(IDirect3DRMDevice *iface)
1036{
1038
1039 TRACE("iface %p.\n", iface);
1040
1041 return d3drm_device3_GetHeight(&device->IDirect3DRMDevice3_iface);
1042}
1043
1044static DWORD WINAPI d3drm_device3_GetWidth(IDirect3DRMDevice3 *iface)
1045{
1047
1048 TRACE("iface %p.\n", iface);
1049
1050 return device->width;
1051}
1052
1053static DWORD WINAPI d3drm_device2_GetWidth(IDirect3DRMDevice2 *iface)
1054{
1056
1057 TRACE("iface %p.\n", iface);
1058
1059 return d3drm_device3_GetWidth(&device->IDirect3DRMDevice3_iface);
1060}
1061
1062static DWORD WINAPI d3drm_device1_GetWidth(IDirect3DRMDevice *iface)
1063{
1065
1066 TRACE("iface %p.\n", iface);
1067
1068 return d3drm_device3_GetWidth(&device->IDirect3DRMDevice3_iface);
1069}
1070
1071static DWORD WINAPI d3drm_device3_GetTrianglesDrawn(IDirect3DRMDevice3 *iface)
1072{
1073 FIXME("iface %p stub!\n", iface);
1074
1075 return E_NOTIMPL;
1076}
1077
1078static DWORD WINAPI d3drm_device2_GetTrianglesDrawn(IDirect3DRMDevice2 *iface)
1079{
1081
1082 TRACE("iface %p.\n", iface);
1083
1084 return d3drm_device3_GetTrianglesDrawn(&device->IDirect3DRMDevice3_iface);
1085}
1086
1087static DWORD WINAPI d3drm_device1_GetTrianglesDrawn(IDirect3DRMDevice *iface)
1088{
1090
1091 TRACE("iface %p.\n", iface);
1092
1093 return d3drm_device3_GetTrianglesDrawn(&device->IDirect3DRMDevice3_iface);
1094}
1095
1096static DWORD WINAPI d3drm_device3_GetWireframeOptions(IDirect3DRMDevice3 *iface)
1097{
1098 FIXME("iface %p stub!\n", iface);
1099
1100 return E_NOTIMPL;
1101}
1102
1103static DWORD WINAPI d3drm_device2_GetWireframeOptions(IDirect3DRMDevice2 *iface)
1104{
1106
1107 TRACE("iface %p.\n", iface);
1108
1109 return d3drm_device3_GetWireframeOptions(&device->IDirect3DRMDevice3_iface);
1110}
1111
1112static DWORD WINAPI d3drm_device1_GetWireframeOptions(IDirect3DRMDevice *iface)
1113{
1115
1116 TRACE("iface %p.\n", iface);
1117
1118 return d3drm_device3_GetWireframeOptions(&device->IDirect3DRMDevice3_iface);
1119}
1120
1121static D3DRMRENDERQUALITY WINAPI d3drm_device3_GetQuality(IDirect3DRMDevice3 *iface)
1122{
1124
1125 TRACE("iface %p.\n", iface);
1126
1127 return device->quality;
1128}
1129
1130static D3DRMRENDERQUALITY WINAPI d3drm_device2_GetQuality(IDirect3DRMDevice2 *iface)
1131{
1133
1134 TRACE("iface %p.\n", iface);
1135
1136 return d3drm_device3_GetQuality(&device->IDirect3DRMDevice3_iface);
1137}
1138
1140{
1142
1143 TRACE("iface %p.\n", iface);
1144
1145 return d3drm_device3_GetQuality(&device->IDirect3DRMDevice3_iface);
1146}
1147
1148static D3DCOLORMODEL WINAPI d3drm_device3_GetColorModel(IDirect3DRMDevice3 *iface)
1149{
1150 FIXME("iface %p stub!\n", iface);
1151
1152 return E_NOTIMPL;
1153}
1154
1155static D3DCOLORMODEL WINAPI d3drm_device2_GetColorModel(IDirect3DRMDevice2 *iface)
1156{
1158
1159 TRACE("iface %p.\n", iface);
1160
1161 return d3drm_device3_GetColorModel(&device->IDirect3DRMDevice3_iface);
1162}
1163
1164static D3DCOLORMODEL WINAPI d3drm_device1_GetColorModel(IDirect3DRMDevice *iface)
1165{
1167
1168 TRACE("iface %p.\n", iface);
1169
1170 return d3drm_device3_GetColorModel(&device->IDirect3DRMDevice3_iface);
1171}
1172
1174{
1175 FIXME("iface %p stub!\n", iface);
1176
1177 return E_NOTIMPL;
1178}
1179
1181{
1183
1184 TRACE("iface %p.\n", iface);
1185
1186 return d3drm_device3_GetTextureQuality(&device->IDirect3DRMDevice3_iface);
1187}
1188
1190{
1192
1193 TRACE("iface %p.\n", iface);
1194
1195 return d3drm_device3_GetTextureQuality(&device->IDirect3DRMDevice3_iface);
1196}
1197
1198static HRESULT WINAPI d3drm_device3_GetDirect3DDevice(IDirect3DRMDevice3 *iface, IDirect3DDevice **d3d_device)
1199{
1201 TRACE("iface %p, d3d_device %p!\n", iface, d3d_device);
1202
1203 *d3d_device = device->device;
1205
1206 return D3DRM_OK;
1207}
1208
1209static HRESULT WINAPI d3drm_device2_GetDirect3DDevice(IDirect3DRMDevice2 *iface, IDirect3DDevice **d3d_device)
1210{
1212
1213 TRACE("iface %p, d3d_device %p.\n", iface, d3d_device);
1214
1215 return d3drm_device3_GetDirect3DDevice(&device->IDirect3DRMDevice3_iface, d3d_device);
1216}
1217
1218static HRESULT WINAPI d3drm_device1_GetDirect3DDevice(IDirect3DRMDevice *iface, IDirect3DDevice **d3d_device)
1219{
1221
1222 TRACE("iface %p, d3d_device %p.\n", iface, d3d_device);
1223
1224 return d3drm_device3_GetDirect3DDevice(&device->IDirect3DRMDevice3_iface, d3d_device);
1225}
1226
1227static HRESULT WINAPI d3drm_device3_InitFromD3D2(IDirect3DRMDevice3 *iface,
1228 IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device)
1229{
1231 IDirect3D *d3d1;
1232 IDirect3DDevice *d3d_device1;
1233 HRESULT hr;
1234
1235 TRACE("iface %p, d3d %p, d3d_device %p.\n", iface, d3d, d3d_device);
1236
1237 if (!d3d || !d3d_device)
1238 return D3DRMERR_BADVALUE;
1239
1240 if (FAILED(hr = IDirect3D2_QueryInterface(d3d, &IID_IDirect3D, (void **)&d3d1)))
1241 return hr;
1242 if (FAILED(hr = IDirect3DDevice2_QueryInterface(d3d_device, &IID_IDirect3DDevice, (void **)&d3d_device1)))
1243 {
1244 IDirect3D_Release(d3d1);
1245 return hr;
1246 }
1247
1248 hr = d3drm_device_set_ddraw_device_d3d(device, d3d1, d3d_device1);
1249 IDirect3D_Release(d3d1);
1250 IDirect3DDevice_Release(d3d_device1);
1251
1252 return hr;
1253}
1254
1255static HRESULT WINAPI d3drm_device2_InitFromD3D2(IDirect3DRMDevice2 *iface,
1256 IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device)
1257{
1259
1260 TRACE("iface %p, d3d %p, d3d_device %p.\n", iface, d3d, d3d_device);
1261
1262 return d3drm_device3_InitFromD3D2(&device->IDirect3DRMDevice3_iface, d3d, d3d_device);
1263}
1264
1265static HRESULT WINAPI d3drm_device3_InitFromSurface(IDirect3DRMDevice3 *iface,
1266 GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *backbuffer)
1267{
1268 FIXME("iface %p, guid %s, ddraw %p, backbuffer %p stub!\n",
1269 iface, debugstr_guid(guid), ddraw, backbuffer);
1270
1271 return E_NOTIMPL;
1272}
1273
1274static HRESULT WINAPI d3drm_device2_InitFromSurface(IDirect3DRMDevice2 *iface,
1275 GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *backbuffer)
1276{
1278
1279 TRACE("iface %p, guid %s, ddraw %p, backbuffer %p.\n",
1280 iface, debugstr_guid(guid), ddraw, backbuffer);
1281
1282 return d3drm_device3_InitFromSurface(&device->IDirect3DRMDevice3_iface, guid, ddraw, backbuffer);
1283}
1284
1285static HRESULT WINAPI d3drm_device3_SetRenderMode(IDirect3DRMDevice3 *iface, DWORD flags)
1286{
1288
1289 TRACE("iface %p, flags %#lx.\n", iface, flags);
1290
1291 device->rendermode = flags;
1292
1293 return D3DRM_OK;
1294}
1295
1296static HRESULT WINAPI d3drm_device2_SetRenderMode(IDirect3DRMDevice2 *iface, DWORD flags)
1297{
1299
1300 TRACE("iface %p, flags %#lx.\n", iface, flags);
1301
1302 return d3drm_device3_SetRenderMode(&device->IDirect3DRMDevice3_iface, flags);
1303}
1304
1305static DWORD WINAPI d3drm_device3_GetRenderMode(IDirect3DRMDevice3 *iface)
1306{
1308
1309 TRACE("iface %p.\n", iface);
1310
1311 return device->rendermode;
1312}
1313
1314static DWORD WINAPI d3drm_device2_GetRenderMode(IDirect3DRMDevice2 *iface)
1315{
1317
1318 TRACE("iface %p.\n", iface);
1319
1320 return d3drm_device3_GetRenderMode(&device->IDirect3DRMDevice3_iface);
1321}
1322
1323static HRESULT WINAPI d3drm_device3_GetDirect3DDevice2(IDirect3DRMDevice3 *iface, IDirect3DDevice2 **d3d_device)
1324{
1326
1327 TRACE("iface %p, d3d_device %p.\n", iface, d3d_device);
1328
1329 if (FAILED(IDirect3DDevice_QueryInterface(device->device, &IID_IDirect3DDevice2, (void**)d3d_device)))
1330 return D3DRMERR_BADOBJECT;
1331
1332 return D3DRM_OK;
1333}
1334
1335static HRESULT WINAPI d3drm_device2_GetDirect3DDevice2(IDirect3DRMDevice2 *iface, IDirect3DDevice2 **d3d_device)
1336{
1338
1339 TRACE("iface %p, d3d_device %p.\n", iface, d3d_device);
1340
1341 IDirect3DDevice_QueryInterface(device->device, &IID_IDirect3DDevice2, (void**)d3d_device);
1342
1343 /* d3drm returns D3DRM_OK even if the call fails. */
1344 return D3DRM_OK;
1345}
1346
1348 DWORD bitdepths, DWORD flags, DDPIXELFORMAT *pf)
1349{
1350 FIXME("iface %p, bitdepths %lu, flags %#lx, pf %p stub!\n", iface, bitdepths, flags, pf);
1351
1352 return E_NOTIMPL;
1353}
1354
1355static HRESULT WINAPI d3drm_device3_RenderStateChange(IDirect3DRMDevice3 *iface,
1357{
1358 FIXME("iface %p, state %#x, value %#lx, flags %#lx stub!\n", iface, state, value, flags);
1359
1360 return E_NOTIMPL;
1361}
1362
1363static HRESULT WINAPI d3drm_device3_LightStateChange(IDirect3DRMDevice3 *iface,
1365{
1366 FIXME("iface %p, state %#x, value %#lx, flags %#lx stub!\n", iface, state, value, flags);
1367
1368 return E_NOTIMPL;
1369}
1370
1371static HRESULT WINAPI d3drm_device3_GetStateChangeOptions(IDirect3DRMDevice3 *iface,
1372 DWORD state_class, DWORD state_idx, DWORD *flags)
1373{
1374 FIXME("iface %p, state_class %#lx, state_idx %#lx, flags %p stub!\n",
1375 iface, state_class, state_idx, flags);
1376
1377 return E_NOTIMPL;
1378}
1379
1380static HRESULT WINAPI d3drm_device3_SetStateChangeOptions(IDirect3DRMDevice3 *iface,
1381 DWORD state_class, DWORD state_idx, DWORD flags)
1382{
1383 FIXME("iface %p, state_class %#lx, state_idx %#lx, flags %#lx stub!\n",
1384 iface, state_class, state_idx, flags);
1385
1386 return E_NOTIMPL;
1387}
1388
1389static const struct IDirect3DRMDevice3Vtbl d3drm_device3_vtbl =
1390{
1435};
1436
1437static const struct IDirect3DRMDevice2Vtbl d3drm_device2_vtbl =
1438{
1478};
1479
1480static const struct IDirect3DRMDeviceVtbl d3drm_device1_vtbl =
1481{
1516};
1517
1518static HRESULT WINAPI d3drm_device_win_QueryInterface(IDirect3DRMWinDevice *iface, REFIID riid, void **out)
1519{
1521
1522 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
1523
1524 return d3drm_device3_QueryInterface(&device->IDirect3DRMDevice3_iface, riid, out);
1525}
1526
1527static ULONG WINAPI d3drm_device_win_AddRef(IDirect3DRMWinDevice *iface)
1528{
1530
1531 TRACE("iface %p.\n", iface);
1532
1533 return d3drm_device3_AddRef(&device->IDirect3DRMDevice3_iface);
1534}
1535
1536static ULONG WINAPI d3drm_device_win_Release(IDirect3DRMWinDevice *iface)
1537{
1539
1540 TRACE("iface %p.\n", iface);
1541
1542 return d3drm_device3_Release(&device->IDirect3DRMDevice3_iface);
1543}
1544
1545static HRESULT WINAPI d3drm_device_win_Clone(IDirect3DRMWinDevice *iface,
1546 IUnknown *outer, REFIID iid, void **out)
1547{
1549
1550 TRACE("iface %p, outer %p, iid %s, out %p\n", iface, outer, debugstr_guid(iid), out);
1551
1552 return d3drm_device3_Clone(&device->IDirect3DRMDevice3_iface, outer, iid, out);
1553}
1554
1555static HRESULT WINAPI d3drm_device_win_AddDestroyCallback(IDirect3DRMWinDevice *iface,
1556 D3DRMOBJECTCALLBACK cb, void *ctx)
1557{
1558 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
1559
1560 return E_NOTIMPL;
1561}
1562
1563static HRESULT WINAPI d3drm_device_win_DeleteDestroyCallback(IDirect3DRMWinDevice *iface,
1564 D3DRMOBJECTCALLBACK cb, void *ctx)
1565{
1566 FIXME("iface %p, cb %p, ctx %p stub!\n", iface, cb, ctx);
1567
1568 return E_NOTIMPL;
1569}
1570
1571static HRESULT WINAPI d3drm_device_win_SetAppData(IDirect3DRMWinDevice *iface, DWORD data)
1572{
1574
1575 TRACE("iface %p, data %#lx.\n", iface, data);
1576
1577 return d3drm_device3_SetAppData(&device->IDirect3DRMDevice3_iface, data);
1578}
1579
1580static DWORD WINAPI d3drm_device_win_GetAppData(IDirect3DRMWinDevice *iface)
1581{
1583
1584 TRACE("iface %p.\n", iface);
1585
1586 return d3drm_device3_GetAppData(&device->IDirect3DRMDevice3_iface);
1587}
1588
1589static HRESULT WINAPI d3drm_device_win_SetName(IDirect3DRMWinDevice *iface, const char *name)
1590{
1592
1593 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
1594
1595 return d3drm_device3_SetName(&device->IDirect3DRMDevice3_iface, name);
1596}
1597
1598static HRESULT WINAPI d3drm_device_win_GetName(IDirect3DRMWinDevice *iface, DWORD *size, char *name)
1599{
1601
1602 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1603
1604 return d3drm_device3_GetName(&device->IDirect3DRMDevice3_iface, size, name);
1605}
1606
1607static HRESULT WINAPI d3drm_device_win_GetClassName(IDirect3DRMWinDevice *iface, DWORD *size, char *name)
1608{
1610
1611 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1612
1613 return d3drm_device3_GetClassName(&device->IDirect3DRMDevice3_iface, size, name);
1614}
1615
1616static HRESULT WINAPI d3drm_device_win_HandlePaint(IDirect3DRMWinDevice *iface, HDC dc)
1617{
1618 FIXME("iface %p, dc %p stub!\n", iface, dc);
1619
1620 return D3DRM_OK;
1621}
1622
1623static HRESULT WINAPI d3drm_device_win_HandleActivate(IDirect3DRMWinDevice *iface, WORD wparam)
1624{
1625 FIXME("iface %p, wparam %#x stub!\n", iface, wparam);
1626
1627 return D3DRM_OK;
1628}
1629
1630static const struct IDirect3DRMWinDeviceVtbl d3drm_device_win_vtbl =
1631{
1645};
1646
1647struct d3drm_device *unsafe_impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
1648{
1649 if (!iface)
1650 return NULL;
1651 assert(iface->lpVtbl == &d3drm_device3_vtbl);
1652
1653 return impl_from_IDirect3DRMDevice3(iface);
1654}
1655
1657{
1658 static const char classname[] = "Device";
1659 struct d3drm_device *object;
1660
1661 TRACE("device %p, d3drm %p.\n", device, d3drm);
1662
1663 if (!(object = calloc(1, sizeof(*object))))
1664 return E_OUTOFMEMORY;
1665
1666 object->IDirect3DRMDevice_iface.lpVtbl = &d3drm_device1_vtbl;
1667 object->IDirect3DRMDevice2_iface.lpVtbl = &d3drm_device2_vtbl;
1668 object->IDirect3DRMDevice3_iface.lpVtbl = &d3drm_device3_vtbl;
1669 object->IDirect3DRMWinDevice_iface.lpVtbl = &d3drm_device_win_vtbl;
1670 object->d3drm = d3drm;
1672
1673 *device = object;
1674
1675 return D3DRM_OK;
1676}
@ wparam
Definition: SystemMenu.c:30
static int state
Definition: maze.c:121
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
HDC dc
Definition: cylfrac.c:34
#define IDirect3D2_QueryInterface(p, a, b)
Definition: d3d.h:278
#define IDirect3DDevice_AddRef(p)
Definition: d3d.h:965
#define IDirect3D2_CreateDevice(p, a, b, c)
Definition: d3d.h:287
#define IDirect3DDevice2_QueryInterface(p, a, b)
Definition: d3d.h:1062
#define IDirect3DDevice3_QueryInterface(p, a, b)
Definition: d3d.h:1190
#define IDirect3D_Release(p)
Definition: d3d.h:233
#define IDirect3DDevice3_Release(p)
Definition: d3d.h:1192
#define IDirect3D3_Release(p)
Definition: d3d.h:330
#define IDirect3D_QueryInterface(p, a, b)
Definition: d3d.h:231
#define IDirect3D3_CreateDevice(p, a, b, c, d)
Definition: d3d.h:337
#define IDirect3DDevice_QueryInterface(p, a, b)
Definition: d3d.h:964
#define IDirect3DDevice2_GetRenderTarget(p, a)
Definition: d3d.h:1079
#define IDirect3D2_Release(p)
Definition: d3d.h:280
#define IDirect3DDevice2_Release(p)
Definition: d3d.h:1064
#define IDirect3DDevice_Release(p)
Definition: d3d.h:966
#define D3DRM_OK
Definition: d3drm.h:486
#define D3DRMERR_BADVALUE
Definition: d3drm.h:496
#define IDirect3DRM_Release(p)
Definition: d3drm.h:111
#define D3DRMERR_BADOBJECT
Definition: d3drm.h:487
#define IDirect3DRM_AddRef(p)
Definition: d3drm.h:110
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object)
Definition: d3drm_main.c:155
void d3drm_object_init(struct d3drm_object *object, const char *classname)
Definition: d3drm_main.c:41
HRESULT d3drm_object_get_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:113
HRESULT d3drm_object_delete_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:74
HRESULT d3drm_object_add_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:57
HRESULT d3drm_object_set_name(struct d3drm_object *object, const char *name)
Definition: d3drm_main.c:137
HRESULT d3drm_object_get_class_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:94
DWORD D3DRMRENDERQUALITY
Definition: d3drmdef.h:89
enum _D3DRMTEXTUREQUALITY D3DRMTEXTUREQUALITY
void(__cdecl * D3DRMUPDATECALLBACK)(struct IDirect3DRMDevice *device, void *ctx, int count, D3DRECT *rects)
Definition: d3drmobj.h:160
void(__cdecl * D3DRMOBJECTCALLBACK)(struct IDirect3DRMObject *obj, void *arg)
Definition: d3drmobj.h:157
D3DRENDERSTATETYPE
Definition: d3dtypes.h:874
D3DLIGHTSTATETYPE
Definition: d3dtypes.h:860
DWORD D3DCOLORMODEL
Definition: d3dtypes.h:629
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_NOTIMPL
Definition: ddrawi.h:99
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define FALSE
Definition: types.h:117
static HRESULT WINAPI d3drm_device1_AddDestroyCallback(IDirect3DRMDevice *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:434
static HRESULT WINAPI d3drm_device2_SetName(IDirect3DRMDevice2 *iface, const char *name)
Definition: device.c:539
static DWORD WINAPI d3drm_device2_GetShades(IDirect3DRMDevice2 *iface)
Definition: device.c:999
static BOOL WINAPI d3drm_device3_GetDither(IDirect3DRMDevice3 *iface)
Definition: device.c:965
static HRESULT WINAPI d3drm_device1_SetName(IDirect3DRMDevice *iface, const char *name)
Definition: device.c:548
static DWORD WINAPI d3drm_device3_GetWireframeOptions(IDirect3DRMDevice3 *iface)
Definition: device.c:1096
static HRESULT WINAPI d3drm_device2_Init(IDirect3DRMDevice2 *iface, ULONG width, ULONG height)
Definition: device.c:623
static HRESULT WINAPI d3drm_device2_Clone(IDirect3DRMDevice2 *iface, IUnknown *outer, REFIID iid, void **out)
Definition: device.c:394
static HRESULT WINAPI d3drm_device3_DeleteDestroyCallback(IDirect3DRMDevice3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:444
static HRESULT WINAPI d3drm_device2_GetName(IDirect3DRMDevice2 *iface, DWORD *size, char *name)
Definition: device.c:566
static const struct IDirect3DRMDevice2Vtbl d3drm_device2_vtbl
Definition: device.c:1437
static HRESULT WINAPI d3drm_device3_SetStateChangeOptions(IDirect3DRMDevice3 *iface, DWORD state_class, DWORD state_idx, DWORD flags)
Definition: device.c:1380
static HRESULT WINAPI d3drm_device2_InitFromD3D(IDirect3DRMDevice2 *iface, IDirect3D *d3d, IDirect3DDevice *d3d_device)
Definition: device.c:652
static HRESULT WINAPI d3drm_device_win_AddDestroyCallback(IDirect3DRMWinDevice *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:1555
static HRESULT WINAPI d3drm_device1_Init(IDirect3DRMDevice *iface, ULONG width, ULONG height)
Definition: device.c:632
static DWORD WINAPI d3drm_device3_GetWidth(IDirect3DRMDevice3 *iface)
Definition: device.c:1044
static D3DCOLORMODEL WINAPI d3drm_device3_GetColorModel(IDirect3DRMDevice3 *iface)
Definition: device.c:1148
static HRESULT WINAPI d3drm_device3_SetName(IDirect3DRMDevice3 *iface, const char *name)
Definition: device.c:530
struct d3drm_device * unsafe_impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
Definition: device.c:1647
static struct d3drm_device * impl_from_IDirect3DRMDevice3(IDirect3DRMDevice3 *iface)
Definition: device.c:35
static D3DRMTEXTUREQUALITY WINAPI d3drm_device3_GetTextureQuality(IDirect3DRMDevice3 *iface)
Definition: device.c:1173
static const struct IDirect3DRMDevice3Vtbl d3drm_device3_vtbl
Definition: device.c:1389
static HRESULT WINAPI d3drm_device1_SetTextureQuality(IDirect3DRMDevice *iface, D3DRMTEXTUREQUALITY quality)
Definition: device.c:931
static HRESULT WINAPI d3drm_device3_GetClassName(IDirect3DRMDevice3 *iface, DWORD *size, char *name)
Definition: device.c:584
HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw *ddraw, IDirectDrawSurface *surface, BOOL create_z_surface)
Definition: device.c:120
static HRESULT WINAPI d3drm_device1_GetName(IDirect3DRMDevice *iface, DWORD *size, char *name)
Definition: device.c:575
static ULONG WINAPI d3drm_device1_Release(IDirect3DRMDevice *iface)
Definition: device.c:377
static HRESULT WINAPI d3drm_device2_InitFromClipper(IDirect3DRMDevice2 *iface, IDirectDrawClipper *clipper, GUID *guid, int width, int height)
Definition: device.c:689
static HRESULT WINAPI d3drm_device1_GetClassName(IDirect3DRMDevice *iface, DWORD *size, char *name)
Definition: device.c:602
static HRESULT WINAPI d3drm_device3_SetQuality(IDirect3DRMDevice3 *iface, D3DRMRENDERQUALITY quality)
Definition: device.c:886
static HRESULT WINAPI d3drm_device3_Update(IDirect3DRMDevice3 *iface)
Definition: device.c:713
static HRESULT WINAPI d3drm_device_win_QueryInterface(IDirect3DRMWinDevice *iface, REFIID riid, void **out)
Definition: device.c:1518
static HRESULT WINAPI d3drm_device2_InitFromD3D2(IDirect3DRMDevice2 *iface, IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device)
Definition: device.c:1255
static HRESULT WINAPI d3drm_device_win_GetClassName(IDirect3DRMWinDevice *iface, DWORD *size, char *name)
Definition: device.c:1607
static HRESULT WINAPI d3drm_device3_Init(IDirect3DRMDevice3 *iface, ULONG width, ULONG height)
Definition: device.c:611
static HRESULT WINAPI d3drm_device3_AddDestroyCallback(IDirect3DRMDevice3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:414
static DWORD WINAPI d3drm_device2_GetWidth(IDirect3DRMDevice2 *iface)
Definition: device.c:1053
static HRESULT WINAPI d3drm_device3_InitFromD3D(IDirect3DRMDevice3 *iface, IDirect3D *d3d, IDirect3DDevice *d3d_device)
Definition: device.c:641
static HRESULT WINAPI d3drm_device2_GetDirect3DDevice(IDirect3DRMDevice2 *iface, IDirect3DDevice **d3d_device)
Definition: device.c:1209
static DWORD WINAPI d3drm_device1_GetAppData(IDirect3DRMDevice *iface)
Definition: device.c:521
static HRESULT WINAPI d3drm_device3_FindPreferredTextureFormat(IDirect3DRMDevice3 *iface, DWORD bitdepths, DWORD flags, DDPIXELFORMAT *pf)
Definition: device.c:1347
static struct d3drm_device * impl_from_IDirect3DRMDevice2(IDirect3DRMDevice2 *iface)
Definition: device.c:30
static D3DRMRENDERQUALITY WINAPI d3drm_device1_GetQuality(IDirect3DRMDevice *iface)
Definition: device.c:1139
static HRESULT WINAPI d3drm_device3_SetRenderMode(IDirect3DRMDevice3 *iface, DWORD flags)
Definition: device.c:1285
static ULONG WINAPI d3drm_device3_Release(IDirect3DRMDevice3 *iface)
Definition: device.c:355
static HRESULT WINAPI d3drm_device3_GetDirect3DDevice(IDirect3DRMDevice3 *iface, IDirect3DDevice **d3d_device)
Definition: device.c:1198
static struct d3drm_device * impl_from_IDirect3DRMDevice(IDirect3DRMDevice *iface)
Definition: device.c:25
static DWORD WINAPI d3drm_device1_GetWidth(IDirect3DRMDevice *iface)
Definition: device.c:1062
static HRESULT WINAPI d3drm_device2_SetBufferCount(IDirect3DRMDevice2 *iface, DWORD count)
Definition: device.c:789
static HRESULT WINAPI d3drm_device2_InitFromSurface(IDirect3DRMDevice2 *iface, GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *backbuffer)
Definition: device.c:1274
static ULONG WINAPI d3drm_device1_AddRef(IDirect3DRMDevice *iface)
Definition: device.c:346
static DWORD WINAPI d3drm_device1_GetWireframeOptions(IDirect3DRMDevice *iface)
Definition: device.c:1112
static HRESULT WINAPI d3drm_device1_AddUpdateCallback(IDirect3DRMDevice *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:750
static HRESULT WINAPI d3drm_device1_GetViewports(IDirect3DRMDevice *iface, IDirect3DRMViewportArray **array)
Definition: device.c:956
static HRESULT WINAPI d3drm_device1_SetAppData(IDirect3DRMDevice *iface, DWORD data)
Definition: device.c:494
static HRESULT WINAPI d3drm_device_win_SetName(IDirect3DRMWinDevice *iface, const char *name)
Definition: device.c:1589
static HRESULT WINAPI d3drm_device_win_HandlePaint(IDirect3DRMWinDevice *iface, HDC dc)
Definition: device.c:1616
static DWORD WINAPI d3drm_device1_GetHeight(IDirect3DRMDevice *iface)
Definition: device.c:1035
static HRESULT WINAPI d3drm_device3_SetDither(IDirect3DRMDevice3 *iface, BOOL enable)
Definition: device.c:832
static const struct IDirect3DRMWinDeviceVtbl d3drm_device_win_vtbl
Definition: device.c:1630
static DWORD WINAPI d3drm_device3_GetBufferCount(IDirect3DRMDevice3 *iface)
Definition: device.c:807
static HRESULT WINAPI d3drm_device2_GetViewports(IDirect3DRMDevice2 *iface, IDirect3DRMViewportArray **array)
Definition: device.c:947
static HRESULT WINAPI d3drm_device1_DeleteDestroyCallback(IDirect3DRMDevice *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:464
static HRESULT WINAPI d3drm_device2_GetDirect3DDevice2(IDirect3DRMDevice2 *iface, IDirect3DDevice2 **d3d_device)
Definition: device.c:1335
static HRESULT WINAPI d3drm_device1_SetDither(IDirect3DRMDevice *iface, BOOL enable)
Definition: device.c:852
static HRESULT d3drm_device_set_ddraw_device_d3d(struct d3drm_device *device, IDirect3D *d3d, IDirect3DDevice *d3d_device)
Definition: device.c:225
static DWORD WINAPI d3drm_device3_GetTrianglesDrawn(IDirect3DRMDevice3 *iface)
Definition: device.c:1071
static ULONG WINAPI d3drm_device2_AddRef(IDirect3DRMDevice2 *iface)
Definition: device.c:337
static HRESULT WINAPI d3drm_device2_AddUpdateCallback(IDirect3DRMDevice2 *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:742
static HRESULT WINAPI d3drm_device1_GetDirect3DDevice(IDirect3DRMDevice *iface, IDirect3DDevice **d3d_device)
Definition: device.c:1218
static BOOL WINAPI d3drm_device2_GetDither(IDirect3DRMDevice2 *iface)
Definition: device.c:974
static HRESULT WINAPI d3drm_device1_SetQuality(IDirect3DRMDevice *iface, D3DRMRENDERQUALITY quality)
Definition: device.c:906
static HRESULT WINAPI d3drm_device2_GetClassName(IDirect3DRMDevice2 *iface, DWORD *size, char *name)
Definition: device.c:593
static DWORD WINAPI d3drm_device2_GetWireframeOptions(IDirect3DRMDevice2 *iface)
Definition: device.c:1103
static D3DRMRENDERQUALITY WINAPI d3drm_device2_GetQuality(IDirect3DRMDevice2 *iface)
Definition: device.c:1130
static HRESULT WINAPI d3drm_device3_InitFromD3D2(IDirect3DRMDevice3 *iface, IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device)
Definition: device.c:1227
static HRESULT WINAPI d3drm_device3_DeleteUpdateCallback(IDirect3DRMDevice3 *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:758
static HRESULT WINAPI d3drm_device1_DeleteUpdateCallback(IDirect3DRMDevice *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:774
HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm)
Definition: device.c:1656
static HRESULT WINAPI d3drm_device_win_GetName(IDirect3DRMWinDevice *iface, DWORD *size, char *name)
Definition: device.c:1598
static D3DCOLORMODEL WINAPI d3drm_device1_GetColorModel(IDirect3DRMDevice *iface)
Definition: device.c:1164
static DWORD WINAPI d3drm_device1_GetBufferCount(IDirect3DRMDevice *iface)
Definition: device.c:823
static HRESULT WINAPI d3drm_device3_GetStateChangeOptions(IDirect3DRMDevice3 *iface, DWORD state_class, DWORD state_idx, DWORD *flags)
Definition: device.c:1371
static HRESULT WINAPI d3drm_device2_SetDither(IDirect3DRMDevice2 *iface, BOOL enable)
Definition: device.c:843
static DWORD WINAPI d3drm_device3_GetHeight(IDirect3DRMDevice3 *iface)
Definition: device.c:1017
static DWORD WINAPI d3drm_device1_GetTrianglesDrawn(IDirect3DRMDevice *iface)
Definition: device.c:1087
static HRESULT WINAPI d3drm_device2_DeleteDestroyCallback(IDirect3DRMDevice2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:454
static HRESULT WINAPI d3drm_device1_Update(IDirect3DRMDevice *iface)
Definition: device.c:727
static DWORD WINAPI d3drm_device2_GetAppData(IDirect3DRMDevice2 *iface)
Definition: device.c:512
static ULONG WINAPI d3drm_device_win_Release(IDirect3DRMWinDevice *iface)
Definition: device.c:1536
static HRESULT WINAPI d3drm_device2_SetAppData(IDirect3DRMDevice2 *iface, DWORD data)
Definition: device.c:485
static DWORD WINAPI d3drm_device3_GetRenderMode(IDirect3DRMDevice3 *iface)
Definition: device.c:1305
static D3DRMTEXTUREQUALITY WINAPI d3drm_device1_GetTextureQuality(IDirect3DRMDevice *iface)
Definition: device.c:1189
static HRESULT WINAPI d3drm_device_win_Clone(IDirect3DRMWinDevice *iface, IUnknown *outer, REFIID iid, void **out)
Definition: device.c:1545
void d3drm_device_destroy(struct d3drm_device *device)
Definition: device.c:40
static ULONG WINAPI d3drm_device_win_AddRef(IDirect3DRMWinDevice *iface)
Definition: device.c:1527
HRESULT d3drm_device_create_surfaces_from_clipper(struct d3drm_device *object, IDirectDraw *ddraw, IDirectDrawClipper *clipper, int width, int height, IDirectDrawSurface **surface)
Definition: device.c:69
static ULONG WINAPI d3drm_device3_AddRef(IDirect3DRMDevice3 *iface)
Definition: device.c:327
static DWORD WINAPI d3drm_device2_GetHeight(IDirect3DRMDevice2 *iface)
Definition: device.c:1026
static HRESULT WINAPI d3drm_device3_GetViewports(IDirect3DRMDevice3 *iface, IDirect3DRMViewportArray **array)
Definition: device.c:940
static DWORD WINAPI d3drm_device2_GetTrianglesDrawn(IDirect3DRMDevice2 *iface)
Definition: device.c:1078
static HRESULT WINAPI d3drm_device3_RenderStateChange(IDirect3DRMDevice3 *iface, D3DRENDERSTATETYPE state, DWORD value, DWORD flags)
Definition: device.c:1355
static HRESULT WINAPI d3drm_device3_SetShades(IDirect3DRMDevice3 *iface, DWORD count)
Definition: device.c:861
static D3DRMTEXTUREQUALITY WINAPI d3drm_device2_GetTextureQuality(IDirect3DRMDevice2 *iface)
Definition: device.c:1180
static DWORD WINAPI d3drm_device3_GetShades(IDirect3DRMDevice3 *iface)
Definition: device.c:992
static D3DCOLORMODEL WINAPI d3drm_device2_GetColorModel(IDirect3DRMDevice2 *iface)
Definition: device.c:1155
static DWORD WINAPI d3drm_device3_GetAppData(IDirect3DRMDevice3 *iface)
Definition: device.c:503
static HRESULT WINAPI d3drm_device3_AddUpdateCallback(IDirect3DRMDevice3 *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:734
static HRESULT WINAPI d3drm_device3_InitFromClipper(IDirect3DRMDevice3 *iface, IDirectDrawClipper *clipper, GUID *guid, int width, int height)
Definition: device.c:675
static HRESULT WINAPI d3drm_device2_SetRenderMode(IDirect3DRMDevice2 *iface, DWORD flags)
Definition: device.c:1296
static HRESULT WINAPI d3drm_device3_LightStateChange(IDirect3DRMDevice3 *iface, D3DLIGHTSTATETYPE state, DWORD value, DWORD flags)
Definition: device.c:1363
static D3DRMRENDERQUALITY WINAPI d3drm_device3_GetQuality(IDirect3DRMDevice3 *iface)
Definition: device.c:1121
static HRESULT WINAPI d3drm_device2_DeleteUpdateCallback(IDirect3DRMDevice2 *iface, D3DRMUPDATECALLBACK cb, void *ctx)
Definition: device.c:766
static struct d3drm_device * impl_from_IDirect3DRMWinDevice(IDirect3DRMWinDevice *iface)
Definition: device.c:64
static HRESULT WINAPI d3drm_device2_AddDestroyCallback(IDirect3DRMDevice2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:424
static HRESULT WINAPI d3drm_device1_InitFromClipper(IDirect3DRMDevice *iface, IDirectDrawClipper *clipper, GUID *guid, int width, int height)
Definition: device.c:701
static HRESULT WINAPI d3drm_device3_SetBufferCount(IDirect3DRMDevice3 *iface, DWORD count)
Definition: device.c:782
static HRESULT WINAPI d3drm_device2_Update(IDirect3DRMDevice2 *iface)
Definition: device.c:720
static DWORD WINAPI d3drm_device2_GetBufferCount(IDirect3DRMDevice2 *iface)
Definition: device.c:814
static HRESULT WINAPI d3drm_device_win_HandleActivate(IDirect3DRMWinDevice *iface, WORD wparam)
Definition: device.c:1623
static BOOL WINAPI d3drm_device1_GetDither(IDirect3DRMDevice *iface)
Definition: device.c:983
static HRESULT WINAPI d3drm_device3_GetDirect3DDevice2(IDirect3DRMDevice3 *iface, IDirect3DDevice2 **d3d_device)
Definition: device.c:1323
static HRESULT WINAPI d3drm_device3_SetTextureQuality(IDirect3DRMDevice3 *iface, D3DRMTEXTUREQUALITY quality)
Definition: device.c:915
static HRESULT WINAPI d3drm_device3_InitFromSurface(IDirect3DRMDevice3 *iface, GUID *guid, IDirectDraw *ddraw, IDirectDrawSurface *backbuffer)
Definition: device.c:1265
static HRESULT WINAPI d3drm_device3_Clone(IDirect3DRMDevice3 *iface, IUnknown *outer, REFIID iid, void **out)
Definition: device.c:386
static HRESULT WINAPI d3drm_device1_Clone(IDirect3DRMDevice *iface, IUnknown *outer, REFIID iid, void **out)
Definition: device.c:404
static HRESULT WINAPI d3drm_device_win_SetAppData(IDirect3DRMWinDevice *iface, DWORD data)
Definition: device.c:1571
static HRESULT WINAPI d3drm_device2_SetQuality(IDirect3DRMDevice2 *iface, D3DRMRENDERQUALITY quality)
Definition: device.c:897
static DWORD WINAPI d3drm_device2_GetRenderMode(IDirect3DRMDevice2 *iface)
Definition: device.c:1314
static HRESULT WINAPI d3drm_device_win_DeleteDestroyCallback(IDirect3DRMWinDevice *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: device.c:1563
static HRESULT WINAPI d3drm_device2_QueryInterface(IDirect3DRMDevice2 *iface, REFIID riid, void **out)
Definition: device.c:309
static HRESULT WINAPI d3drm_device1_QueryInterface(IDirect3DRMDevice *iface, REFIID riid, void **out)
Definition: device.c:318
static DWORD WINAPI d3drm_device1_GetShades(IDirect3DRMDevice *iface)
Definition: device.c:1008
static HRESULT WINAPI d3drm_device2_SetTextureQuality(IDirect3DRMDevice2 *iface, D3DRMTEXTUREQUALITY quality)
Definition: device.c:922
static HRESULT WINAPI d3drm_device2_SetShades(IDirect3DRMDevice2 *iface, DWORD count)
Definition: device.c:868
static HRESULT WINAPI d3drm_device1_SetBufferCount(IDirect3DRMDevice *iface, DWORD count)
Definition: device.c:798
static HRESULT WINAPI d3drm_device3_QueryInterface(IDirect3DRMDevice3 *iface, REFIID riid, void **out)
Definition: device.c:274
static ULONG WINAPI d3drm_device2_Release(IDirect3DRMDevice2 *iface)
Definition: device.c:368
static HRESULT WINAPI d3drm_device1_SetShades(IDirect3DRMDevice *iface, DWORD count)
Definition: device.c:877
static HRESULT WINAPI d3drm_device3_SetAppData(IDirect3DRMDevice3 *iface, DWORD data)
Definition: device.c:474
static HRESULT WINAPI d3drm_device3_GetName(IDirect3DRMDevice3 *iface, DWORD *size, char *name)
Definition: device.c:557
static const struct IDirect3DRMDeviceVtbl d3drm_device1_vtbl
Definition: device.c:1480
static DWORD WINAPI d3drm_device_win_GetAppData(IDirect3DRMWinDevice *iface)
Definition: device.c:1580
static HRESULT WINAPI d3drm_device1_InitFromD3D(IDirect3DRMDevice *iface, IDirect3D *d3d, IDirect3DDevice *d3d_device)
Definition: device.c:662
static const WCHAR version[]
Definition: asmname.c:66
GUID guid
Definition: version.c:147
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
#define assert(_expr)
Definition: assert.h:32
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
GLsizeiptr size
Definition: glext.h:5919
GLbitfield flags
Definition: glext.h:7161
GLboolean enable
Definition: glext.h:11120
unsigned int UINT
Definition: sysinfo.c:13
#define ds
Definition: i386-dis.c:443
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
int quality
Definition: jpeglib.h:994
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_a
Definition: kernel32.h:31
static HDC
Definition: imagelist.c:88
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
static IHTMLWindow2 * window
Definition: events.c:77
static IUnknown * outer
Definition: compobj.c:82
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
WCHAR classname[128]
Definition: startup.c:15
#define calloc
Definition: rosglue.h:14
#define DDSD_WIDTH
Definition: ddraw.h:212
#define DDSCAPS_ZBUFFER
Definition: ddraw.h:269
#define DDSCL_NORMAL
Definition: ddraw.h:537
#define DDSD_HEIGHT
Definition: ddraw.h:211
#define DDSCAPS_PRIMARYSURFACE
Definition: ddraw.h:260
#define DDSD_ZBUFFERBITDEPTH
Definition: ddraw.h:215
#define DDERR_INVALIDCAPS
Definition: ddraw.h:77
#define DDSCAPS_OFFSCREENPLAIN
Definition: ddraw.h:257
#define DDSCAPS_3DDEVICE
Definition: ddraw.h:265
#define DDSD_CAPS
Definition: ddraw.h:210
#define memset(x, y, z)
Definition: compat.h:39
#define TRACE(s)
Definition: solgame.cpp:4
Definition: undname.c:54
IDirect3DRMDevice IDirect3DRMDevice_iface
IDirectDraw * ddraw
IDirectDrawSurface * render_target
IDirect3DRMWinDevice IDirect3DRMWinDevice_iface
IDirectDrawClipper * clipper
IDirect3DRMDevice2 IDirect3DRMDevice2_iface
IDirect3DRMDevice3 IDirect3DRMDevice3_iface
IDirectDrawSurface * primary_surface
IDirect3DRM * d3drm
Definition: d3drm.c:189
Definition: devices.h:37
Definition: name.c:39
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:64
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define WINAPI
Definition: msvc.h:6
#define E_NOINTERFACE
Definition: winerror.h:3479
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772