[Bf-blender-cvs] [19ebee657e9] master: GPencil: Cleanup derived frame code

Antonioya noreply at git.blender.org
Sat Apr 27 12:02:34 CEST 2019


Commit: 19ebee657e965c5aad627156afa3ce62e47a3379
Author: Antonioya
Date:   Sat Apr 27 12:02:26 2019 +0200
Branches: master
https://developer.blender.org/rB19ebee657e965c5aad627156afa3ce62e47a3379

GPencil: Cleanup derived frame code

This is a previous step to move away the derived frame logic to be used in edit modes.

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

M	source/blender/draw/engines/gpencil/gpencil_draw_utils.c

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index 8c2dee66d92..f28c6fa11b5 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1909,6 +1909,28 @@ void DRW_gpencil_populate_multiedit(GPENCIL_e_data *e_data,
   cache->is_dirty = false;
 }
 
+/* ensure there is a derived frame */
+static void gpencil_ensure_derived_frame(bGPdata *gpd,
+                                         bGPDlayer *gpl,
+                                         bGPDframe *gpf,
+                                         GpencilBatchCache *cache,
+                                         bGPDframe **derived_gpf)
+{
+  /* create derived frames array data or expand */
+  int derived_idx = BLI_findindex(&gpd->layers, gpl);
+  *derived_gpf = &cache->derived_array[derived_idx];
+
+  /* if no derived frame or dirty cache, create a new one */
+  if ((*derived_gpf == NULL) || (cache->is_dirty)) {
+    if (*derived_gpf != NULL) {
+      /* first clear temp data */
+      BKE_gpencil_free_frame_runtime_data(*derived_gpf);
+    }
+    /* create new data (do not assign new memory)*/
+    gpencil_copy_frame(gpf, *derived_gpf);
+  }
+}
+
 /* helper for populate a complete grease pencil datablock */
 void DRW_gpencil_populate_datablock(GPENCIL_e_data *e_data,
                                     void *vedata,
@@ -2001,18 +2023,7 @@ void DRW_gpencil_populate_datablock(GPENCIL_e_data *e_data,
     }
 
     /* create derived frames array data or expand */
-    int derived_idx = BLI_findindex(&gpd->layers, gpl);
-    derived_gpf = &cache->derived_array[derived_idx];
-
-    /* if no derived frame or dirty cache, create a new one */
-    if ((derived_gpf == NULL) || (cache->is_dirty)) {
-      if (derived_gpf != NULL) {
-        /* first clear temp data */
-        BKE_gpencil_free_frame_runtime_data(derived_gpf);
-      }
-      /* create new data (do not assign new memory)*/
-      gpencil_copy_frame(gpf, derived_gpf);
-    }
+    gpencil_ensure_derived_frame(gpd, gpl, gpf, cache, &derived_gpf);
 
     /* draw onion skins */
     if (!ID_IS_LINKED(&gpd->id)) {



More information about the Bf-blender-cvs mailing list