/* IDirect3DStateBlock9 Interface follow: */
static HRESULT WINAPI IDirect3DStateBlock9Impl_GetDevice(LPDIRECT3DSTATEBLOCK9 iface, IDirect3DDevice9** ppDevice) {
IDirect3DStateBlock9Impl *This = (IDirect3DStateBlock9Impl *)iface;
+ IWineD3DDevice *wined3d_device;
HRESULT hr;
TRACE("(%p) Relay\n", This);
EnterCriticalSection(&d3d9_cs);
- hr = IDirect3DResource9Impl_GetDevice((LPDIRECT3DRESOURCE9) This, ppDevice);
+ hr = IWineD3DStateBlock_GetDevice(This->wineD3DStateBlock, &wined3d_device);
+ if (SUCCEEDED(hr))
+ {
+ IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice);
+ IWineD3DDevice_Release(wined3d_device);
+ }
LeaveCriticalSection(&d3d9_cs);
return hr;
}