Ivan Gyurdiev : wined3d: Restore recording mode later in ActiveRender().

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 21 04:14:34 CDT 2006


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

Author: Ivan Gyurdiev <ivg231 at gmail.com>
Date:   Thu Jul 20 23:03:31 2006 -0400

wined3d: Restore recording mode later in ActiveRender().

---

 dlls/wined3d/device.c |   34 +++++++++++++++-------------------
 1 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 2956a15..fb7e084 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -7225,6 +7225,8 @@ #endif
 static HRESULT WINAPI IWineD3DDeviceImpl_ActiveRender(IWineD3DDevice* iface,
                                                IWineD3DSurface *RenderSurface) {
     HRESULT ret =  WINED3DERR_INVALIDCALL;
+    BOOL oldRecording;
+    IWineD3DStateBlockImpl *oldUpdateStateBlock;
 
     /**
     * Currently only active for GLX >= 1.3
@@ -7444,23 +7446,14 @@ #endif
         }
     }
 
-#if 1 /* Apply the stateblock to the new context
-FIXME: This is a bit of a hack, each context should know it's own state,
-the directX current directX state should then be applied to the context */
-    {
-        BOOL oldRecording;
-        IWineD3DStateBlockImpl *oldUpdateStateBlock;
-        oldUpdateStateBlock = This->updateStateBlock;
-        oldRecording= This->isRecordingState;
-        This->isRecordingState = FALSE;
-        This->updateStateBlock = This->stateBlock;
-        IWineD3DStateBlock_Apply((IWineD3DStateBlock *)This->stateBlock);
-
-        This->isRecordingState = oldRecording;
-        This->updateStateBlock = oldUpdateStateBlock;
-    }
-#endif
-
+    /* Disable recording, and apply the stateblock to the new context 
+     * FIXME: This is a bit of a hack, each context should know it's own state,
+     * the directX current directX state should then be applied to the context */
+    oldUpdateStateBlock = This->updateStateBlock;
+    oldRecording= This->isRecordingState;
+    This->isRecordingState = FALSE;
+    This->updateStateBlock = This->stateBlock;
+    IWineD3DStateBlock_Apply((IWineD3DStateBlock *)This->stateBlock);
 
     /* clean up the current rendertargets swapchain (if it belonged to one) */
     if (currentSwapchain != NULL) {
@@ -7474,10 +7467,9 @@ #endif
     IWineD3DSurface_AddRef(This->renderTarget);
     IWineD3DSurface_Release(tmp);
 
-
-
     {
         DWORD value;
+
         /* The surface must be rendered upside down to cancel the flip produce by glCopyTexImage */
         /* Check that the container is not a swapchain member */
 
@@ -7498,6 +7490,10 @@ #endif
         This->proj_valid = FALSE;
     }
 
+    /* Restore recording state */
+    This->isRecordingState = oldRecording;
+    This->updateStateBlock = oldUpdateStateBlock;
+
     ret = WINED3D_OK;
 
     if (cfgs != NULL) {




More information about the wine-cvs mailing list