forked from bartvdbraak/blender
Fix #31066: cycles keeps rendering in viewport after window closed.
This commit is contained in:
parent
6d4841ba82
commit
ec6c3f632e
@ -37,6 +37,7 @@ struct MTex;
|
||||
struct Render;
|
||||
struct RenderInfo;
|
||||
struct Scene;
|
||||
struct ScrArea;
|
||||
|
||||
/* render_ops.c */
|
||||
|
||||
@ -46,6 +47,7 @@ void ED_operatortypes_render(void);
|
||||
|
||||
void ED_render_id_flush_update(struct Main *bmain, struct ID *id);
|
||||
void ED_render_engine_changed(struct Main *bmain);
|
||||
void ED_render_engine_area_exit(struct ScrArea *sa);
|
||||
void ED_render_scene_update(struct Main *bmain, struct Scene *scene, int updated);
|
||||
|
||||
/* render_preview.c */
|
||||
|
@ -116,33 +116,38 @@ void ED_render_scene_update(Main *bmain, Scene *scene, int updated)
|
||||
CTX_free(C);
|
||||
}
|
||||
|
||||
void ED_render_engine_area_exit(ScrArea *sa)
|
||||
{
|
||||
/* clear all render engines in this area */
|
||||
ARegion *ar;
|
||||
|
||||
if (sa->spacetype != SPACE_VIEW3D)
|
||||
return;
|
||||
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
RegionView3D *rv3d;
|
||||
|
||||
if (ar->regiontype != RGN_TYPE_WINDOW)
|
||||
continue;
|
||||
|
||||
rv3d = ar->regiondata;
|
||||
|
||||
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;
|
||||
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;
|
||||
|
||||
for (ar = sa->regionbase.first; ar; ar = ar->next) {
|
||||
RegionView3D *rv3d;
|
||||
|
||||
if (ar->regiontype != RGN_TYPE_WINDOW)
|
||||
continue;
|
||||
|
||||
rv3d = ar->regiondata;
|
||||
|
||||
if (rv3d->render_engine) {
|
||||
RE_engine_free(rv3d->render_engine);
|
||||
rv3d->render_engine = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
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 ***********************************
|
||||
|
@ -1154,6 +1154,9 @@ void ED_area_exit(bContext *C, ScrArea *sa)
|
||||
ED_fileselect_exit(C, (SpaceFile *)sl);
|
||||
}
|
||||
}
|
||||
else if (sa->spacetype == SPACE_VIEW3D) {
|
||||
ED_render_engine_area_exit(sa);
|
||||
}
|
||||
|
||||
CTX_wm_area_set(C, sa);
|
||||
for (ar= sa->regionbase.first; ar; ar= ar->next)
|
||||
|
Loading…
Reference in New Issue
Block a user