Stefan Dösinger : wined3d: Create a separate function for deleting GL textures.

Alexandre Julliard julliard at winehq.org
Wed Sep 23 11:03:14 CDT 2009


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Sat Sep 19 15:06:35 2009 +0200

wined3d: Create a separate function for deleting GL textures.

---

 dlls/wined3d/basetexture.c |   25 +++++++++++++++----------
 1 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c
index 6da25e9..b38f668 100644
--- a/dlls/wined3d/basetexture.c
+++ b/dlls/wined3d/basetexture.c
@@ -70,25 +70,30 @@ void basetexture_cleanup(IWineD3DBaseTexture *iface)
     resource_cleanup((IWineD3DResource *)iface);
 }
 
+/* A GL context is provided by the caller */
+static void gltexture_delete(struct gl_texture *tex)
+{
+    ENTER_GL();
+    glDeleteTextures(1, &tex->name);
+    LEAVE_GL();
+    tex->name = 0;
+}
+
 void basetexture_unload(IWineD3DBaseTexture *iface)
 {
     IWineD3DTextureImpl *This = (IWineD3DTextureImpl *)iface;
     IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
 
-    if(This->baseTexture.texture_rgb.name) {
+    if(This->baseTexture.texture_rgb.name ||
+       This->baseTexture.texture_srgb.name) {
         ActivateContext(device, NULL, CTXUSAGE_RESOURCELOAD);
-        ENTER_GL();
-        glDeleteTextures(1, &This->baseTexture.texture_rgb.name);
-        This->baseTexture.texture_rgb.name = 0;
-        LEAVE_GL();
     }
 
+    if(This->baseTexture.texture_rgb.name) {
+        gltexture_delete(&This->baseTexture.texture_rgb);
+    }
     if(This->baseTexture.texture_srgb.name) {
-        ActivateContext(device, NULL, CTXUSAGE_RESOURCELOAD);
-        ENTER_GL();
-        glDeleteTextures(1, &This->baseTexture.texture_srgb.name);
-        This->baseTexture.texture_srgb.name = 0;
-        LEAVE_GL();
+        gltexture_delete(&This->baseTexture.texture_srgb);
     }
     This->baseTexture.texture_rgb.dirty = TRUE;
     This->baseTexture.texture_srgb.dirty = TRUE;




More information about the wine-cvs mailing list