d3drm: Implement IDirect3DRMFrameX_DeleteVisual.

This commit is contained in:
André Hentschel 2012-04-30 17:10:48 +02:00 committed by Alexandre Julliard
parent acfb249af6
commit 154c1658d3
1 changed files with 20 additions and 4 deletions

View File

@ -522,9 +522,9 @@ static HRESULT WINAPI IDirect3DRMFrame2Impl_DeleteVisual(IDirect3DRMFrame2* ifac
{ {
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface); IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame2(iface);
FIXME("(%p/%p)->(%p): stub\n", iface, This, vis); TRACE("(%p/%p)->(%p)\n", iface, This, vis);
return E_NOTIMPL; return IDirect3DRMFrame3_DeleteVisual(&This->IDirect3DRMFrame3_iface, (LPUNKNOWN)vis);
} }
static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2* iface) static D3DCOLOR WINAPI IDirect3DRMFrame2Impl_GetSceneBackground(IDirect3DRMFrame2* iface)
@ -1448,10 +1448,26 @@ static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteMoveCallback(IDirect3DRMFrame3
static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis) static HRESULT WINAPI IDirect3DRMFrame3Impl_DeleteVisual(IDirect3DRMFrame3* iface, LPUNKNOWN vis)
{ {
IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface); IDirect3DRMFrameImpl *This = impl_from_IDirect3DRMFrame3(iface);
ULONG i;
FIXME("(%p/%p)->(%p): stub\n", iface, This, vis); TRACE("(%p/%p)->(%p)\n", iface, This, vis);
return E_NOTIMPL; if (!vis)
return D3DRMERR_BADOBJECT;
/* Check if visual exists */
for (i = 0; i < This->nb_visuals; i++)
if (This->visuals[i] == (IDirect3DRMVisual*)vis)
break;
if (i == This->nb_visuals)
return D3DRMERR_BADVALUE;
memmove(This->visuals + i, This->visuals + i + 1, sizeof(IDirect3DRMVisual*) * (This->nb_visuals - 1 - i));
IDirect3DRMVisual_Release(vis);
This->nb_visuals--;
return D3DRM_OK;
} }
static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface) static D3DCOLOR WINAPI IDirect3DRMFrame3Impl_GetSceneBackground(IDirect3DRMFrame3* iface)