[2/5] wined3d: Move storing the render target from ActiveRender to SetRenderTarget

H. Verbeet hverbeet at gmail.com
Tue Dec 19 12:25:29 CST 2006


This shouldn't be in ActiveRender in the first place.

Changelog:
  - Move storing the render target from ActiveRender to SetRenderTarget
  - Use the render target index rather than hardcoding 0
-------------- next part --------------
---

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

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index ccc4fdd..fc15ca3 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -5871,6 +5871,12 @@ static HRESULT WINAPI IWineD3DDeviceImpl
         implementations that use separate pbuffers for different swapchains or rendertargets will have to duplicate the
         stencil buffer and incure an extra memory overhead */
         hr = IWineD3DDeviceImpl_ActiveRender(iface, pRenderTarget);
+
+        /* Replace the render target */
+        if (This->render_targets[RenderTargetIndex]) IWineD3DSurface_Release(This->render_targets[RenderTargetIndex]);
+        This->render_targets[RenderTargetIndex] = pRenderTarget;
+        if (pRenderTarget) IWineD3DSurface_AddRef(pRenderTarget);
+
         if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) {
             set_render_target_fbo(iface, pRenderTarget);
         }
@@ -6352,13 +6358,6 @@ #if defined(GL_VERSION_1_3)
         device_render_to_texture(This, TRUE);
     }
 
-    /* Replace the render target */
-    if (This->render_targets[0] != RenderSurface) {
-        IWineD3DSurface_Release(This->render_targets[0]);
-        This->render_targets[0] = RenderSurface;
-        IWineD3DSurface_AddRef(RenderSurface);
-    }
-
     if (cfgs != NULL)                   XFree(cfgs);
     if (implicitSwapchain != NULL)       IWineD3DSwapChain_Release(implicitSwapchain);
     if (currentSwapchain != NULL)       IWineD3DSwapChain_Release(currentSwapchain);


More information about the wine-patches mailing list