HRESULT NINE_WINAPI NineSurface9_GetContainer( struct NineSurface9 *This, REFIID riid, void **ppContainer ) { HRESULT hr; char guid_str[64]; DBG("This=%p riid=%p id=%s ppContainer=%p\n", This, riid, riid ? GUID_sprintf(guid_str, riid) : "", ppContainer); if (!ppContainer) return E_POINTER; /* Return device for OffscreenPlainSurface, DepthStencilSurface and RenderTarget */ if (!NineUnknown(This)->container) { *ppContainer = NineUnknown(This)->device; NineUnknown_AddRef(NineUnknown(*ppContainer)); return D3D_OK; } hr = NineUnknown_QueryInterface(NineUnknown(This)->container, riid, ppContainer); if (FAILED(hr)) DBG("QueryInterface FAILED!\n"); return hr; }
HRESULT NINE_WINAPI NineVolumeTexture9_GetVolumeLevel( struct NineVolumeTexture9 *This, UINT Level, IDirect3DVolume9 **ppVolumeLevel ) { user_assert(Level <= This->base.base.info.last_level, D3DERR_INVALIDCALL); NineUnknown_AddRef(NineUnknown(This->volumes[Level])); *ppVolumeLevel = (IDirect3DVolume9 *)This->volumes[Level]; return D3D_OK; }
HRESULT WINAPI NineSwapChain9_GetBackBuffer( struct NineSwapChain9 *This, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9 **ppBackBuffer ) { (void)user_error(Type == D3DBACKBUFFER_TYPE_MONO); user_assert(iBackBuffer < This->params.BackBufferCount, D3DERR_INVALIDCALL); user_assert(ppBackBuffer != NULL, E_POINTER); NineUnknown_AddRef(NineUnknown(This->buffers[iBackBuffer])); *ppBackBuffer = (IDirect3DSurface9 *)This->buffers[iBackBuffer]; return D3D_OK; }
HRESULT WINAPI NineTexture9_GetSurfaceLevel( struct NineTexture9 *This, UINT Level, IDirect3DSurface9 **ppSurfaceLevel ) { user_assert(Level <= This->base.base.info.last_level, D3DERR_INVALIDCALL); user_assert(Level == 0 || !(This->base.base.usage & D3DUSAGE_AUTOGENMIPMAP), D3DERR_INVALIDCALL); NineUnknown_AddRef(NineUnknown(This->surfaces[Level])); *ppSurfaceLevel = (IDirect3DSurface9 *)This->surfaces[Level]; return D3D_OK; }
HRESULT NINE_WINAPI NineSwapChain9_GetBackBuffer( struct NineSwapChain9 *This, UINT iBackBuffer, D3DBACKBUFFER_TYPE Type, IDirect3DSurface9 **ppBackBuffer ) { DBG("GetBackBuffer: This=%p iBackBuffer=%d Type=%d ppBackBuffer=%p\n", This, iBackBuffer, Type, ppBackBuffer); (void)user_error(Type == D3DBACKBUFFER_TYPE_MONO); /* don't touch ppBackBuffer on error */ user_assert(ppBackBuffer != NULL, D3DERR_INVALIDCALL); user_assert(iBackBuffer < This->params.BackBufferCount, D3DERR_INVALIDCALL); NineUnknown_AddRef(NineUnknown(This->buffers[iBackBuffer])); *ppBackBuffer = (IDirect3DSurface9 *)This->buffers[iBackBuffer]; return D3D_OK; }
HRESULT NINE_WINAPI NineCubeTexture9_GetCubeMapSurface( struct NineCubeTexture9 *This, D3DCUBEMAP_FACES FaceType, UINT Level, IDirect3DSurface9 **ppCubeMapSurface ) { const unsigned s = Level * 6 + FaceType; DBG("This=%p FaceType=%d Level=%u ppCubeMapSurface=%p\n", This, FaceType, Level, ppCubeMapSurface); user_assert(Level <= This->base.base.info.last_level, D3DERR_INVALIDCALL); user_assert(Level == 0 || !(This->base.base.usage & D3DUSAGE_AUTOGENMIPMAP), D3DERR_INVALIDCALL); user_assert(FaceType < 6, D3DERR_INVALIDCALL); NineUnknown_AddRef(NineUnknown(This->surfaces[s])); *ppCubeMapSurface = (IDirect3DSurface9 *)This->surfaces[s]; return D3D_OK; }