X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fimage.c;h=76d9b183b730b1ef85511a101d869038b18aa8c9;hp=16b4574dab2022311cca9d25931efb07c16f56c5;hb=0a69f419ffadee5822bc103be9e85d378e0d0274;hpb=c20229ab1969aebbf9f34ad76a90662461c8b75d diff --git a/src/libgame/image.c b/src/libgame/image.c index 16b4574d..76d9b183 100644 --- a/src/libgame/image.c +++ b/src/libgame/image.c @@ -351,11 +351,11 @@ void CreateImageWithSmallImages(int pos, int zoom_factor, int tile_size) setString(&img_info->leveldir, leveldir_current->identifier); } -static void CreateImageTexturesExt(int pos, boolean force) +void CreateImageTextures(int pos) { ImageInfo *img_info = getImageInfoEntryFromImageID(pos); - if (img_info == NULL || (img_info->contains_textures && !force)) + if (img_info == NULL || img_info->contains_textures) return; CreateBitmapTextures(img_info->bitmaps); @@ -363,14 +363,25 @@ static void CreateImageTexturesExt(int pos, boolean force) img_info->contains_textures = TRUE; } -void CreateImageTextures(int pos) +void FreeImageTextures(int pos) { - CreateImageTexturesExt(pos, FALSE); + ImageInfo *img_info = getImageInfoEntryFromImageID(pos); + + if (img_info == NULL || !img_info->contains_textures) + return; + + FreeBitmapTextures(img_info->bitmaps); + + img_info->contains_textures = FALSE; } -void ReCreateImageTextures(int pos) +void FreeAllImageTextures() { - CreateImageTexturesExt(pos, TRUE); + int num_images = getImageListSize(); + int i; + + for (i = 0; i < num_images; i++) + FreeImageTextures(i); } void ScaleImage(int pos, int zoom_factor)