ddraw: Use unsafe_impl_from_IDirect3DViewport3 for application provided interfaces.

This commit is contained in:
Ričardas Barkauskas 2011-10-03 17:14:37 -05:00 committed by Alexandre Julliard
parent f0354fde02
commit f44734b724
3 changed files with 13 additions and 4 deletions

View File

@ -469,6 +469,8 @@ struct IDirect3DViewportImpl
IDirect3DMaterialImpl *background;
};
IDirect3DViewportImpl *unsafe_impl_from_IDirect3DViewport3(IDirect3DViewport3 *iface) DECLSPEC_HIDDEN;
/* Helper functions */
void viewport_activate(IDirect3DViewportImpl* This, BOOL ignore_lights) DECLSPEC_HIDDEN;
void d3d_viewport_init(IDirect3DViewportImpl *viewport, IDirectDrawImpl *ddraw) DECLSPEC_HIDDEN;

View File

@ -750,7 +750,7 @@ IDirect3DDeviceImpl_3_AddViewport(IDirect3DDevice3 *iface,
IDirect3DViewport3 *Viewport)
{
IDirect3DDeviceImpl *This = device_from_device3(iface);
IDirect3DViewportImpl *vp = (IDirect3DViewportImpl *)Viewport;
IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Viewport);
TRACE("iface %p, viewport %p.\n", iface, Viewport);
@ -808,7 +808,7 @@ static HRESULT WINAPI IDirect3DDeviceImpl_1_AddViewport(IDirect3DDevice *iface,
static HRESULT WINAPI IDirect3DDeviceImpl_3_DeleteViewport(IDirect3DDevice3 *iface, IDirect3DViewport3 *viewport)
{
IDirect3DDeviceImpl *device = device_from_device3(iface);
IDirect3DViewportImpl *vp = (IDirect3DViewportImpl *)viewport;
IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(viewport);
TRACE("iface %p, viewport %p.\n", iface, viewport);
@ -875,7 +875,7 @@ IDirect3DDeviceImpl_3_NextViewport(IDirect3DDevice3 *iface,
DWORD Flags)
{
IDirect3DDeviceImpl *This = device_from_device3(iface);
IDirect3DViewportImpl *vp = (IDirect3DViewportImpl *)Viewport3;
IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Viewport3);
struct list *entry;
TRACE("iface %p, viewport %p, next %p, flags %#x.\n",
@ -1703,7 +1703,7 @@ IDirect3DDeviceImpl_3_SetCurrentViewport(IDirect3DDevice3 *iface,
IDirect3DViewport3 *Direct3DViewport3)
{
IDirect3DDeviceImpl *This = device_from_device3(iface);
IDirect3DViewportImpl *vp = (IDirect3DViewportImpl *)Direct3DViewport3;
IDirect3DViewportImpl *vp = unsafe_impl_from_IDirect3DViewport3(Direct3DViewport3);
TRACE("iface %p, viewport %p.\n", iface, Direct3DViewport3);

View File

@ -1115,6 +1115,13 @@ static const struct IDirect3DViewport3Vtbl d3d_viewport_vtbl =
IDirect3DViewportImpl_Clear2,
};
IDirect3DViewportImpl *unsafe_impl_from_IDirect3DViewport3(IDirect3DViewport3 *iface)
{
if (!iface) return NULL;
assert(iface->lpVtbl == &d3d_viewport_vtbl);
return CONTAINING_RECORD(iface, IDirect3DViewportImpl, lpVtbl);
}
void d3d_viewport_init(IDirect3DViewportImpl *viewport, IDirectDrawImpl *ddraw)
{
viewport->lpVtbl = &d3d_viewport_vtbl;