Commit: 2a3a747ca25cbaf31bb812e8ceb5e3e706e62fa9
Author: Campbell Barton
Date:   Fri Sep 8 18:51:47 2017 +1000
Branches: master
https://developer.blender.org/rB2a3a747ca25cbaf31bb812e8ceb5e3e706e62fa9

Fix T52678: Crash editing gpencil w/ frame-lock

===================================================================

M       source/blender/editors/transform/transform_conversions.c

===================================================================

diff --git a/source/blender/editors/transform/transform_conversions.c 
b/source/blender/editors/transform/transform_conversions.c
index 1e2f915b9e2..521179fc1d9 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -7835,7 +7835,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
        float mtx[3][3], smtx[3][3];
        
        const Scene *scene = CTX_data_scene(C);
-       const int cfra = CFRA;
+       const int cfra_scene = CFRA;
        
        const bool is_prop_edit = (t->flag & T_PROP_EDIT) != 0;
        const bool is_prop_edit_connected = (t->flag & T_PROP_CONNECTED) != 0;
@@ -7860,7 +7860,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
                if (gpencil_layer_is_editable(gpl) && (gpl->actframe != NULL)) {
                        bGPDframe *gpf = gpl->actframe;
                        bGPDstroke *gps;
-                       
+
                        for (gps = gpf->strokes.first; gps; gps = gps->next) {
                                /* skip strokes that are invalid for current 
view */
                                if (ED_gpencil_stroke_can_use(C, gps) == false) 
{
@@ -7916,6 +7916,7 @@ static void createTransGPencil(bContext *C, TransInfo *t)
        for (gpl = gpd->layers.first; gpl; gpl = gpl->next) {
                /* only editable and visible layers are considered */
                if (gpencil_layer_is_editable(gpl) && (gpl->actframe != NULL)) {
+                       const int cfra = (gpl->flag & GP_LAYER_FRAMELOCK) ? 
gpl->actframe->framenum : cfra_scene;
                        bGPDframe *gpf = gpl->actframe;
                        bGPDstroke *gps;
                        float diff_mat[4][4];
@@ -7932,7 +7933,6 @@ static void createTransGPencil(bContext *C, TransInfo *t)
                         * - This is useful when animating as it saves that 
"uh-oh" moment when you realize you've
                         *   spent too much time editing the wrong frame...
                         */
-                       // XXX: should this be allowed when framelock is 
enabled?
                        if (gpf->framenum != cfra) {
                                gpf = BKE_gpencil_frame_addcopy(gpl, cfra);
                                /* in some weird situations (framelock enabled) 
return NULL */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to