Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-15 16:40:09 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-07-15 18:24:20 +0300
commitdaff18dd286920c0636329c704c3758f90be0013 (patch)
tree35e8be3c10ffb81c95ecce8d94fe5b326664c96c /source/blender
parent846e5f1dc0dd969d9a472a6bfb272375c45e2811 (diff)
Fix T63349: image texture garbage collection causing freezes
Images were being freed often because the tagging for when the image was last used was missing. Differential Revision: https://developer.blender.org/D5252
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/space_image/image_draw.c3
-rw-r--r--source/blender/gpu/intern/gpu_draw.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c
index 86db6d50fcc..38253890624 100644
--- a/source/blender/editors/space_image/image_draw.c
+++ b/source/blender/editors/space_image/image_draw.c
@@ -797,6 +797,9 @@ void draw_image_main(const bContext *C, ARegion *ar)
ima = ED_space_image(sima);
ED_space_image_get_zoom(sima, ar, &zoomx, &zoomy);
+ /* Tag image as in active use for garbage collector. */
+ BKE_image_tag_time(ima);
+
show_viewer = (ima && ima->source == IMA_SRC_VIEWER) != 0;
show_render = (show_viewer && ima->type == IMA_TYPE_R_RESULT) != 0;
show_paint = (ima && (sima->mode == SI_MODE_PAINT) && (show_viewer == false) &&
diff --git a/source/blender/gpu/intern/gpu_draw.c b/source/blender/gpu/intern/gpu_draw.c
index d1d5e1d89a2..be3655648f5 100644
--- a/source/blender/gpu/intern/gpu_draw.c
+++ b/source/blender/gpu/intern/gpu_draw.c
@@ -475,6 +475,9 @@ GPUTexture *GPU_texture_from_blender(Image *ima, ImageUser *iuser, int textarget
ima->gpuflag &= ~IMA_GPU_REFRESH;
}
+ /* Tag as in active use for garbage collector. */
+ BKE_image_tag_time(ima);
+
/* Test if we already have a texture. */
GPUTexture **tex = gpu_get_image_gputexture(ima, textarget);
if (*tex) {