diff options
Diffstat (limited to 'source/blender/editors/render/render_update.c')
-rw-r--r-- | source/blender/editors/render/render_update.c | 48 |
1 files changed, 16 insertions, 32 deletions
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index 4e02ff77a31..42d914b1a71 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -48,12 +48,14 @@ #include "BKE_context.h" #include "BKE_DerivedMesh.h" #include "BKE_icons.h" +#include "BKE_layer.h" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_node.h" #include "BKE_paint.h" #include "BKE_scene.h" +#include "GPU_lamp.h" #include "GPU_material.h" #include "GPU_buffers.h" @@ -64,6 +66,8 @@ #include "ED_render.h" #include "ED_view3d.h" +#include "WM_api.h" + #include "render_intern.h" // own include extern Material defmaterial; @@ -102,7 +106,7 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated) wm = bmain->wm.first; for (win = wm->windows.first; win; win = win->next) { - bScreen *sc = win->screen; + bScreen *sc = WM_window_get_active_screen(win); ScrArea *sa; ARegion *ar; @@ -344,7 +348,6 @@ static void material_changed(Main *bmain, Material *ma) static void lamp_changed(Main *bmain, Lamp *la) { Object *ob; - Material *ma; /* icons */ BKE_icon_changed(BKE_icon_id_ensure(&la->id)); @@ -354,10 +357,6 @@ static void lamp_changed(Main *bmain, Lamp *la) if (ob->data == la && ob->gpulamp.first) GPU_lamp_free(ob); - for (ma = bmain->mat.first; ma; ma = ma->id.next) - if (ma->gpumaterial.first) - GPU_material_free(&ma->gpumaterial); - if (defmaterial.gpumaterial.first) GPU_material_free(&defmaterial.gpumaterial); } @@ -378,6 +377,7 @@ static void texture_changed(Main *bmain, Tex *tex) Lamp *la; World *wo; Scene *scene; + SceneLayer *sl; Object *ob; bNode *node; bool texture_draw = false; @@ -386,8 +386,11 @@ static void texture_changed(Main *bmain, Tex *tex) BKE_icon_changed(BKE_icon_id_ensure(&tex->id)); /* paint overlays */ - for (scene = bmain->scene.first; scene; scene = scene->id.next) - BKE_paint_invalidate_overlay_tex(scene, tex); + for (scene = bmain->scene.first; scene; scene = scene->id.next) { + for (sl = scene->render_layers.first; sl; sl = sl->next) { + BKE_paint_invalidate_overlay_tex(scene, sl, tex); + } + } /* find materials */ for (ma = bmain->mat.first; ma; ma = ma->id.next) { @@ -468,18 +471,15 @@ static void texture_changed(Main *bmain, Tex *tex) } } -static void world_changed(Main *bmain, World *wo) +static void world_changed(Main *UNUSED(bmain), World *wo) { - Material *ma; - /* icons */ BKE_icon_changed(BKE_icon_id_ensure(&wo->id)); + + /* XXX temporary flag waiting for depsgraph proper tagging */ + wo->update_flag = 1; /* glsl */ - for (ma = bmain->mat.first; ma; ma = ma->id.next) - if (ma->gpumaterial.first) - GPU_material_free(&ma->gpumaterial); - if (defmaterial.gpumaterial.first) GPU_material_free(&defmaterial.gpumaterial); @@ -503,31 +503,15 @@ static void image_changed(Main *bmain, Image *ima) static void scene_changed(Main *bmain, Scene *scene) { Object *ob; - Material *ma; - World *wo; /* glsl */ for (ob = bmain->object.first; ob; ob = ob->id.next) { - if (ob->gpulamp.first) - GPU_lamp_free(ob); - if (ob->mode & OB_MODE_TEXTURE_PAINT) { BKE_texpaint_slots_refresh_object(scene, ob); BKE_paint_proj_mesh_data_check(scene, ob, NULL, NULL, NULL, NULL); GPU_drawobject_free(ob->derivedFinal); } } - - for (ma = bmain->mat.first; ma; ma = ma->id.next) - if (ma->gpumaterial.first) - GPU_material_free(&ma->gpumaterial); - - for (wo = bmain->world.first; wo; wo = wo->id.next) - if (wo->gpumaterial.first) - GPU_material_free(&wo->gpumaterial); - - if (defmaterial.gpumaterial.first) - GPU_material_free(&defmaterial.gpumaterial); } void ED_render_id_flush_update(Main *bmain, ID *id) @@ -572,6 +556,6 @@ void ED_render_internal_init(void) RenderEngineType *ret = RE_engines_find(RE_engine_id_BLENDER_RENDER); ret->view_update = render_view3d_update; - ret->view_draw = render_view3d_draw; + ret->render_to_view = render_view3d_draw; } |