diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-02-18 17:22:02 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2019-02-18 18:38:17 +0300 |
commit | 286c34b4abb0436fb370c8d49fd73738dabc0fcf (patch) | |
tree | 270d6811a708e5466bdf91640d1c78ba29016545 /source/blender/blenkernel/intern/image.c | |
parent | a6443b5d1ed600c953ffffe91a62ded77631bbb7 (diff) |
Fix image filepath changes not refreshing all image users.
Diffstat (limited to 'source/blender/blenkernel/intern/image.c')
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index eb4d7751a5c..948d22f5146 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2775,6 +2775,19 @@ static void image_tag_frame_recalc(Image *ima, ImageUser *iuser, void *customdat if (ima == changed_image && BKE_image_is_animated(ima)) { iuser->flag |= IMA_NEED_FRAME_RECALC; + iuser->ok = 1; + } +} + +static void image_tag_reload(Image *ima, ImageUser *iuser, void *customdata) +{ + Image *changed_image = customdata; + + if (ima == changed_image) { + iuser->ok = 1; + if (iuser->scene) { + image_update_views_format(ima, iuser); + } } } @@ -2847,9 +2860,9 @@ void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal) BKE_image_free_buffers(ima); ima->ok = 1; - if (iuser) - iuser->ok = 1; - + if (iuser) { + image_tag_frame_recalc(ima, iuser, ima); + } BKE_image_walk_all_users(bmain, ima, image_tag_frame_recalc); break; @@ -2886,12 +2899,9 @@ void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal) BKE_image_free_buffers(ima); if (iuser) { - iuser->ok = 1; - if (iuser->scene) { - image_update_views_format(ima, iuser); - } + image_tag_reload(ima, iuser, ima); } - + BKE_image_walk_all_users(bmain, ima, image_tag_reload); break; case IMA_SIGNAL_USER_NEW_IMAGE: if (iuser) { |