コード例 #1
0
ファイル: device.c プロジェクト: reactos/reactos
static HRESULT WINAPI d3drm_device3_InitFromD3D2(IDirect3DRMDevice3 *iface,
        IDirect3D2 *d3d, IDirect3DDevice2 *d3d_device)
{
    struct d3drm_device *device = impl_from_IDirect3DRMDevice3(iface);
    IDirect3D *d3d1;
    IDirect3DDevice *d3d_device1;
    HRESULT hr;

    TRACE("iface %p, d3d %p, d3d_device %p.\n", iface, d3d, d3d_device);

    if (!d3d || !d3d_device)
        return D3DRMERR_BADVALUE;

    if (FAILED(hr = IDirect3D2_QueryInterface(d3d, &IID_IDirect3D, (void **)&d3d1)))
        return hr;
    if (FAILED(hr = IDirect3DDevice2_QueryInterface(d3d_device, &IID_IDirect3DDevice, (void **)&d3d_device1)))
    {
        IDirect3D_Release(d3d1);
        return hr;
    }

    hr = d3drm_device_set_ddraw_device_d3d(device, d3d1, d3d_device1);
    IDirect3D_Release(d3d1);
    IDirect3DDevice_Release(d3d_device1);

    return hr;
}
コード例 #2
0
ファイル: DIRECT3D.C プロジェクト: NonCreature0714/descent2
int d3d_device_close()
{
	if (_lpD3DDev) {
		IDirect3DDevice_Release(_lpD3DDev);
		_lpD3DDev = NULL;
	}
	return 0;
}
コード例 #3
0
ファイル: device.c プロジェクト: reactos/reactos
void d3drm_device_destroy(struct d3drm_device *device)
{
    d3drm_object_cleanup((IDirect3DRMObject *)&device->IDirect3DRMDevice_iface, &device->obj);
    if (device->device)
    {
        TRACE("Releasing attached ddraw interfaces.\n");
        IDirect3DDevice_Release(device->device);
    }
    if (device->render_target)
        IDirectDrawSurface_Release(device->render_target);
    if (device->primary_surface)
    {
        TRACE("Releasing primary surface and attached clipper.\n");
        IDirectDrawSurface_Release(device->primary_surface);
        IDirectDrawClipper_Release(device->clipper);
    }
    if (device->ddraw)
    {
        IDirectDraw_Release(device->ddraw);
        IDirect3DRM_Release(device->d3drm);
    }
    HeapFree(GetProcessHeap(), 0, device);
}