[Bf-blender-cvs] [99fa08e94fa] soc-2020-greasepencil-curve: GPencil: Recalculate curve only in curve edit mode

Falk David noreply at git.blender.org
Thu Jul 2 22:08:15 CEST 2020


Commit: 99fa08e94fa228f3687d1d2a63419f65361e320e
Author: Falk David
Date:   Thu Jul 2 22:08:05 2020 +0200
Branches: soc-2020-greasepencil-curve
https://developer.blender.org/rB99fa08e94fa228f3687d1d2a63419f65361e320e

GPencil: Recalculate curve only in curve edit mode

Using bGPdata in BKE_gpencil_stroke_geometry_update we can check if we
are in curve edit mode and then test if we need to recalculate the curve.

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

M	source/blender/blenkernel/intern/gpencil_curve.c
M	source/blender/blenkernel/intern/gpencil_geom.c

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

diff --git a/source/blender/blenkernel/intern/gpencil_curve.c b/source/blender/blenkernel/intern/gpencil_curve.c
index 2229eb761f1..385123a71d8 100644
--- a/source/blender/blenkernel/intern/gpencil_curve.c
+++ b/source/blender/blenkernel/intern/gpencil_curve.c
@@ -638,7 +638,7 @@ void BKE_gpencil_selected_strokes_editcurve_update(bGPdata *gpd)
               gps->editcurve->flag |= GP_CURVE_RECALC_GEOMETRY;
             }
           }
-          BKE_gpencil_stroke_geometry_update(gps);
+          BKE_gpencil_stroke_geometry_update(gpd, gps);
         }
       }
     }
diff --git a/source/blender/blenkernel/intern/gpencil_geom.c b/source/blender/blenkernel/intern/gpencil_geom.c
index a288f1a7336..313699f3836 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.c
+++ b/source/blender/blenkernel/intern/gpencil_geom.c
@@ -1202,17 +1202,23 @@ void BKE_gpencil_stroke_uv_update(bGPDstroke *gps)
 }
 
 /* Recalc the internal geometry caches for fill and uvs. */
-void BKE_gpencil_stroke_geometry_update(bGPdata *UNUSED(gpd), bGPDstroke *gps)
+void BKE_gpencil_stroke_geometry_update(bGPdata *gpd, bGPDstroke *gps)
 {
   if (gps == NULL) {
     return;
   }
 
   if (gps->editcurve != NULL) {
-    if (gps->editcurve->flag & GP_CURVE_RECALC_GEOMETRY) {
-      BKE_gpencil_stroke_update_geometry_from_editcurve(gps);
-      BKE_gpencil_editcurve_stroke_sync_selection(gps, gps->editcurve);
-      gps->editcurve->flag &= ~GP_CURVE_RECALC_GEOMETRY;
+    if (GPENCIL_CURVE_EDIT_SESSIONS_ON(gpd)) {
+      /* editcurve needs update */
+      if (gps->editcurve->flag & GP_CURVE_RECALC_GEOMETRY) {
+        BKE_gpencil_stroke_update_geometry_from_editcurve(gps);
+        gps->editcurve->flag &= ~GP_CURVE_RECALC_GEOMETRY;
+      }
+    }
+    else {
+      /* geometry was updated: editcurve needs recalculation */
+      gps->editcurve->flag |= GP_CURVE_RECALC_GEOMETRY;
     }
   }



More information about the Bf-blender-cvs mailing list