[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