Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2011-10-01 05:27:44 +0400
committerJoshua Leung <aligorith@gmail.com>2011-10-01 05:27:44 +0400
commitb062056c05a3b116d87466be03e0bc7d97dfca8e (patch)
tree72d3ac48c2eea8fd780e0ecf7705ed317eb60ceb
parent471ea617b2dbe002ed57ef06a7ea6ab83f0924b7 (diff)
Bugfixes for: [#28525] [#28690] [#28774] [#28777]
This commit basically disables the RNA update caches for now, and introduces a workaround/hack to ensure that modifier properties still work when animated/driven. The whole way that updates currently get handled needs reviewing in future. Fix provided by Brecht.
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c3
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c14
2 files changed, 15 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 5d01db87422..13abf18e20c 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -1160,6 +1160,8 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
return 0;
}
+ /* RNA property update disabled for now - [#28525] [#28690] [#28774] [#28777] */
+#if 0
/* buffer property update for later flushing */
if (RNA_property_update_check(prop)) {
short skip_updates_hack = 0;
@@ -1176,6 +1178,7 @@ static short animsys_write_rna_setting (PointerRNA *ptr, char *path, int array_i
if (skip_updates_hack == 0)
RNA_property_update_cache_add(&new_ptr, prop);
}
+#endif
}
/* successful */
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 6f27a104144..80a40c0a3a3 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -2028,17 +2028,27 @@ static int object_modifiers_use_time(Object *ob)
/* check whether any modifiers are animated */
if (ob->adt) {
AnimData *adt = ob->adt;
+ FCurve *fcu;
/* action - check for F-Curves with paths containing 'modifiers[' */
if (adt->action) {
- FCurve *fcu;
-
for (fcu = adt->action->curves.first; fcu; fcu = fcu->next) {
if (fcu->rna_path && strstr(fcu->rna_path, "modifiers["))
return 1;
}
}
+ /* This here allows modifier properties to get driven and still update properly
+ *
+ * Workaround to get [#26764] (e.g. subsurf levels not updating when animated/driven)
+ * working, without the updating problems ([#28525] [#28690] [#28774] [#28777]) caused
+ * by the RNA updates cache introduced in r.38649
+ */
+ for (fcu = adt->drivers.first; fcu; fcu = fcu->next) {
+ if (fcu->rna_path && strstr(fcu->rna_path, "modifiers["))
+ return 1;
+ }
+
// XXX: also, should check NLA strips, though for now assume that nobody uses
// that and we can omit that for performance reasons...
}