wined3d: Check subresources for NULL during texture cleanup.

This fixes a regression introduced by
1de6adfbae.
This commit is contained in:
Henri Verbeet 2011-03-07 01:30:31 +01:00 committed by Alexandre Julliard
parent cc2cd5a525
commit 9059271442
3 changed files with 13 additions and 6 deletions

View File

@ -179,10 +179,12 @@ static void cubetexture_cleanup(IWineD3DCubeTextureImpl *This)
for (i = 0; i < sub_count; ++i)
{
IWineD3DSurfaceImpl *surface = surface_from_resource(This->baseTexture.sub_resources[i]);
struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
if (surface)
if (sub_resource)
{
IWineD3DSurfaceImpl *surface = surface_from_resource(sub_resource);
/* Clean out the texture name we gave to the surface so that the
* surface doesn't try and release it. */
surface_set_texture_name(surface, 0, TRUE);

View File

@ -201,9 +201,12 @@ static void texture_cleanup(IWineD3DTextureImpl *This)
for (i = 0; i < This->baseTexture.level_count; ++i)
{
IWineD3DSurfaceImpl *surface = surface_from_resource(This->baseTexture.sub_resources[i]);
if (surface)
struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
if (sub_resource)
{
IWineD3DSurfaceImpl *surface = surface_from_resource(sub_resource);
/* Clean out the texture name we gave to the surface so that the
* surface doesn't try and release it */
surface_set_texture_name(surface, 0, TRUE);

View File

@ -121,10 +121,12 @@ static void volumetexture_cleanup(IWineD3DVolumeTextureImpl *This)
for (i = 0; i < This->baseTexture.level_count; ++i)
{
IWineD3DVolumeImpl *volume = volume_from_resource(This->baseTexture.sub_resources[i]);
struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
if (volume)
if (sub_resource)
{
IWineD3DVolumeImpl *volume = volume_from_resource(sub_resource);
/* Cleanup the container. */
volume_set_container(volume, NULL);
IWineD3DVolume_Release((IWineD3DVolume *)volume);