[PATCH] WineD3D: Move some swapchain code into a base class=0A=
Stefan Doesinger
stefan at codeweavers.com
Sun Jul 27 18:04:16 CDT 2008
=0A=
This is a preparation for using swapchains for gdi surfaces too, instead =
of the hacky=0A=
ddraw_window, ddraw_fullscreen and ddraw_primary members in the device.=0A=
---=0A=
dlls/wined3d/Makefile.in | 1 +=0A=
dlls/wined3d/swapchain.c | 183 =
+++-------------------------------------=0A=
dlls/wined3d/swapchain_base.c | 182 =
+++++++++++++++++++++++++++++++++++++++=0A=
dlls/wined3d/wined3d_private.h | 13 +++=0A=
4 files changed, 209 insertions(+), 170 deletions(-)=0A=
create mode 100644 dlls/wined3d/swapchain_base.c=0A=
=0A=
diff --git a/dlls/wined3d/Makefile.in b/dlls/wined3d/Makefile.in=0A=
index d09e88b..7591b4d 100644=0A=
--- a/dlls/wined3d/Makefile.in=0A=
+++ b/dlls/wined3d/Makefile.in=0A=
@@ -30,6 +30,7 @@ C_SRCS =3D \=0A=
surface.c \=0A=
surface_gdi.c \=0A=
swapchain.c \=0A=
+ swapchain_base.c \=0A=
texture.c \=0A=
utils.c \=0A=
vertexbuffer.c \=0A=
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c=0A=
index 318c220..72b1c7c 100644=0A=
--- a/dlls/wined3d/swapchain.c=0A=
+++ b/dlls/wined3d/swapchain.c=0A=
@@ -4,7 +4,7 @@=0A=
*Copyright 2002-2003 Jason Edmeades=0A=
*Copyright 2002-2003 Raphael Junqueira=0A=
*Copyright 2005 Oliver Stieber=0A=
- *Copyright 2007 Stefan D=F6singer for CodeWeavers=0A=
+ *Copyright 2007-2008 Stefan D=F6singer for CodeWeavers=0A=
*=0A=
*This library is free software; you can redistribute it and/or=0A=
*modify it under the terms of the GNU Lesser General Public=0A=
@@ -35,53 +35,6 @@ WINE_DECLARE_DEBUG_CHANNEL(fps);=0A=
=0A=
#define GLINFO_LOCATION This->wineD3DDevice->adapter->gl_info=0A=
=0A=
-/* IDirect3DSwapChain IUnknown parts follow: */=0A=
-static ULONG WINAPI IWineD3DSwapChainImpl_AddRef(IWineD3DSwapChain =
*iface) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- DWORD refCount =3D InterlockedIncrement(&This->ref);=0A=
- TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);=0A=
- return refCount;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_QueryInterface(IWineD3DSwapChain *iface, REFIID =
riid, LPVOID *ppobj)=0A=
-{=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppobj);=0A=
- if (IsEqualGUID(riid, &IID_IUnknown)=0A=
- || IsEqualGUID(riid, &IID_IWineD3DBase)=0A=
- || IsEqualGUID(riid, &IID_IWineD3DSwapChain)){=0A=
- IWineD3DSwapChainImpl_AddRef(iface);=0A=
- if(ppobj =3D=3D NULL){=0A=
- ERR("Query interface called but now data allocated\n");=0A=
- return E_NOINTERFACE;=0A=
- }=0A=
- *ppobj =3D This;=0A=
- return WINED3D_OK;=0A=
- }=0A=
- *ppobj =3D NULL;=0A=
- return E_NOINTERFACE;=0A=
-}=0A=
-=0A=
-=0A=
-static ULONG WINAPI IWineD3DSwapChainImpl_Release(IWineD3DSwapChain =
*iface) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- DWORD refCount;=0A=
- refCount =3D InterlockedDecrement(&This->ref);=0A=
- TRACE("(%p) : ReleaseRef to %d\n", This, refCount);=0A=
- if (refCount =3D=3D 0) {=0A=
- IWineD3DSwapChain_Destroy(iface, D3DCB_DefaultDestroySurface);=0A=
- }=0A=
- return refCount;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI IWineD3DSwapChainImpl_GetParent(IWineD3DSwapChain =
*iface, IUnknown ** ppParent){=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- *ppParent =3D This->parent;=0A=
- IUnknown_AddRef(*ppParent);=0A=
- TRACE("(%p) returning %p\n", This , *ppParent);=0A=
- return WINED3D_OK;=0A=
-}=0A=
-=0A=
/*IWineD3DSwapChain parts follow: */=0A=
static void WINAPI IWineD3DSwapChainImpl_Destroy(IWineD3DSwapChain =
*iface, D3DCB_DESTROYSURFACEFN D3DCB_DestroyRenderTarget) {=0A=
IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
@@ -380,134 +333,24 @@ static HRESULT WINAPI =
IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO=0A=
return WINED3D_OK;=0A=
}=0A=
=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, =
IWineD3DSurface *pDestSurface) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- POINT start;=0A=
-=0A=
- TRACE("(%p) : iface(%p) pDestSurface(%p)\n", This, iface, =
pDestSurface);=0A=
-=0A=
- start.x =3D 0;=0A=
- start.y =3D 0;=0A=
-=0A=
- if (This->presentParms.Windowed) {=0A=
- MapWindowPoints(This->win_handle, NULL, &start, 1);=0A=
- }=0A=
-=0A=
- IWineD3DSurface_BltFast(pDestSurface, start.x, start.y, =
This->frontBuffer, NULL, 0);=0A=
- return WINED3D_OK;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT =
iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface =
**ppBackBuffer) {=0A=
-=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
-=0A=
- if (iBackBuffer > This->presentParms.BackBufferCount - 1) {=0A=
- TRACE("Back buffer count out of range\n");=0A=
- /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But =
set it here=0A=
- * in wined3d to avoid problems in other libs=0A=
- */=0A=
- *ppBackBuffer =3D NULL;=0A=
- return WINED3DERR_INVALIDCALL;=0A=
- }=0A=
-=0A=
- *ppBackBuffer =3D This->backBuffer[iBackBuffer];=0A=
- TRACE("(%p) : BackBuf %d Type %d returning %p\n", This, =
iBackBuffer, Type, *ppBackBuffer);=0A=
-=0A=
- /* Note inc ref on returned surface */=0A=
- if(*ppBackBuffer) IWineD3DSurface_AddRef(*ppBackBuffer);=0A=
- return WINED3D_OK;=0A=
-=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, =
WINED3DRASTER_STATUS *pRasterStatus) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- static BOOL showFixmes =3D TRUE;=0A=
- pRasterStatus->InVBlank =3D TRUE;=0A=
- pRasterStatus->ScanLine =3D 0;=0A=
- /* No openGL equivalent */=0A=
- if(showFixmes) {=0A=
- FIXME("(%p) : stub (once)\n", This);=0A=
- showFixmes =3D FALSE;=0A=
- }=0A=
- return WINED3D_OK;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface, =
WINED3DDISPLAYMODE*pMode) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- HRESULT hr;=0A=
-=0A=
- TRACE("(%p)->(%p): Calling GetAdapterDisplayMode\n", This, pMode);=0A=
- hr =3D IWineD3D_GetAdapterDisplayMode(This->wineD3DDevice->wineD3D, =
This->wineD3DDevice->adapter->num, pMode);=0A=
-=0A=
- TRACE("(%p) : returning w(%d) h(%d) rr(%d) fmt(%u,%s)\n", This, =
pMode->Width, pMode->Height, pMode->RefreshRate,=0A=
- pMode->Format, debug_d3dformat(pMode->Format));=0A=
- return hr;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI IWineD3DSwapChainImpl_GetDevice(IWineD3DSwapChain =
*iface, IWineD3DDevice**ppDevice) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
-=0A=
- *ppDevice =3D (IWineD3DDevice *) This->wineD3DDevice;=0A=
-=0A=
- /* Note Calling this method will increase the internal reference =
count=0A=
- on the IDirect3DDevice9 interface. */=0A=
- IWineD3DDevice_AddRef(*ppDevice);=0A=
- TRACE("(%p) : returning %p\n", This, *ppDevice);=0A=
- return WINED3D_OK;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetPresentParameters(IWineD3DSwapChain *iface, =
WINED3DPRESENT_PARAMETERS *pPresentationParameters) {=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- TRACE("(%p)\n", This);=0A=
-=0A=
- *pPresentationParameters =3D This->presentParms;=0A=
-=0A=
- return WINED3D_OK;=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_SetGammaRamp(IWineD3DSwapChain *iface, DWORD =
Flags, CONST WINED3DGAMMARAMP *pRamp){=0A=
-=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- HDC hDC;=0A=
- TRACE("(%p) : pRamp@%p flags(%d)\n", This, pRamp, Flags);=0A=
- hDC =3D GetDC(This->win_handle);=0A=
- SetDeviceGammaRamp(hDC, (LPVOID)pRamp);=0A=
- ReleaseDC(This->win_handle, hDC);=0A=
- return WINED3D_OK;=0A=
-=0A=
-}=0A=
-=0A=
-static HRESULT WINAPI =
IWineD3DSwapChainImpl_GetGammaRamp(IWineD3DSwapChain *iface, =
WINED3DGAMMARAMP *pRamp){=0A=
-=0A=
- IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
- HDC hDC;=0A=
- TRACE("(%p) : pRamp@%p\n", This, pRamp);=0A=
- hDC =3D GetDC(This->win_handle);=0A=
- GetDeviceGammaRamp(hDC, pRamp);=0A=
- ReleaseDC(This->win_handle, hDC);=0A=
- return WINED3D_OK;=0A=
-=0A=
-}=0A=
-=0A=
-=0A=
const IWineD3DSwapChainVtbl IWineD3DSwapChain_Vtbl =3D=0A=
{=0A=
/* IUnknown */=0A=
- IWineD3DSwapChainImpl_QueryInterface,=0A=
- IWineD3DSwapChainImpl_AddRef,=0A=
- IWineD3DSwapChainImpl_Release,=0A=
+ IWineD3DBaseSwapChainImpl_QueryInterface,=0A=
+ IWineD3DBaseSwapChainImpl_AddRef,=0A=
+ IWineD3DBaseSwapChainImpl_Release,=0A=
/* IWineD3DSwapChain */=0A=
- IWineD3DSwapChainImpl_GetParent,=0A=
+ IWineD3DBaseSwapChainImpl_GetParent,=0A=
IWineD3DSwapChainImpl_Destroy,=0A=
- IWineD3DSwapChainImpl_GetDevice,=0A=
+ IWineD3DBaseSwapChainImpl_GetDevice,=0A=
IWineD3DSwapChainImpl_Present,=0A=
- IWineD3DSwapChainImpl_GetFrontBufferData,=0A=
- IWineD3DSwapChainImpl_GetBackBuffer,=0A=
- IWineD3DSwapChainImpl_GetRasterStatus,=0A=
- IWineD3DSwapChainImpl_GetDisplayMode,=0A=
- IWineD3DSwapChainImpl_GetPresentParameters,=0A=
- IWineD3DSwapChainImpl_SetGammaRamp,=0A=
- IWineD3DSwapChainImpl_GetGammaRamp=0A=
+ IWineD3DBaseSwapChainImpl_GetFrontBufferData,=0A=
+ IWineD3DBaseSwapChainImpl_GetBackBuffer,=0A=
+ IWineD3DBaseSwapChainImpl_GetRasterStatus,=0A=
+ IWineD3DBaseSwapChainImpl_GetDisplayMode,=0A=
+ IWineD3DBaseSwapChainImpl_GetPresentParameters,=0A=
+ IWineD3DBaseSwapChainImpl_SetGammaRamp,=0A=
+ IWineD3DBaseSwapChainImpl_GetGammaRamp=0A=
};=0A=
=0A=
WineD3DContext =
*IWineD3DSwapChainImpl_CreateContextForThread(IWineD3DSwapChain *iface) {=0A=
diff --git a/dlls/wined3d/swapchain_base.c =
b/dlls/wined3d/swapchain_base.c=0A=
new file mode 100644=0A=
index 0000000..6b91234=0A=
--- /dev/null=0A=
+++ b/dlls/wined3d/swapchain_base.c=0A=
@@ -0,0 +1,182 @@=0A=
+/*=0A=
+ *IDirect3DSwapChain9 implementation=0A=
+ *=0A=
+ *Copyright 2002-2003 Jason Edmeades=0A=
+ *Copyright 2002-2003 Raphael Junqueira=0A=
+ *Copyright 2005 Oliver Stieber=0A=
+ *Copyright 2007-2008 Stefan D=F6singer for CodeWeavers=0A=
+ *=0A=
+ *This library is free software; you can redistribute it and/or=0A=
+ *modify it under the terms of the GNU Lesser General Public=0A=
+ *License as published by the Free Software Foundation; either=0A=
+ *version 2.1 of the License, or (at your option) any later version.=0A=
+ *=0A=
+ *This library is distributed in the hope that it will be useful,=0A=
+ *but WITHOUT ANY WARRANTY; without even the implied warranty of=0A=
+ *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU=0A=
+ *Lesser General Public License for more details.=0A=
+ *=0A=
+ *You should have received a copy of the GNU Lesser General Public=0A=
+ *License along with this library; if not, write to the Free Software=0A=
+ *Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, =
USA=0A=
+ */=0A=
+=0A=
+#include "config.h"=0A=
+#include "wined3d_private.h"=0A=
+=0A=
+WINE_DEFAULT_DEBUG_CHANNEL(d3d);=0A=
+=0A=
+/* IDirect3DSwapChain IUnknown parts follow: */=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_QueryInterface(IWineD3DSwapChain *iface, =
REFIID riid, LPVOID *ppobj)=0A=
+{=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ TRACE("(%p)->(%s,%p)\n", This, debugstr_guid(riid), ppobj);=0A=
+ if (IsEqualGUID(riid, &IID_IUnknown)=0A=
+ || IsEqualGUID(riid, &IID_IWineD3DBase)=0A=
+ || IsEqualGUID(riid, &IID_IWineD3DSwapChain)){=0A=
+ IWineD3DSwapChain_AddRef(iface);=0A=
+ if(ppobj =3D=3D NULL){=0A=
+ ERR("Query interface called but now data allocated\n");=0A=
+ return E_NOINTERFACE;=0A=
+ }=0A=
+ *ppobj =3D This;=0A=
+ return WINED3D_OK;=0A=
+ }=0A=
+ *ppobj =3D NULL;=0A=
+ return E_NOINTERFACE;=0A=
+}=0A=
+=0A=
+ULONG WINAPI IWineD3DBaseSwapChainImpl_AddRef(IWineD3DSwapChain *iface) =
{=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ DWORD refCount =3D InterlockedIncrement(&This->ref);=0A=
+ TRACE("(%p) : AddRef increasing from %d\n", This, refCount - 1);=0A=
+ return refCount;=0A=
+}=0A=
+=0A=
+ULONG WINAPI IWineD3DBaseSwapChainImpl_Release(IWineD3DSwapChain =
*iface) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ DWORD refCount;=0A=
+ refCount =3D InterlockedDecrement(&This->ref);=0A=
+ TRACE("(%p) : ReleaseRef to %d\n", This, refCount);=0A=
+ if (refCount =3D=3D 0) {=0A=
+ IWineD3DSwapChain_Destroy(iface, D3DCB_DefaultDestroySurface);=0A=
+ }=0A=
+ return refCount;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetParent(IWineD3DSwapChain =
*iface, IUnknown ** ppParent){=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ *ppParent =3D This->parent;=0A=
+ IUnknown_AddRef(*ppParent);=0A=
+ TRACE("(%p) returning %p\n", This , *ppParent);=0A=
+ return WINED3D_OK;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, =
IWineD3DSurface *pDestSurface) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ POINT start;=0A=
+=0A=
+ TRACE("(%p) : iface(%p) pDestSurface(%p)\n", This, iface, =
pDestSurface);=0A=
+=0A=
+ start.x =3D 0;=0A=
+ start.y =3D 0;=0A=
+=0A=
+ if (This->presentParms.Windowed) {=0A=
+ MapWindowPoints(This->win_handle, NULL, &start, 1);=0A=
+ }=0A=
+=0A=
+ IWineD3DSurface_BltFast(pDestSurface, start.x, start.y, =
This->frontBuffer, NULL, 0);=0A=
+ return WINED3D_OK;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT =
iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface =
**ppBackBuffer) {=0A=
+=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+=0A=
+ if (iBackBuffer > This->presentParms.BackBufferCount - 1) {=0A=
+ TRACE("Back buffer count out of range\n");=0A=
+ /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But =
set it here=0A=
+ * in wined3d to avoid problems in other libs=0A=
+ */=0A=
+ *ppBackBuffer =3D NULL;=0A=
+ return WINED3DERR_INVALIDCALL;=0A=
+ }=0A=
+=0A=
+ *ppBackBuffer =3D This->backBuffer[iBackBuffer];=0A=
+ TRACE("(%p) : BackBuf %d Type %d returning %p\n", This, =
iBackBuffer, Type, *ppBackBuffer);=0A=
+=0A=
+ /* Note inc ref on returned surface */=0A=
+ if(*ppBackBuffer) IWineD3DSurface_AddRef(*ppBackBuffer);=0A=
+ return WINED3D_OK;=0A=
+=0A=
+}=0A=
+=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, =
WINED3DRASTER_STATUS *pRasterStatus) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ static BOOL showFixmes =3D TRUE;=0A=
+ pRasterStatus->InVBlank =3D TRUE;=0A=
+ pRasterStatus->ScanLine =3D 0;=0A=
+ /* No openGL equivalent */=0A=
+ if(showFixmes) {=0A=
+ FIXME("(%p) : stub (once)\n", This);=0A=
+ showFixmes =3D FALSE;=0A=
+ }=0A=
+ return WINED3D_OK;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface, =
WINED3DDISPLAYMODE*pMode) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ HRESULT hr;=0A=
+=0A=
+ TRACE("(%p)->(%p): Calling GetAdapterDisplayMode\n", This, pMode);=0A=
+ hr =3D IWineD3D_GetAdapterDisplayMode(This->wineD3DDevice->wineD3D, =
This->wineD3DDevice->adapter->num, pMode);=0A=
+=0A=
+ TRACE("(%p) : returning w(%d) h(%d) rr(%d) fmt(%u,%s)\n", This, =
pMode->Width, pMode->Height, pMode->RefreshRate,=0A=
+ pMode->Format, debug_d3dformat(pMode->Format));=0A=
+ return hr;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDevice(IWineD3DSwapChain =
*iface, IWineD3DDevice**ppDevice) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+=0A=
+ *ppDevice =3D (IWineD3DDevice *) This->wineD3DDevice;=0A=
+=0A=
+ /* Note Calling this method will increase the internal reference =
count=0A=
+ on the IDirect3DDevice9 interface. */=0A=
+ IWineD3DDevice_AddRef(*ppDevice);=0A=
+ TRACE("(%p) : returning %p\n", This, *ppDevice);=0A=
+ return WINED3D_OK;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetPresentParameters(IWineD3DSwapChain *iface, =
WINED3DPRESENT_PARAMETERS *pPresentationParameters) {=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ TRACE("(%p)\n", This);=0A=
+=0A=
+ *pPresentationParameters =3D This->presentParms;=0A=
+=0A=
+ return WINED3D_OK;=0A=
+}=0A=
+=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_SetGammaRamp(IWineD3DSwapChain =
*iface, DWORD Flags, CONST WINED3DGAMMARAMP *pRamp){=0A=
+=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ HDC hDC;=0A=
+ TRACE("(%p) : pRamp@%p flags(%d)\n", This, pRamp, Flags);=0A=
+ hDC =3D GetDC(This->win_handle);=0A=
+ SetDeviceGammaRamp(hDC, (LPVOID)pRamp);=0A=
+ ReleaseDC(This->win_handle, hDC);=0A=
+ return WINED3D_OK;=0A=
+=0A=
+}=0A=
+=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetGammaRamp(IWineD3DSwapChain =
*iface, WINED3DGAMMARAMP *pRamp){=0A=
+=0A=
+ IWineD3DSwapChainImpl *This =3D (IWineD3DSwapChainImpl *)iface;=0A=
+ HDC hDC;=0A=
+ TRACE("(%p) : pRamp@%p\n", This, pRamp);=0A=
+ hDC =3D GetDC(This->win_handle);=0A=
+ GetDeviceGammaRamp(hDC, pRamp);=0A=
+ ReleaseDC(This->win_handle, hDC);=0A=
+ return WINED3D_OK;=0A=
+=0A=
+}=0A=
diff --git a/dlls/wined3d/wined3d_private.h =
b/dlls/wined3d/wined3d_private.h=0A=
index 91617e8..0629dd2 100644=0A=
--- a/dlls/wined3d/wined3d_private.h=0A=
+++ b/dlls/wined3d/wined3d_private.h=0A=
@@ -1746,6 +1746,19 @@ typedef struct IWineD3DSwapChainImpl=0A=
=0A=
extern const IWineD3DSwapChainVtbl IWineD3DSwapChain_Vtbl;=0A=
=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_QueryInterface(IWineD3DSwapChain *iface, =
REFIID riid, LPVOID *ppobj);=0A=
+ULONG WINAPI IWineD3DBaseSwapChainImpl_AddRef(IWineD3DSwapChain *iface);=0A=
+ULONG WINAPI IWineD3DBaseSwapChainImpl_Release(IWineD3DSwapChain =
*iface);=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetParent(IWineD3DSwapChain =
*iface, IUnknown ** ppParent);=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *iface, =
IWineD3DSurface *pDestSurface);=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT =
iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface =
**ppBackBuffer);=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, =
WINED3DRASTER_STATUS *pRasterStatus);=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetDisplayMode(IWineD3DSwapChain *iface, =
WINED3DDISPLAYMODE*pMode);=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetDevice(IWineD3DSwapChain =
*iface, IWineD3DDevice**ppDevice);=0A=
+HRESULT WINAPI =
IWineD3DBaseSwapChainImpl_GetPresentParameters(IWineD3DSwapChain *iface, =
WINED3DPRESENT_PARAMETERS *pPresentationParameters);=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_SetGammaRamp(IWineD3DSwapChain =
*iface, DWORD Flags, CONST WINED3DGAMMARAMP *pRamp);=0A=
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetGammaRamp(IWineD3DSwapChain =
*iface, WINED3DGAMMARAMP *pRamp);=0A=
+=0A=
WineD3DContext =
*IWineD3DSwapChainImpl_CreateContextForThread(IWineD3DSwapChain *iface);=0A=
=0A=
=
/************************************************************************=
*****=0A=
-- =0A=
1.5.4.5=0A=
=0A=
------=_NextPart_000_0025_01C90123.F5B9D6D0--
More information about the wine-patches
mailing list