Module: wine Branch: master Commit: ba6fac697af10de7845f3690eb9891b93f46bfd9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba6fac697af10de7845f3690eb...
Author: Stefan Dösinger stefan@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;