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