Matteo Bruni : wined3d: Make context_acquire() unconditional in a bunch of places.

Alexandre Julliard julliard at winehq.org
Thu Aug 25 13:00:13 CDT 2011


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

Author: Matteo Bruni <mbruni at codeweavers.com>
Date:   Wed Jul 27 23:14:34 2011 +0200

wined3d: Make context_acquire() unconditional in a bunch of places.

---

 dlls/wined3d/surface.c |   40 ++++++++++++++++++----------------------
 dlls/wined3d/texture.c |   11 +++++------
 2 files changed, 23 insertions(+), 28 deletions(-)

diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 0572b47..110d68a 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3861,11 +3861,12 @@ void surface_internal_preload(struct wined3d_surface *surface, enum WINED3DSRGB
     }
     else
     {
-        struct wined3d_context *context = NULL;
+        struct wined3d_context *context;
 
         TRACE("(%p) : About to load surface\n", surface);
 
-        if (!device->isInDraw) context = context_acquire(device, NULL);
+        /* TODO: Use already acquired context when possible. */
+        context = context_acquire(device, NULL);
 
         if (surface->resource.format->id == WINED3DFMT_P8_UINT
                 || surface->resource.format->id == WINED3DFMT_P8_UINT_A8_UNORM)
@@ -3892,7 +3893,7 @@ void surface_internal_preload(struct wined3d_surface *surface, enum WINED3DSRGB
             LEAVE_GL();
         }
 
-        if (context) context_release(context);
+        context_release(context);
     }
 }
 
@@ -5888,16 +5889,15 @@ static void surface_load_sysmem(struct wined3d_surface *surface,
     if (surface->flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX))
     {
         struct wined3d_device *device = surface->resource.device;
-        struct wined3d_context *context = NULL;
+        struct wined3d_context *context;
 
-        if (!device->isInDraw)
-            context = context_acquire(device, NULL);
+        /* TODO: Use already acquired context when possible. */
+        context = context_acquire(device, NULL);
 
         surface_bind_and_dirtify(surface, gl_info, !(surface->flags & SFLAG_INTEXTURE));
         surface_download_data(surface, gl_info);
 
-        if (context)
-            context_release(context);
+        context_release(context);
 
         return;
     }
@@ -5943,17 +5943,16 @@ static HRESULT surface_load_drawable(struct wined3d_surface *surface,
      * called. */
     if ((convert != NO_CONVERSION) && (surface->flags & SFLAG_PBO))
     {
-        struct wined3d_context *context = NULL;
+        struct wined3d_context *context;
 
         TRACE("Removing the pbo attached to surface %p.\n", surface);
 
-        if (!device->isInDraw)
-            context = context_acquire(device, NULL);
+        /* TODO: Use already acquired context when possible. */
+        context = context_acquire(device, NULL);
 
         surface_remove_pbo(surface, gl_info);
 
-        if (context)
-            context_release(context);
+        context_release(context);
     }
 
     if ((convert != NO_CONVERSION) && surface->resource.allocatedMemory)
@@ -6003,7 +6002,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
     const DWORD attach_flags = WINED3DFMT_FLAG_FBO_ATTACHABLE | WINED3DFMT_FLAG_FBO_ATTACHABLE_SRGB;
     RECT src_rect = {0, 0, surface->resource.width, surface->resource.height};
     struct wined3d_device *device = surface->resource.device;
-    struct wined3d_context *context = NULL;
+    struct wined3d_context *context;
     UINT width, src_pitch, dst_pitch;
     struct wined3d_bo_address data;
     struct wined3d_format format;
@@ -6067,8 +6066,8 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
         surface_load_location(surface, SFLAG_INSYSMEM, rect);
     }
 
-    if (!device->isInDraw)
-        context = context_acquire(device, NULL);
+    /* TODO: Use already acquired context when possible. */
+    context = context_acquire(device, NULL);
 
     surface_prepare_texture(surface, gl_info, srgb);
     surface_bind_and_dirtify(surface, gl_info, srgb);
@@ -6104,8 +6103,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
         if (!(mem = HeapAlloc(GetProcessHeap(), 0, dst_pitch * height)))
         {
             ERR("Out of memory (%u).\n", dst_pitch * height);
-            if (context)
-                context_release(context);
+            context_release(context);
             return E_OUTOFMEMORY;
         }
         format.convert(surface->resource.allocatedMemory, mem, src_pitch, width, height);
@@ -6122,8 +6120,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
         if (!(mem = HeapAlloc(GetProcessHeap(), 0, dst_pitch * height)))
         {
             ERR("Out of memory (%u).\n", dst_pitch * height);
-            if (context)
-                context_release(context);
+            context_release(context);
             return E_OUTOFMEMORY;
         }
         d3dfmt_convert_surface(surface->resource.allocatedMemory, mem, src_pitch,
@@ -6138,8 +6135,7 @@ static HRESULT surface_load_texture(struct wined3d_surface *surface,
     data.addr = mem;
     surface_upload_data(surface, gl_info, &format, &src_rect, width, &dst_point, srgb, &data);
 
-    if (context)
-        context_release(context);
+    context_release(context);
 
     /* Don't delete PBO memory. */
     if ((mem != surface->resource.allocatedMemory) && !(surface->flags & SFLAG_PBO))
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 31bb5b5..48d64c7 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -1068,15 +1068,15 @@ static HRESULT texture3d_bind(struct wined3d_texture *texture,
 static void texture3d_preload(struct wined3d_texture *texture, enum WINED3DSRGB srgb)
 {
     struct wined3d_device *device = texture->resource.device;
-    struct wined3d_context *context = NULL;
+    struct wined3d_context *context;
     BOOL srgb_was_toggled = FALSE;
     unsigned int i;
 
     TRACE("texture %p, srgb %#x.\n", texture, srgb);
 
-    if (!device->isInDraw)
-        context = context_acquire(device, NULL);
-    else if (texture->bind_count > 0)
+    /* TODO: Use already acquired context when possible. */
+    context = context_acquire(device, NULL);
+    if (texture->bind_count > 0)
     {
         BOOL texture_srgb = texture->flags & WINED3D_TEXTURE_IS_SRGB;
         BOOL sampler_srgb = texture_srgb_mode(texture, srgb);
@@ -1115,8 +1115,7 @@ static void texture3d_preload(struct wined3d_texture *texture, enum WINED3DSRGB
         TRACE("Texture %p not dirty, nothing to do.\n", texture);
     }
 
-    if (context)
-        context_release(context);
+    context_release(context);
 
     /* No longer dirty */
     texture->texture_rgb.dirty = FALSE;




More information about the wine-cvs mailing list