[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26662] trunk/blender/source/blender: Fix #20928: difference boolean modifier is not applied during rendering,

Brecht Van Lommel brecht at blender.org
Sun Feb 7 11:16:42 CET 2010


Revision: 26662
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26662
Author:   blendix
Date:     2010-02-07 11:16:42 +0100 (Sun, 07 Feb 2010)

Log Message:
-----------
Fix #20928: difference boolean modifier is not applied during rendering,
fixed by last depsgraph commit and this extra check to avoid unnecessary
free of derivedmesh for sculpt/multires.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_multires.h
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/editors/screen/screen_ops.c

Modified: trunk/blender/source/blender/blenkernel/BKE_multires.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_multires.h	2010-02-07 10:04:18 UTC (rev 26661)
+++ trunk/blender/source/blender/blenkernel/BKE_multires.h	2010-02-07 10:16:42 UTC (rev 26662)
@@ -40,6 +40,7 @@
 void multires_mark_as_modified(struct Object *ob);
 
 void multires_force_update(struct Object *ob);
+void multires_force_render_update(struct Object *ob);
 
 struct DerivedMesh *multires_dm_create_from_derived(struct MultiresModifierData*,
 	int local_mmd, struct DerivedMesh*, struct Object *, int, int);

Modified: trunk/blender/source/blender/blenkernel/intern/multires.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/multires.c	2010-02-07 10:04:18 UTC (rev 26661)
+++ trunk/blender/source/blender/blenkernel/intern/multires.c	2010-02-07 10:16:42 UTC (rev 26662)
@@ -122,6 +122,7 @@
 
 void multires_force_update(Object *ob)
 {
+
 	if(ob && ob->derivedFinal) {
 		ob->derivedFinal->needsFree =1;
 		ob->derivedFinal->release(ob->derivedFinal);
@@ -129,6 +130,12 @@
 	}
 }
 
+void multires_force_render_update(Object *ob)
+{
+	if(ob && (ob->mode & OB_MODE_SCULPT) && modifiers_findByType(ob, eModifierType_Multires))
+		multires_force_update(ob);
+}
+
 /* XXX */
 #if 0
 void multiresModifier_join(Object *ob)

Modified: trunk/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-07 10:04:18 UTC (rev 26661)
+++ trunk/blender/source/blender/editors/screen/screen_ops.c	2010-02-07 10:16:42 UTC (rev 26662)
@@ -3173,7 +3173,7 @@
 	WM_cursor_wait(1);
 	
 	/* flush multires changes (for sculpt) */
-	multires_force_update(CTX_data_active_object(C));
+	multires_force_render_update(CTX_data_active_object(C));
 	
 	/* get editmode results */
 	ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO);	/* 0 = does not exit editmode */





More information about the Bf-blender-cvs mailing list