H. Verbeet : wined3d: Update refcounts when storing references in IWineD3DStateBlockImpl_Capture.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 6 05:10:23 CST 2006


Module: wine
Branch: refs/heads/master
Commit: c6515ab3072cc0b527bd0cbca970c3c59b64f397
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=c6515ab3072cc0b527bd0cbca970c3c59b64f397

Author: H. Verbeet <hverbeet at gmail.com>
Date:   Mon Feb  6 11:32:13 2006 +0100

wined3d: Update refcounts when storing references in IWineD3DStateBlockImpl_Capture.
Move TRACEs to the top of their code blocks.

---

 dlls/wined3d/stateblock.c |   29 +++++++++++++++++++++++++++--
 1 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index c1e3e94..1ef2a52 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -148,8 +148,16 @@ HRESULT WINAPI IWineD3DStateBlockImpl_Ca
 
         /* Recorded => Only update 'changed' values */
         if (This->vertexShader != targetStateBlock->vertexShader) {
+            TRACE("Updating vertex shader from %p to %p\n", This->vertexShader, targetStateBlock->vertexShader);
+
+            if (targetStateBlock->vertexShader) {
+                IWineD3DVertexShader_AddRef(targetStateBlock->vertexShader);
+            }
+            if (This->vertexShader) {
+                IWineD3DVertexShader_Release(This->vertexShader);
+            }
+
             This->vertexShader = targetStateBlock->vertexShader;
-            TRACE("Updating vertex shader to %p\n", targetStateBlock->vertexShader);
         }
 
         /* Vertex Shader Constants */
@@ -204,8 +212,16 @@ HRESULT WINAPI IWineD3DStateBlockImpl_Ca
 
         /* Recorded => Only update 'changed' values */
         if (This->pixelShader != targetStateBlock->pixelShader) {
+            TRACE("Updating pixel shader from %p to %p\n", This->pixelShader, targetStateBlock->pixelShader);
+
+            if (targetStateBlock->pixelShader) {
+                IWineD3DPixelShader_AddRef(targetStateBlock->pixelShader);
+            }
+            if (This->pixelShader) {
+                IWineD3DPixelShader_Release(This->pixelShader);
+            }
+
             This->pixelShader = targetStateBlock->pixelShader;
-            TRACE("Updating pixrl shader to %p\n", targetStateBlock->pixelShader);
         }
 
         /* Pixel Shader Constants */
@@ -244,6 +260,15 @@ HRESULT WINAPI IWineD3DStateBlockImpl_Ca
         }
 
         if(This->set.vertexDecl && This->vertexDecl != targetStateBlock->vertexDecl){
+            TRACE("Updating vertex declaration from %p to %p\n", This->vertexDecl, targetStateBlock->vertexDecl);
+
+            if (targetStateBlock->vertexDecl) {
+                IWineD3DVertexDeclaration_AddRef(targetStateBlock->vertexDecl);
+            }
+            if (This->vertexDecl) {
+                IWineD3DVertexDeclaration_Release(This->vertexDecl);
+            }
+
             This->vertexDecl = targetStateBlock->vertexDecl;
         }
 




More information about the wine-cvs mailing list