[Bf-blender-cvs] [ef213f1b401] greasepencil-object: GPencil: Avoid query depsgraph for every point while drawing

Antonio Vazquez noreply at git.blender.org
Mon Feb 24 16:16:38 CET 2020


Commit: ef213f1b4013f187ad8466c74e383d9c4a09a012
Author: Antonio Vazquez
Date:   Mon Feb 24 11:12:01 2020 +0100
Branches: greasepencil-object
https://developer.blender.org/rBef213f1b4013f187ad8466c74e383d9c4a09a012

GPencil: Avoid query depsgraph for every point while drawing

Now, the evaluated object is calculated before.

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

M	source/blender/editors/gpencil/gpencil_intern.h
M	source/blender/editors/gpencil/gpencil_paint.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/editors/gpencil/gpencil_utils.c
M	source/blender/editors/include/ED_gpencil.h

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

diff --git a/source/blender/editors/gpencil/gpencil_intern.h b/source/blender/editors/gpencil/gpencil_intern.h
index 8e09da60580..c8c536e24ab 100644
--- a/source/blender/editors/gpencil/gpencil_intern.h
+++ b/source/blender/editors/gpencil/gpencil_intern.h
@@ -153,6 +153,8 @@ typedef struct tGPDprimitive {
   struct Scene *scene;
   /** current active gp object */
   struct Object *ob;
+  /** current evaluated gp object */
+  struct Object *ob_eval;
   /** area where painting originated */
   struct ScrArea *sa;
   /** region where painting originated */
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 5060f3ed87d..e4e6efe181b 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -842,7 +842,7 @@ static short gp_stroke_addpoint(tGPsdata *p, const float mval[2], float pressure
     }
 
     /* Update evaluated data. */
-    ED_gpencil_sbuffer_update_eval(p->depsgraph, p->ob);
+    ED_gpencil_sbuffer_update_eval(gpd, p->ob_eval);
 
     return GP_STROKEADD_NORMAL;
   }
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index 4102904a311..4eb863a9b01 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -1041,7 +1041,7 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
   BKE_gpencil_stroke_geometry_update(gps);
 
   /* Update evaluated data. */
-  ED_gpencil_sbuffer_update_eval(tgpi->depsgraph, tgpi->ob);
+  ED_gpencil_sbuffer_update_eval(tgpi->gpd, tgpi->ob_eval);
 
   MEM_SAFE_FREE(depth_arr);
 
@@ -1134,13 +1134,14 @@ static void gpencil_primitive_init(bContext *C, wmOperator *op)
 
   /* set current scene and window info */
   tgpi->bmain = CTX_data_main(C);
+  tgpi->depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   tgpi->scene = scene;
   tgpi->ob = CTX_data_active_object(C);
+  tgpi->ob_eval = (Object *)DEG_get_evaluated_object(tgpi->depsgraph, tgpi->ob);
   tgpi->sa = CTX_wm_area(C);
   tgpi->ar = CTX_wm_region(C);
   tgpi->rv3d = tgpi->ar->regiondata;
   tgpi->v3d = tgpi->sa->spacedata.first;
-  tgpi->depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
   tgpi->win = CTX_wm_window(C);
 
   /* save original type */
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index cd91c454af4..f3b7a7bd06e 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -2470,11 +2470,8 @@ tGPspoint *ED_gpencil_sbuffer_ensure(tGPspoint *buffer_array,
   return buffer_array;
 }
 
-void ED_gpencil_sbuffer_update_eval(Depsgraph *depsgraph, Object *ob)
+void ED_gpencil_sbuffer_update_eval(bGPdata *gpd, Object *ob_eval)
 {
-  bGPdata *gpd = (bGPdata *)ob->data;
-
-  Object *ob_eval = (Object *)DEG_get_evaluated_id(depsgraph, &ob->id);
   bGPdata *gpd_eval = (bGPdata *)ob_eval->data;
 
   gpd_eval->runtime.sbuffer = gpd->runtime.sbuffer;
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index 584d0fff3a5..08d5685c0bc 100644
--- a/source/blender/editors/include/ED_gpencil.h
+++ b/source/blender/editors/include/ED_gpencil.h
@@ -278,7 +278,7 @@ struct tGPspoint *ED_gpencil_sbuffer_ensure(struct tGPspoint *buffer_array,
                                             int *buffer_size,
                                             int *buffer_used,
                                             const bool clear);
-void ED_gpencil_sbuffer_update_eval(struct Depsgraph *depsgraph, struct Object *ob);
+void ED_gpencil_sbuffer_update_eval(struct bGPdata *gpd, struct Object *ob_eval);
 
 /* Tag all scene grease pencil object to update. */
 void ED_gpencil_tag_scene_gpencil(struct Scene *scene);



More information about the Bf-blender-cvs mailing list