[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