[PATCH 5/6] wined3d: Move some context selection code from ActivateContext() to FindContext().

Henri Verbeet hverbeet at codeweavers.com
Wed Jul 22 03:41:09 CDT 2009


---
 dlls/wined3d/context.c |   22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 8af2b82..468b2a1 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -1614,6 +1614,13 @@ static inline WineD3DContext *FindContext(IWineD3DDeviceImpl *This, IWineD3DSurf
     const struct GlPixelFormatDesc *old, *new;
     struct WineD3DContext *context;
 
+    if (!target) target = This->activeContext->current_rt;
+
+    if (This->activeContext->current_rt == target && This->activeContext->tid == tid)
+    {
+        return This->activeContext;
+    }
+
     if (SUCCEEDED(IWineD3DSurface_GetContainer(target, &IID_IWineD3DSwapChain, (void **)&swapchain))) {
         TRACE("Rendering onscreen\n");
 
@@ -1769,6 +1776,9 @@ retry:
         This->isInDraw = oldInDraw;
     }
 
+    context->draw_buffer_dirty = TRUE;
+    context->current_rt = target;
+
     return context;
 }
 
@@ -1840,17 +1850,7 @@ void ActivateContext(IWineD3DDeviceImpl *This, IWineD3DSurface *target, ContextU
 
     TRACE("(%p): Selecting context for render target %p, thread %d\n", This, target, tid);
 
-    if (!target) target = This->activeContext->current_rt;
-
-    if (This->activeContext->current_rt != target || This->activeContext->tid != tid)
-    {
-        context = FindContext(This, target, tid);
-        context->draw_buffer_dirty = TRUE;
-        context->current_rt = target;
-    } else {
-        /* Stick to the old context */
-        context = This->activeContext;
-    }
+    context = FindContext(This, target, tid);
 
     gl_info = context->gl_info;
 
-- 
1.6.0.6




More information about the wine-patches mailing list