From 72b53787582dbeb31bf090aab360e65c722f3cd4 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 23 Mar 2009 08:30:16 +0100 Subject: [PATCH] d3d8: Get rid of resource.c. --- dlls/d3d8/Makefile.in | 1 - dlls/d3d8/cubetexture.c | 8 ++- dlls/d3d8/d3d8_private.h | 1 - dlls/d3d8/indexbuffer.c | 8 ++- dlls/d3d8/resource.c | 133 ---------------------------------------------- dlls/d3d8/stateblock.c | 19 ++++++- dlls/d3d8/surface.c | 8 ++- dlls/d3d8/texture.c | 8 ++- dlls/d3d8/vertexbuffer.c | 8 ++- dlls/d3d8/volumetexture.c | 8 ++- 10 files changed, 59 insertions(+), 143 deletions(-) delete mode 100644 dlls/d3d8/resource.c diff --git a/dlls/d3d8/Makefile.in b/dlls/d3d8/Makefile.in index 3d6c3cfebd4..3a09256be64 100644 --- a/dlls/d3d8/Makefile.in +++ b/dlls/d3d8/Makefile.in @@ -13,7 +13,6 @@ C_SRCS = \ directx.c \ indexbuffer.c \ pixelshader.c \ - resource.c \ stateblock.c \ surface.c \ swapchain.c \ diff --git a/dlls/d3d8/cubetexture.c b/dlls/d3d8/cubetexture.c index 1f2593f2cb3..32511d6569c 100644 --- a/dlls/d3d8/cubetexture.c +++ b/dlls/d3d8/cubetexture.c @@ -69,11 +69,17 @@ static ULONG WINAPI IDirect3DCubeTexture8Impl_Release(LPDIRECT3DCUBETEXTURE8 ifa /* IDirect3DCubeTexture8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DCubeTexture8Impl_GetDevice(LPDIRECT3DCUBETEXTURE8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DCubeTexture8Impl *This = (IDirect3DCubeTexture8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p) Relay\n" , This); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DCubeTexture_GetDevice(This->wineD3DCubeTexture, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } diff --git a/dlls/d3d8/d3d8_private.h b/dlls/d3d8/d3d8_private.h index ebab7d3f0e9..cbd6f761668 100644 --- a/dlls/d3d8/d3d8_private.h +++ b/dlls/d3d8/d3d8_private.h @@ -302,7 +302,6 @@ struct IDirect3DResource8Impl /* IDirect3DResource8 fields */ IWineD3DResource *wineD3DResource; }; -extern HRESULT WINAPI IDirect3DResource8Impl_GetDevice(LPDIRECT3DRESOURCE8 iface, IDirect3DDevice8** ppDevice); /* ---------------------- */ /* IDirect3DVertexBuffer8 */ diff --git a/dlls/d3d8/indexbuffer.c b/dlls/d3d8/indexbuffer.c index fde066a037f..8a0a1552f24 100644 --- a/dlls/d3d8/indexbuffer.c +++ b/dlls/d3d8/indexbuffer.c @@ -68,11 +68,17 @@ static ULONG WINAPI IDirect3DIndexBuffer8Impl_Release(LPDIRECT3DINDEXBUFFER8 ifa /* IDirect3DIndexBuffer8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DIndexBuffer8Impl_GetDevice(LPDIRECT3DINDEXBUFFER8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DIndexBuffer8Impl *This = (IDirect3DIndexBuffer8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p) Relay\n", This); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DIndexBuffer_GetDevice(This->wineD3DIndexBuffer, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } diff --git a/dlls/d3d8/resource.c b/dlls/d3d8/resource.c deleted file mode 100644 index 7cf40899d61..00000000000 --- a/dlls/d3d8/resource.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * IDirect3DResource8 implementation - * - * Copyright 2005 Oliver Stieber - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "config.h" -#include "d3d8_private.h" - -WINE_DEFAULT_DEBUG_CHANNEL(d3d8); - -/* IDirect3DResource8 IUnknown parts follow: */ -static HRESULT WINAPI IDirect3DResource8Impl_QueryInterface(LPDIRECT3DRESOURCE8 iface, REFIID riid, LPVOID* ppobj) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - - if (IsEqualGUID(riid, &IID_IUnknown) - || IsEqualGUID(riid, &IID_IDirect3DResource8)) { - IUnknown_AddRef(iface); - *ppobj = This; - return S_OK; - } - - WARN("(%p)->(%s,%p),not found\n", This, debugstr_guid(riid), ppobj); - *ppobj = NULL; - return E_NOINTERFACE; -} - -static ULONG WINAPI IDirect3DResource8Impl_AddRef(LPDIRECT3DRESOURCE8 iface) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - ULONG ref = InterlockedIncrement(&This->ref); - - TRACE("(%p) : AddRef from %d\n", This, ref - 1); - - return ref; -} - -static ULONG WINAPI IDirect3DResource8Impl_Release(LPDIRECT3DRESOURCE8 iface) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - ULONG ref = InterlockedDecrement(&This->ref); - - TRACE("(%p) : ReleaseRef to %d\n", This, ref); - - if (ref == 0) { - IWineD3DResource_Release(This->wineD3DResource); - HeapFree(GetProcessHeap(), 0, This); - } - return ref; -} - -/* IDirect3DResource8 Interface follow: */ -HRESULT WINAPI IDirect3DResource8Impl_GetDevice(LPDIRECT3DRESOURCE8 iface, IDirect3DDevice8** ppDevice) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - IWineD3DDevice *myDevice = NULL; - - TRACE("(%p) Relay\n", This); - - IWineD3DResource_GetDevice(This->wineD3DResource, &myDevice); - IWineD3DDevice_GetParent(myDevice, (IUnknown **)ppDevice); - IWineD3DDevice_Release(myDevice); - return D3D_OK; -} - -static HRESULT WINAPI IDirect3DResource8Impl_SetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_SetPrivateData(This->wineD3DResource, refguid, pData, SizeOfData, Flags); -} - -static HRESULT WINAPI IDirect3DResource8Impl_GetPrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid, void* pData, DWORD* pSizeOfData) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_GetPrivateData(This->wineD3DResource, refguid, pData, pSizeOfData); -} - -static HRESULT WINAPI IDirect3DResource8Impl_FreePrivateData(LPDIRECT3DRESOURCE8 iface, REFGUID refguid) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_FreePrivateData(This->wineD3DResource, refguid); -} - -static DWORD WINAPI IDirect3DResource8Impl_SetPriority(LPDIRECT3DRESOURCE8 iface, DWORD PriorityNew) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_SetPriority(This->wineD3DResource, PriorityNew); -} - -static DWORD WINAPI IDirect3DResource8Impl_GetPriority(LPDIRECT3DRESOURCE8 iface) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_GetPriority(This->wineD3DResource); -} - -static void WINAPI IDirect3DResource8Impl_PreLoad(LPDIRECT3DRESOURCE8 iface) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - IWineD3DResource_PreLoad(This->wineD3DResource); - return; -} - -static D3DRESOURCETYPE WINAPI IDirect3DResource8Impl_GetType(LPDIRECT3DRESOURCE8 iface) { - IDirect3DResource8Impl *This = (IDirect3DResource8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IWineD3DResource_GetType(This->wineD3DResource); -} - -const IDirect3DResource8Vtbl Direct3DResource8_Vtbl = -{ - IDirect3DResource8Impl_QueryInterface, - IDirect3DResource8Impl_AddRef, - IDirect3DResource8Impl_Release, - IDirect3DResource8Impl_GetDevice, - IDirect3DResource8Impl_SetPrivateData, - IDirect3DResource8Impl_GetPrivateData, - IDirect3DResource8Impl_FreePrivateData, - IDirect3DResource8Impl_SetPriority, - IDirect3DResource8Impl_GetPriority, - IDirect3DResource8Impl_PreLoad, - IDirect3DResource8Impl_GetType -}; diff --git a/dlls/d3d8/stateblock.c b/dlls/d3d8/stateblock.c index ac2cdbe9982..cb9958afb22 100644 --- a/dlls/d3d8/stateblock.c +++ b/dlls/d3d8/stateblock.c @@ -67,8 +67,23 @@ static ULONG WINAPI IDirect3DStateBlock8Impl_Release(IDirect3DStateBlock8 *iface /* IDirect3DStateBlock8 Interface follow: */ static HRESULT WINAPI IDirect3DStateBlock8Impl_GetDevice(IDirect3DStateBlock8 *iface, IDirect3DDevice8 **ppDevice) { IDirect3DStateBlock8Impl *This = (IDirect3DStateBlock8Impl *)iface; - TRACE("(%p) Relay\n", This); - return IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + IWineD3DDevice *wined3d_device; + HRESULT hr; + + TRACE("(%p) Relay\n", This); + + EnterCriticalSection(&d3d8_cs); + + hr = IWineD3DStateBlock_GetDevice(This->wineD3DStateBlock, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } + + LeaveCriticalSection(&d3d8_cs); + + return hr; } static HRESULT WINAPI IDirect3DStateBlock8Impl_Capture(IDirect3DStateBlock8 *iface) { diff --git a/dlls/d3d8/surface.c b/dlls/d3d8/surface.c index 68393e94233..4b382ecbc98 100644 --- a/dlls/d3d8/surface.c +++ b/dlls/d3d8/surface.c @@ -90,11 +90,17 @@ static ULONG WINAPI IDirect3DSurface8Impl_Release(LPDIRECT3DSURFACE8 iface) { /* IDirect3DSurface8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DSurface8Impl_GetDevice(LPDIRECT3DSURFACE8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DSurface8Impl *This = (IDirect3DSurface8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p)->(%p)\n", This, ppDevice); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DSurface_GetDevice(This->wineD3DSurface, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } diff --git a/dlls/d3d8/texture.c b/dlls/d3d8/texture.c index 0f278b53493..c1bb91ece65 100644 --- a/dlls/d3d8/texture.c +++ b/dlls/d3d8/texture.c @@ -69,10 +69,16 @@ static ULONG WINAPI IDirect3DTexture8Impl_Release(LPDIRECT3DTEXTURE8 iface) { /* IDirect3DTexture8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DTexture8Impl_GetDevice(LPDIRECT3DTEXTURE8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DTexture8Impl *This = (IDirect3DTexture8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p) Relay\n", This); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DTexture_GetDevice(This->wineD3DTexture, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } diff --git a/dlls/d3d8/vertexbuffer.c b/dlls/d3d8/vertexbuffer.c index c26f00dd6ec..74d6dca9130 100644 --- a/dlls/d3d8/vertexbuffer.c +++ b/dlls/d3d8/vertexbuffer.c @@ -70,11 +70,17 @@ static ULONG WINAPI IDirect3DVertexBuffer8Impl_Release(LPDIRECT3DVERTEXBUFFER8 i /* IDirect3DVertexBuffer8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DVertexBuffer8Impl_GetDevice(LPDIRECT3DVERTEXBUFFER8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DVertexBuffer8Impl *This = (IDirect3DVertexBuffer8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p) Relay\n", This); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DBuffer_GetDevice(This->wineD3DVertexBuffer, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } diff --git a/dlls/d3d8/volumetexture.c b/dlls/d3d8/volumetexture.c index 4b47daeec25..098827aedd8 100644 --- a/dlls/d3d8/volumetexture.c +++ b/dlls/d3d8/volumetexture.c @@ -69,11 +69,17 @@ static ULONG WINAPI IDirect3DVolumeTexture8Impl_Release(LPDIRECT3DVOLUMETEXTURE8 /* IDirect3DVolumeTexture8 IDirect3DResource8 Interface follow: */ static HRESULT WINAPI IDirect3DVolumeTexture8Impl_GetDevice(LPDIRECT3DVOLUMETEXTURE8 iface, IDirect3DDevice8 **ppDevice) { IDirect3DVolumeTexture8Impl *This = (IDirect3DVolumeTexture8Impl *)iface; + IWineD3DDevice *wined3d_device; HRESULT hr; TRACE("(%p) Relay\n", This); EnterCriticalSection(&d3d8_cs); - hr = IDirect3DResource8Impl_GetDevice((LPDIRECT3DRESOURCE8) This, ppDevice); + hr = IWineD3DVolumeTexture_GetDevice(This->wineD3DVolumeTexture, &wined3d_device); + if (SUCCEEDED(hr)) + { + IWineD3DDevice_GetParent(wined3d_device, (IUnknown **)ppDevice); + IWineD3DDevice_Release(wined3d_device); + } LeaveCriticalSection(&d3d8_cs); return hr; } -- 2.11.4.GIT