[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