diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-04-06 20:53:48 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2010-04-06 20:53:48 +0400 |
commit | be6d0ca63b823ea93f183e31dbda9bc2cdd6af6a (patch) | |
tree | c32de0c48ccd7353055388985fe135362f4eb185 /source/blender | |
parent | 7b4536b3a9b82b24ebd0a5a7dc5f9721e07672ba (diff) |
Fix #21166: changing image file path does not update texture preview. I've
made it regenerate previews and icons now for this case. Depsgraph for all
datablocks could solve this much nicer..
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/render/render_shading.c | 16 | ||||
-rw-r--r-- | source/blender/editors/space_buttons/space_buttons.c | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_image.c | 3 |
3 files changed, 20 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 870eea74464..efd579735e0 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -196,6 +196,19 @@ static void world_changed(Main *bmain, World *wo) GPU_material_free(ma); } +static void image_changed(Main *bmain, Image *ima) +{ + Tex *tex; + + /* icons */ + BKE_icon_changed(BKE_icon_getid(&ima->id)); + + /* textures */ + for(tex=bmain->tex.first; tex; tex=tex->id.next) + if(tex->ima == ima) + texture_changed(bmain, tex); +} + void ED_render_id_flush_update(Main *bmain, ID *id) { if(!id) @@ -214,6 +227,9 @@ void ED_render_id_flush_update(Main *bmain, ID *id) case ID_LA: lamp_changed(bmain, (Lamp*)id); break; + case ID_IM: + image_changed(bmain, (Image*)id); + break; default: break; } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index 352f5131903..06a574d2e83 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -341,6 +341,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) sbuts->preview= 1; break; case NC_TEXTURE: + case NC_IMAGE: ED_area_tag_redraw(sa); sbuts->preview= 1; break; diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index 7fc9673f3e5..f13bdd4ceee 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -33,6 +33,7 @@ #include "DNA_scene_types.h" #include "BKE_context.h" +#include "BKE_depsgraph.h" #include "BKE_image.h" #include "WM_types.h" @@ -78,6 +79,7 @@ static void rna_Image_source_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; BKE_image_signal(ima, NULL, IMA_SIGNAL_SRC_CHANGE); + DAG_id_flush_update(&ima->id, 0); } static void rna_Image_fields_update(Main *bmain, Scene *scene, PointerRNA *ptr) @@ -105,6 +107,7 @@ static void rna_Image_reload_update(Main *bmain, Scene *scene, PointerRNA *ptr) { Image *ima= ptr->id.data; BKE_image_signal(ima, NULL, IMA_SIGNAL_RELOAD); + DAG_id_flush_update(&ima->id, 0); } static void rna_Image_generated_update(Main *bmain, Scene *scene, PointerRNA *ptr) |