[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45981] trunk/blender/source/blender/ editors: Fix #31066: cycles keeps rendering in viewport after window closed .
Brecht Van Lommel
brechtvanlommel at pandora.be
Thu Apr 26 14:30:37 CEST 2012
Revision: 45981
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45981
Author: blendix
Date: 2012-04-26 12:30:37 +0000 (Thu, 26 Apr 2012)
Log Message:
-----------
Fix #31066: cycles keeps rendering in viewport after window closed.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/ED_render.h
trunk/blender/source/blender/editors/render/render_update.c
trunk/blender/source/blender/editors/screen/screen_edit.c
Modified: trunk/blender/source/blender/editors/include/ED_render.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_render.h 2012-04-26 12:13:26 UTC (rev 45980)
+++ trunk/blender/source/blender/editors/include/ED_render.h 2012-04-26 12:30:37 UTC (rev 45981)
@@ -37,6 +37,7 @@
struct Render;
struct RenderInfo;
struct Scene;
+struct ScrArea;
/* render_ops.c */
@@ -46,6 +47,7 @@
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 */
Modified: trunk/blender/source/blender/editors/render/render_update.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_update.c 2012-04-26 12:13:26 UTC (rev 45980)
+++ trunk/blender/source/blender/editors/render/render_update.c 2012-04-26 12:30:37 UTC (rev 45981)
@@ -116,35 +116,40 @@
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 *
Modified: trunk/blender/source/blender/editors/screen/screen_edit.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_edit.c 2012-04-26 12:13:26 UTC (rev 45980)
+++ trunk/blender/source/blender/editors/screen/screen_edit.c 2012-04-26 12:30:37 UTC (rev 45981)
@@ -1154,6 +1154,9 @@
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)
More information about the Bf-blender-cvs
mailing list