From 8534e08a02ecdd6b4d41f14727bcd2a7cda5c862 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@wanadoo.fr>
Date: Mon, 30 Sep 2002 18:52:06 +0000
Subject: [PATCH] Implement SwapTextureHandles method.

---
 dlls/ddraw/d3ddevice/main.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/dlls/ddraw/d3ddevice/main.c b/dlls/ddraw/d3ddevice/main.c
index 82d95a718b4..f57d5538ec5 100644
--- a/dlls/ddraw/d3ddevice/main.c
+++ b/dlls/ddraw/d3ddevice/main.c
@@ -81,10 +81,15 @@ HRESULT WINAPI IDirect3DDevice2Impl_GetCaps(
 
 
 HRESULT WINAPI IDirect3DDevice2Impl_SwapTextureHandles(
-    LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lptex1,LPDIRECT3DTEXTURE2 lptex2
+    LPDIRECT3DDEVICE2 iface,LPDIRECT3DTEXTURE2 lpD3DTex1,LPDIRECT3DTEXTURE2 lpD3DTex2
 ) {
     ICOM_THIS(IDirect3DDevice2Impl,iface);
-    FIXME("(%p)->(%p,%p): stub\n", This, lptex1, lptex2);
+    IDirect3DTexture2Impl tmp;
+    TRACE("(%p)->(%p,%p)\n", This, lpD3DTex1, lpD3DTex2);
+
+    tmp = *(IDirect3DTexture2Impl*)lpD3DTex1;
+    *(IDirect3DTexture2Impl*)lpD3DTex1 = *(IDirect3DTexture2Impl*)lpD3DTex2;
+    *(IDirect3DTexture2Impl*)lpD3DTex2 = tmp;
 
     return DD_OK;
 }
@@ -471,7 +476,12 @@ HRESULT WINAPI IDirect3DDeviceImpl_SwapTextureHandles(
     LPDIRECT3DTEXTURE lpD3DTex2
 ) {
     ICOM_THIS(IDirect3DDeviceImpl,iface);
-    TRACE("(%p)->(%p,%p): stub\n", This, lpD3DTex1, lpD3DTex2);
+    IDirect3DTexture2Impl tmp;
+    TRACE("(%p)->(%p,%p)\n", This, lpD3DTex1, lpD3DTex2);
+
+    tmp = *(IDirect3DTexture2Impl*)lpD3DTex1;
+    *(IDirect3DTexture2Impl*)lpD3DTex1 = *(IDirect3DTexture2Impl*)lpD3DTex2;
+    *(IDirect3DTexture2Impl*)lpD3DTex2 = tmp;
 
     return DD_OK;
 }
-- 
GitLab