struct Render;
struct RenderInfo;
struct Scene;
+struct ScrArea;
/* render_ops.c */
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 */
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 *