Remove Deform Delay armature option
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 7 Jun 2019 08:44:18 +0000 (10:44 +0200)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 7 Jun 2019 08:47:22 +0000 (10:47 +0200)
This option can not be supported by a new granular dependency graph,
and, especially, copy-on-write.

It was always doing full update ever since initial commit of new dependency
graph which we are using here in the studio for the past years and lack of
this option was never brought up.

Fixes T65557: Delay refresh option in armatures is broken

release/scripts/startup/bl_ui/properties_data_armature.py
source/blender/blenloader/intern/versioning_280.c
source/blender/editors/armature/pose_lib.c
source/blender/editors/transform/transform_conversions.c
source/blender/editors/transform/transform_generics.c
source/blender/makesdna/DNA_armature_types.h
source/blender/makesrna/intern/rna_armature.c

index a87f09b..9df767d 100644 (file)
@@ -96,8 +96,6 @@ class DATA_PT_display(ArmatureButtonsPanel, Panel):
         if ob:
             col = flow.column()
             col.prop(ob, "show_in_front", text="In Front")
-        col = flow.column()
-        col.prop(arm, "use_deform_delay", text="Delay Refresh")
 
 
 class DATA_MT_bone_group_context_menu(Menu):
index 152cde0..8d0c416 100644 (file)
@@ -3068,8 +3068,8 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
     }
 
     LISTBASE_FOREACH (bArmature *, arm, &bmain->armatures) {
-      arm->flag &= ~(ARM_FLAG_UNUSED_1 | ARM_FLAG_UNUSED_5 | ARM_FLAG_UNUSED_7 |
-                     ARM_FLAG_UNUSED_12);
+      arm->flag &= ~(ARM_FLAG_UNUSED_1 | ARM_FLAG_UNUSED_5 | ARM_FLAG_UNUSED_6 |
+                     ARM_FLAG_UNUSED_7 | ARM_FLAG_UNUSED_12);
     }
 
     LISTBASE_FOREACH (Text *, text, &bmain->texts) {
@@ -3506,5 +3506,9 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
                                             COLLECTION_RESTRICT_RENDER);
       }
     }
+
+    LISTBASE_FOREACH (bArmature *, arm, &bmain->armatures) {
+      arm->flag &= ~(ARM_FLAG_UNUSED_6);
+    }
   }
 }
index 4bcfdc7..96ba621 100644 (file)
@@ -1165,16 +1165,7 @@ static void poselib_preview_apply(bContext *C, wmOperator *op)
       RNA_int_set(op->ptr, "pose_index", -2); /* -2 means don't apply any pose */
     }
 
-    /* old optimize trick... this enforces to bypass the depsgraph
-     * - note: code copied from transform_generics.c -> recalcData()
-     */
-    // FIXME: shouldn't this use the builtin stuff?
-    if ((pld->arm->flag & ARM_DELAYDEFORM) == 0) {
-      DEG_id_tag_update(&pld->ob->id, ID_RECALC_GEOMETRY); /* sets recalc flags */
-    }
-    else {
-      BKE_pose_where_is(CTX_data_depsgraph(C), pld->scene, pld->ob);
-    }
+    DEG_id_tag_update(&pld->ob->id, ID_RECALC_GEOMETRY);
   }
 
   /* do header print - if interactively previewing */
@@ -1709,7 +1700,6 @@ static void poselib_preview_cleanup(bContext *C, wmOperator *op)
   Scene *scene = pld->scene;
   Object *ob = pld->ob;
   bPose *pose = pld->pose;
-  bArmature *arm = pld->arm;
   bAction *act = pld->act;
   TimeMarker *marker = pld->marker;
 
