static void texture_cleanup(IWineD3DBaseTextureImpl *This) { unsigned int i; TRACE("(%p) : Cleaning up\n", This); for (i = 0; i < This->baseTexture.level_count; ++i) { 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); surface_set_texture_name(surface, 0, FALSE); surface_set_texture_target(surface, 0); surface_set_container(surface, WINED3D_CONTAINER_NONE, NULL); IWineD3DSurface_Release((IWineD3DSurface *)surface); } } TRACE("(%p) : Cleaning up base texture\n", This); basetexture_cleanup((IWineD3DBaseTextureImpl *)This); }
static void volumetexture_cleanup(IWineD3DVolumeTextureImpl *This) { unsigned int i; TRACE("(%p) : Cleaning up.\n", This); for (i = 0; i < This->baseTexture.levels; ++i) { IWineD3DVolume *volume = This->volumes[i]; if (volume) { /* Cleanup the container. */ IWineD3DVolume_SetContainer(volume, NULL); IWineD3DVolume_Release(volume); } } basetexture_cleanup((IWineD3DBaseTexture *)This); }
static void volumetexture_cleanup(IWineD3DBaseTextureImpl *This) { unsigned int i; TRACE("(%p) : Cleaning up.\n", This); for (i = 0; i < This->baseTexture.level_count; ++i) { struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i]; if (sub_resource) { IWineD3DVolumeImpl *volume = volume_from_resource(sub_resource); /* Cleanup the container. */ volume_set_container(volume, NULL); IWineD3DVolume_Release((IWineD3DVolume *)volume); } } basetexture_cleanup((IWineD3DBaseTextureImpl *)This); }
static void texture_cleanup(IWineD3DTextureImpl *This) { unsigned int i; TRACE("(%p) : Cleaning up\n", This); for (i = 0; i < This->baseTexture.levels; ++i) { if (This->surfaces[i]) { /* Clean out the texture name we gave to the surface so that the * surface doesn't try and release it */ surface_set_texture_name(This->surfaces[i], 0, TRUE); surface_set_texture_name(This->surfaces[i], 0, FALSE); surface_set_texture_target(This->surfaces[i], 0); IWineD3DSurface_SetContainer(This->surfaces[i], 0); IWineD3DSurface_Release(This->surfaces[i]); } } TRACE("(%p) : Cleaning up base texture\n", This); basetexture_cleanup((IWineD3DBaseTexture *)This); }