Bugfix [#29629] UV animation stops working forever if Edit mode entered
authorJoshua Leung <aligorith@gmail.com>
Tue, 3 Jan 2012 02:11:11 +0000 (02:11 +0000)
committerJoshua Leung <aligorith@gmail.com>
Tue, 3 Jan 2012 02:11:11 +0000 (02:11 +0000)
Thanks Sergey for the patch!

This bug, and many like it would arise because at some point a F-Curve would get
detected as being unable to be resolved (when trying to display its name in an
Animation Editor), so gets tagged as being "disabled". It was assumed that such
channels usually belonged to deleted data or stuff that wouldn't be able to be
resolved again for a long time. However, in cases like UV settings, they may
only be unavailable temporarily.

As a compromise, this patch clears this disabled flag if a channel is found to
be now working when (in the process of finding out its name when redrawing an
Animation Editor) it can be resolved, in the same place where the disabling was
taking place. This doesn't work fullproof in tests I've done, but should be
nicer than before.

source/blender/editors/animation/anim_ipo_utils.c

index 8e36e02bbb469ba4c15109d578a8e290051d3abf..8c4e0065a1922095e66d71e62cef3e42bdfb5cea 100644 (file)
@@ -161,6 +161,11 @@ int getname_anim_fcurve(char *name, ID *id, FCurve *fcu)
                         *      use the struct's icon if it is set
                         */
                        icon= RNA_struct_ui_icon(ptr.type);
+                       
+                       /* valid path - remove the invalid tag since we now know how to use it saving
+                        * users manual effort to reenable using "Revive Disabled FCurves" [#29629]
+                        */
+                       fcu->flag &= ~FCURVE_DISABLED;
                }
                else {
                        /* invalid path */