@@ -1724,15 +1714,7 @@ static void poselib_preview_cleanup(bContext *C, wmOperator *op)
   if (pld->state == PL_PREVIEW_CANCEL) {
     poselib_backup_restore(pld);
 
-    /* old optimize trick... this enforces to bypass the depgraph
-     * - note: code copied from transform_generics.c -> recalcData()
-     */
-    if ((arm->flag & ARM_DELAYDEFORM) == 0) {
-      DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY); /* sets recalc flags */
-    }
-    else {
-      BKE_pose_where_is(CTX_data_depsgraph(C), scene, ob);
-    }
+    DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
   }
   else if (pld->state == PL_PREVIEW_CONFIRM) {
     /* tag poses as appropriate */
index 19a61e1..2dad3ae 100644 (file)
@@ -7426,12 +7426,10 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
 
     FOREACH_TRANS_DATA_CONTAINER (t, tc) {
 
-      bArmature *arm;
       bPoseChannel *pchan;
       short targetless_ik = 0;
 
       ob = tc->poseobj;
-      arm = ob->data;
 
       if ((t->flag & T_AUTOIK) && (t->options & CTX_AUTOCONFIRM)) {
         /* when running transform non-interactively (operator exec),
@@ -7470,14 +7468,6 @@ void special_aftertrans_update(bContext *C, TransInfo *t)
         autokeyframe_pose(C, t->scene, ob, t->mode, targetless_ik);
         DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
       }
-      else if (arm->flag & ARM_DELAYDEFORM) {
-        /* TODO(sergey): Armature is already updated by recalcData(), so we
-         * might save some time by skipping re-evaluating it. But this isn't
-         * possible yet within new dependency graph, and also other contexts
-         * might need to update their CoW copies.
-         */
-        DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
-      }
       else {
         DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
       }
index d6c0971..4a9584e 100644 (file)
@@ -1046,7 +1046,6 @@ static void recalcData_objects(TransInfo *t)
 
     FOREACH_TRANS_DATA_CONTAINER (t, tc) {
       Object *ob = tc->poseobj;
-      bArmature *arm = ob->data;
       bPose *pose = ob->pose;
 
       if (pose->flag & POSE_MIRROR_EDIT) {
@@ -1083,15 +1082,7 @@ static void recalcData_objects(TransInfo *t)
         BLI_gset_insert(motionpath_updates, ob);
       }
 
-      /* old optimize trick... this enforces to bypass the depgraph */
-      if (!(arm->flag & ARM_DELAYDEFORM)) {
-        DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY); /* sets recalc flags */
-        /* transformation of pose may affect IK tree, make sure it is rebuilt */
-        BIK_clear_data(ob->pose);
-      }
-      else {
-        BKE_pose_where_is(t->depsgraph, t->scene, ob);
-      }
+      DEG_id_tag_update(&ob->id, ID_RECALC_GEOMETRY);
     }
 
     /* Update motion paths once for all transformed bones in an object. */
index 589b657..088fd96 100644 (file)
@@ -147,7 +147,7 @@ typedef enum eArmature_Flag {
   ARM_DRAWNAMES = (1 << 3),
   ARM_POSEMODE = (1 << 4),
   ARM_FLAG_UNUSED_5 = (1 << 5), /* cleared */
-  ARM_DELAYDEFORM = (1 << 6),
+  ARM_FLAG_UNUSED_6 = (1 << 6), /* cleared */
   ARM_FLAG_UNUSED_7 = (1 << 7),
   ARM_MIRROR_EDIT = (1 << 8),
   ARM_FLAG_UNUSED_9 = (1 << 9),
index d008189..c470cbe 100644 (file)
@@ -1411,12 +1411,6 @@ static void rna_def_armature(BlenderRNA *brna)
   RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
   RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
 
-  prop = RNA_def_property(srna, "use_deform_delay", PROP_BOOLEAN, PROP_NONE);
-  RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_DELAYDEFORM);
-  RNA_def_property_ui_text(
-      prop, "Delay Deform", "Don't deform children when manipulating bones in Pose Mode");
-  RNA_def_property_update(prop, 0, "rna_Armature_update_data");
-
   prop = RNA_def_property(srna, "use_mirror_x", PROP_BOOLEAN, PROP_NONE);
   RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_MIRROR_EDIT);
   RNA_def_property_ui_text(