[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