diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-04-26 16:30:37 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-04-26 16:30:37 +0400 |
commit | ec6c3f632ede3d9bdbc75fec19d6a0b2d49a646c (patch) | |
tree | 4058e6a1c826417be152eb1a98564c3ad93ffc0c /source/blender/editors/render | |
parent | 6d4841ba827511c64fe44987837d35ec9c30b86f (diff) |
Fix #31066: cycles keeps rendering in viewport after window closed.
Diffstat (limited to 'source/blender/editors/render')
-rw-r--r-- | source/blender/editors/render/render_update.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/source/blender/editors/render/render_update.c b/source/blender/editors/render/render_update.c index 35b4126339e..48c35873304 100644 --- a/source/blender/editors/render/render_update.c +++ b/source/blender/editors/render/render_update.c @@ -116,35 +116,40 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated) CTX_free(C); } -void ED_render_engine_changed(Main *bmain) +void ED_render_engine_area_exit(ScrArea *sa) { - /* on changing the render engine type, clear all running render engines */ - bScreen *sc; - ScrArea *sa; + /* clear all render engines in this area */ ARegion *ar; - for (sc = bmain->screen.first; sc; sc = sc->id.next) { - for (sa = sc->areabase.first; sa; sa = sa->next) { - if (sa->spacetype != SPACE_VIEW3D) - continue; + if (sa->spacetype != SPACE_VIEW3D) + return; - for (ar = sa->regionbase.first; ar; ar = ar->next) { - RegionView3D *rv3d; + for (ar = sa->regionbase.first; ar; ar = ar->next) { + RegionView3D *rv3d; - if (ar->regiontype != RGN_TYPE_WINDOW) - continue; - - rv3d = ar->regiondata; + if (ar->regiontype != RGN_TYPE_WINDOW) + continue; + + rv3d = ar->regiondata; - if (rv3d->render_engine) { - RE_engine_free(rv3d->render_engine); - rv3d->render_engine = NULL; - } - } + if (rv3d->render_engine) { + RE_engine_free(rv3d->render_engine); + rv3d->render_engine = NULL; } } } +void ED_render_engine_changed(Main *bmain) +{ + /* on changing the render engine type, clear all running render engines */ + bScreen *sc; + ScrArea *sa; + + for (sc = bmain->screen.first; sc; sc = sc->id.next) + for (sa = sc->areabase.first; sa; sa = sa->next) + ED_render_engine_area_exit(sa); +} + /***************************** Updates *********************************** * ED_render_id_flush_update gets called from DAG_id_tag_update, to do * * editor level updates when the ID changes. when these ID blocks are in * |