Henri Verbeet : wined3d: Don't use IWineD3DDeviceImpl_GetSwapChain() in IWineD3DDeviceImpl_Present().

Alexandre Julliard julliard at winehq.org
Fri Apr 8 10:50:57 CDT 2011


Module: wine
Branch: master
Commit: 617efafecff9083b2ed2cc4ec7e3a417635491bb
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=617efafecff9083b2ed2cc4ec7e3a417635491bb

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Thu Apr  7 18:45:57 2011 +0200

wined3d: Don't use IWineD3DDeviceImpl_GetSwapChain() in IWineD3DDeviceImpl_Present().

It adds COM overhead and validation of the swapchain index, but we already
know the index is valid.

---

 dlls/wined3d/device.c |   24 +++++++++++-------------
 1 files changed, 11 insertions(+), 13 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 44b81c4..4623494 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4778,22 +4778,20 @@ static HRESULT WINAPI IWineD3DDeviceImpl_EndScene(IWineD3DDevice *iface)
     return WINED3D_OK;
 }
 
-static HRESULT WINAPI IWineD3DDeviceImpl_Present(IWineD3DDevice *iface,
-        const RECT *pSourceRect, const RECT *pDestRect,
-        HWND hDestWindowOverride, const RGNDATA *pDirtyRegion)
+static HRESULT WINAPI IWineD3DDeviceImpl_Present(IWineD3DDevice *iface, const RECT *src_rect,
+        const RECT *dst_rect, HWND dst_window_override, const RGNDATA *dirty_region)
 {
-    IWineD3DSwapChain *swapChain = NULL;
-    int i;
-    int swapchains = IWineD3DDeviceImpl_GetNumberOfSwapChains(iface);
-
-    TRACE("iface %p.\n", iface);
+    IWineD3DDeviceImpl *device = (IWineD3DDeviceImpl *)iface;
+    UINT i;
 
-    for(i = 0 ; i < swapchains ; i ++) {
+    TRACE("iface %p, src_rect %s, dst_rect %s, dst_window_override %p, dirty_region %p.\n",
+            iface, wine_dbgstr_rect(src_rect), wine_dbgstr_rect(dst_rect),
+            dst_window_override, dirty_region);
 
-        IWineD3DDeviceImpl_GetSwapChain(iface, i, &swapChain);
-        TRACE("Presenting chain %d, %p.\n", i, swapChain);
-        IWineD3DSwapChain_Present(swapChain, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion, 0);
-        IWineD3DSwapChain_Release(swapChain);
+    for (i = 0; i < device->swapchain_count; ++i)
+    {
+        IWineD3DSwapChain_Present((IWineD3DSwapChain *)device->swapchains[i],
+                src_rect, dst_rect, dst_window_override, dirty_region, 0);
     }
 
     return WINED3D_OK;




More information about the wine-cvs mailing list