[Bf-blender-cvs] [7ac041d515b] asset-greasepencil: GPencil: Avoid import empty assets

Antonio Vazquez noreply at git.blender.org
Mon Jul 26 17:46:34 CEST 2021


Commit: 7ac041d515b538e3044e17529241749d8a856542
Author: Antonio Vazquez
Date:   Mon Jul 26 17:46:12 2021 +0200
Branches: asset-greasepencil
https://developer.blender.org/rB7ac041d515b538e3044e17529241749d8a856542

GPencil: Avoid import empty assets

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

M	source/blender/editors/gpencil/gpencil_asset.c

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

diff --git a/source/blender/editors/gpencil/gpencil_asset.c b/source/blender/editors/gpencil/gpencil_asset.c
index 226b4cb505f..b32d210fd3f 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -866,7 +866,7 @@ static Material *gpencil_asset_material_get_from_id(ID *id, const int slot_index
 }
 
 /* Helper: Append all strokes from the asset in the target data block. */
-static void gpencil_asset_append_strokes(tGPDasset *tgpa)
+static bool gpencil_asset_append_strokes(tGPDasset *tgpa)
 {
   bGPdata *gpd_target = tgpa->gpd;
   bGPdata *gpd_asset = tgpa->gpd_asset;
@@ -887,6 +887,12 @@ static void gpencil_asset_append_strokes(tGPDasset *tgpa)
       tgpa->data_len += BLI_listbase_count(&gpf_asset->strokes);
     }
   }
+
+  /* If the asset is empty, exit. */
+  if (tgpa->data_len == 0) {
+    return false;
+  }
+
   /* Alloc array of strokes. */
   tgpa->data = MEM_calloc_arrayN(tgpa->data_len, sizeof(tGPDAssetStroke), __func__);
   int data_index = 0;
@@ -981,6 +987,8 @@ static void gpencil_asset_append_strokes(tGPDasset *tgpa)
   gpencil_2d_cage_calc(tgpa);
   BKE_gpencil_centroid_3d(tgpa->gpd_asset, tgpa->asset_center);
   add_v3_v3(tgpa->asset_center, vec);
+
+  return true;
 }
 
 /* Helper: Clean any temp added data when the operator is canceled. */
@@ -1201,7 +1209,12 @@ static int gpencil_asset_import_invoke(bContext *C, wmOperator *op, const wmEven
   tgpa->drop[1] = event->mval[1];
 
   /* Do an initial load of the strokes in the target data block. */
-  gpencil_asset_append_strokes(tgpa);
+  if (!gpencil_asset_append_strokes(tgpa)) {
+    if (op->customdata) {
+      MEM_freeN(op->customdata);
+    }
+    return OPERATOR_CANCELLED;
+  }
 
   tgpa->draw_handle_3d = ED_region_draw_cb_activate(
       tgpa->region->type, gpencil_asset_draw, tgpa, REGION_DRAW_POST_PIXEL);



More information about the Bf-blender-cvs mailing list