wined3d: Properly free srgb textures.
This commit is contained in:
parent
2e119a2718
commit
7d5285acc1
|
@ -53,19 +53,7 @@ HRESULT basetexture_init(IWineD3DBaseTextureImpl *texture, UINT levels, WINED3DR
|
||||||
|
|
||||||
void basetexture_cleanup(IWineD3DBaseTexture *iface)
|
void basetexture_cleanup(IWineD3DBaseTexture *iface)
|
||||||
{
|
{
|
||||||
IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
|
basetexture_unload(iface);
|
||||||
IWineD3DDeviceImpl *device = This->resource.wineD3DDevice;
|
|
||||||
|
|
||||||
TRACE("(%p) : textureName(%d)\n", This, This->baseTexture.textureName);
|
|
||||||
if (This->baseTexture.textureName != 0) {
|
|
||||||
ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
|
|
||||||
ENTER_GL();
|
|
||||||
TRACE("(%p) : Deleting texture %d\n", This, This->baseTexture.textureName);
|
|
||||||
glDeleteTextures(1, &This->baseTexture.textureName);
|
|
||||||
glDeleteTextures(1, &This->baseTexture.srgbTextureName);
|
|
||||||
LEAVE_GL();
|
|
||||||
}
|
|
||||||
|
|
||||||
resource_cleanup((IWineD3DResource *)iface);
|
resource_cleanup((IWineD3DResource *)iface);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,8 +66,14 @@ void basetexture_unload(IWineD3DBaseTexture *iface)
|
||||||
ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
|
ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
|
||||||
ENTER_GL();
|
ENTER_GL();
|
||||||
glDeleteTextures(1, &This->baseTexture.textureName);
|
glDeleteTextures(1, &This->baseTexture.textureName);
|
||||||
glDeleteTextures(1, &This->baseTexture.srgbTextureName);
|
|
||||||
This->baseTexture.textureName = 0;
|
This->baseTexture.textureName = 0;
|
||||||
|
LEAVE_GL();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(This->baseTexture.srgbTextureName) {
|
||||||
|
ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD);
|
||||||
|
ENTER_GL();
|
||||||
|
glDeleteTextures(1, &This->baseTexture.srgbTextureName);
|
||||||
This->baseTexture.srgbTextureName = 0;
|
This->baseTexture.srgbTextureName = 0;
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
}
|
}
|
||||||
|
|
|
@ -892,6 +892,8 @@ static void WINAPI IWineD3DSurfaceImpl_UnLoad(IWineD3DSurface *iface) {
|
||||||
ENTER_GL();
|
ENTER_GL();
|
||||||
glDeleteTextures(1, &This->glDescription.textureName);
|
glDeleteTextures(1, &This->glDescription.textureName);
|
||||||
This->glDescription.textureName = 0;
|
This->glDescription.textureName = 0;
|
||||||
|
glDeleteTextures(1, &This->glDescription.srgbTextureName);
|
||||||
|
This->glDescription.srgbTextureName = 0;
|
||||||
LEAVE_GL();
|
LEAVE_GL();
|
||||||
} else {
|
} else {
|
||||||
IWineD3DBaseTexture_Release(texture);
|
IWineD3DBaseTexture_Release(texture);
|
||||||
|
|
Loading…
Reference in New Issue