static ULONG WINAPI IDirect3DVolume8Impl_AddRef(IDirect3DVolume8 *iface) { IDirect3DVolume8Impl *This = impl_from_IDirect3DVolume8(iface); TRACE("iface %p.\n", iface); if (This->forwardReference) { /* Forward to the containerParent */ TRACE("(%p) : Forwarding to %p\n", This, This->forwardReference); return IUnknown_AddRef(This->forwardReference); } else { /* No container, handle our own refcounting */ ULONG ref = InterlockedIncrement(&This->ref); TRACE("%p increasing refcount to %u.\n", iface, ref); if (ref == 1) { wined3d_mutex_lock(); IWineD3DVolume_AddRef(This->wineD3DVolume); wined3d_mutex_unlock(); } return ref; } }
static HRESULT WINAPI IWineD3DVolumeTextureImpl_GetVolumeLevel(IWineD3DVolumeTexture *iface, UINT Level, IWineD3DVolume** ppVolumeLevel) { IWineD3DVolumeTextureImpl *This = (IWineD3DVolumeTextureImpl *)iface; if (Level < This->baseTexture.levels) { *ppVolumeLevel = This->volumes[Level]; IWineD3DVolume_AddRef(*ppVolumeLevel); TRACE("(%p) -> level(%d) returning volume@%p\n", This, Level, *ppVolumeLevel); } else { WARN("(%p) Level(%d) overflow Levels(%d)\n", This, Level, This->baseTexture.levels); return WINED3DERR_INVALIDCALL; } return WINED3D_OK; }