Docs: expand comment on tagging id properties to update
authorCampbell Barton <ideasman42@gmail.com>
Wed, 26 Feb 2020 04:15:56 +0000 (15:15 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 26 Feb 2020 04:22:46 +0000 (15:22 +1100)
Addresses issue from T74000.

source/blender/makesrna/intern/rna_access.c

index df9d99181920b22989e67b67a57156570f4d6cfe..8dd6e6982dd10623e01a756c3253aa5bb3c0533d 100644 (file)
@@ -2263,10 +2263,22 @@ static void rna_property_update(
   }
 
   if (!is_rna || (prop->flag & PROP_IDPROPERTY)) {
-    /* WARNING! This is so property drivers update the display!
-     * not especially nice  */
+
+    /* Disclaimer: this logic is not applied consistently, causing some confusing behavior.
+     *
+     * - When animated (which skips update functions).
+     * - When ID-properties are edited via Python (since RNA properties aren't used in this case).
+     *
+     * Adding updates will add a lot of overhead in the case of animation.
+     * For Python it may cause unexpected slow-downs for developers using ID-properties
+     * for data storage. Further, the root ID isn't available with nested data-structures.
+     *
+     * So editing custom properties only causes updates in the UI,
+     * keep this exception because it happens to be useful for driving settings.
+     * Python developers on the other hand will need to manually 'update_tag', see: T74000. */
     DEG_id_tag_update(ptr->owner_id,
                       ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY | ID_RECALC_PARAMETERS);
+
     WM_main_add_notifier(NC_WINDOW, NULL);
     /* Not nice as well, but the only way to make sure material preview
      * is updated with custom nodes.