Attempted bugfix: don't perform any keyframe remapping stuff if
authorJoshua Leung <aligorith@gmail.com>
Thu, 21 Jul 2011 00:07:07 +0000 (00:07 +0000)
committerJoshua Leung <aligorith@gmail.com>
Thu, 21 Jul 2011 00:07:07 +0000 (00:07 +0000)
rendering, to prevent any race condition problems

I've noticed some weird and random crashes recently while rendering,
which I suspect have been arising from having an Action Editor open
while rendering. Previously only the timeline was patched against
these problems, though the issues may be more widespread. Hence,
solving this problem at the root cause instead.

source/blender/editors/animation/anim_draw.c
source/blender/editors/space_time/space_time.c

index 22ab419de2e4bc555ddc55c991b79959af9ec530..2c2a8045b644bd7875bc6ba4b2c9358b01064d6f 100644 (file)
@@ -38,6 +38,7 @@
 #include "BLI_math.h"
 
 #include "BKE_context.h"
+#include "BKE_global.h"
 #include "BKE_nla.h"
 #include "BKE_object.h"
 
@@ -308,6 +309,9 @@ AnimData *ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale)
        if (ac == NULL)
                return NULL;
        
+       /* abort if rendering - we may get some race condition issues... */
+       if (G.rendering) return NULL;
+       
        /* handling depends on the type of animation-context we've got */
        if (ale)
                return ale->adt;
@@ -447,6 +451,9 @@ void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short fl
        KeyframeEditFunc sel_cb;
        float fac;
        
+       /* abort if rendering - we may get some race condition issues... */
+       if (G.rendering) return;
+       
        /* calculate mapping factor, and abort if nothing to change */
        fac= ANIM_unit_mapping_get_factor(scene, id, fcu, (flag & ANIM_UNITCONV_RESTORE));
        if (fac == 1.0f)
index 09842870dffa7fcae646a35f1d938f423615b7c9..a1347f6c306cccdf6baf55436902c88650d8d5e9 100644 (file)
@@ -480,8 +480,7 @@ static void time_main_area_draw(const bContext *C, ARegion *ar)
        UI_view2d_view_ortho(v2d);
        
        /* keyframes */
-       if(!G.rendering) /* ANIM_nla_mapping_apply_fcurve() modifies curve data while rendering, possible race condition */
-               time_draw_keyframes(C, stime, ar);
+       time_draw_keyframes(C, stime, ar);
        
        /* markers */
        UI_view2d_view_orthoSpecial(ar, v2d, 1);