[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57351] trunk/blender/source/blender: Changes to mask evaluation

Sergey Sharybin sergey.vfx at gmail.com
Mon Jun 10 15:07:02 CEST 2013


Revision: 57351
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57351
Author:   nazgul
Date:     2013-06-10 13:07:02 +0000 (Mon, 10 Jun 2013)
Log Message:
-----------
Changes to mask evaluation

- BKE_mask_update_scene was only used with do_newframe=FALSE,
  removed this argument.

- Made it so BKE_mask_update_scene is able to handle LIB_ID_RECALC_DATA
  case. Namely, if mask ID is tagged for data update it means shapekeys
  will be re-evaluated (as if do_newframe=true).

  If mask id only tagged for LIB_ID_RECALC, then no shapekey evaluation
  happens (same as it used to behave before).

  This means, doing DAG_id_tag_update(&mask->id, OB_RECALC_DATA) will
  lead to shapekeys re-evaluation which is really needed in such
  operators as clearing shapekeys (and cleaning shapekeys which is
  in tomato branch yet).

  This is a bit silly to use OB_RECALC_DATA sine mask is not an OB,
  but could not see better way to do it now.

This fixes missing mask re-evaluation after clearing shapekey,
would expect no other functional changes.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_mask.h
    trunk/blender/source/blender/blenkernel/intern/mask.c
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/editors/mask/mask_shapekey.c

Modified: trunk/blender/source/blender/blenkernel/BKE_mask.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mask.h	2013-06-10 13:06:10 UTC (rev 57350)
+++ trunk/blender/source/blender/blenkernel/BKE_mask.h	2013-06-10 13:07:02 UTC (rev 57351)
@@ -120,7 +120,7 @@
 void BKE_mask_evaluate_all_masks(struct Main *bmain, float ctime, const int do_newframe);
 void BKE_mask_evaluate(struct Mask *mask, const float ctime, const int do_newframe);
 void BKE_mask_layer_evaluate(struct MaskLayer *masklay, const float ctime, const int do_newframe);
-void BKE_mask_update_scene(struct Main *bmain, struct Scene *scene, const int do_newframe);
+void BKE_mask_update_scene(struct Main *bmain, struct Scene *scene);
 void BKE_mask_parent_init(struct MaskParent *parent);
 void BKE_mask_calc_handle_adjacent_interp(struct MaskSpline *spline, struct MaskSplinePoint *point, const float u);
 void BKE_mask_calc_tangent_polyline(struct MaskSpline *spline, struct MaskSplinePoint *point, float t[2]);

Modified: trunk/blender/source/blender/blenkernel/intern/mask.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask.c	2013-06-10 13:06:10 UTC (rev 57350)
+++ trunk/blender/source/blender/blenkernel/intern/mask.c	2013-06-10 13:07:02 UTC (rev 57351)
@@ -1525,13 +1525,14 @@
 	}
 }
 
-void BKE_mask_update_scene(Main *bmain, Scene *scene, const int do_newframe)
+void BKE_mask_update_scene(Main *bmain, Scene *scene)
 {
 	Mask *mask;
 
 	for (mask = bmain->mask.first; mask; mask = mask->id.next) {
-		if (mask->id.flag & LIB_ID_RECALC) {
-			BKE_mask_evaluate_all_masks(bmain, CFRA, do_newframe);
+		if (mask->id.flag & (LIB_ID_RECALC | LIB_ID_RECALC_DATA)) {
+			bool do_new_frame = (mask->id.flag & LIB_ID_RECALC_DATA) != 0;
+			BKE_mask_evaluate_all_masks(bmain, CFRA, do_new_frame);
 		}
 	}
 }

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2013-06-10 13:06:10 UTC (rev 57350)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2013-06-10 13:07:02 UTC (rev 57351)
@@ -1181,7 +1181,7 @@
 	sound_update_scene(scene);
 
 	/* update masking curves */
-	BKE_mask_update_scene(bmain, scene, FALSE);
+	BKE_mask_update_scene(bmain, scene);
 	
 }
 

Modified: trunk/blender/source/blender/editors/mask/mask_shapekey.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_shapekey.c	2013-06-10 13:06:10 UTC (rev 57350)
+++ trunk/blender/source/blender/editors/mask/mask_shapekey.c	2013-06-10 13:07:02 UTC (rev 57351)
@@ -124,7 +124,7 @@
 
 	if (change) {
 		WM_event_add_notifier(C, NC_MASK | ND_DATA, mask);
-		DAG_id_tag_update(&mask->id, 0);
+		DAG_id_tag_update(&mask->id, OB_RECALC_DATA);
 
 		return OPERATOR_FINISHED;
 	}




More information about the Bf-blender-cvs mailing list