[Bf-blender-cvs] [9c5d1042244] blender2.8: Fix T59248: Crash in Grease Pencil Edit mode when adding Annotation

Antonioya noreply at git.blender.org
Wed Dec 12 19:48:32 CET 2018


Commit: 9c5d1042244e833704cad5b50ab89c7792448f33
Author: Antonioya
Date:   Wed Dec 12 19:48:24 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB9c5d1042244e833704cad5b50ab89c7792448f33

Fix T59248: Crash in Grease Pencil Edit mode when adding Annotation

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

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

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

diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
index fe950d2a228..2450f9419bf 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_utils.c
@@ -1387,28 +1387,32 @@ static void DRW_gpencil_shgroups_create(
 			}
 			case eGpencilBatchGroupType_Edit:
 			{
-				const int len = elm->vertex_idx - start_edit;
-				/* use always the same group */
-				DRW_shgroup_call_range_add(
-				        stl->g_data->shgrps_edit_point,
-				        cache->b_edit.batch,
-				        (!cache_ob->is_dup_ob) ? gpf->runtime.viewmatrix : cache_ob->obmat,
-				        start_edit, len);
-
-				start_edit = elm->vertex_idx;
+				if (stl->g_data->shgrps_edit_point) {
+					const int len = elm->vertex_idx - start_edit;
+					/* use always the same group */
+					DRW_shgroup_call_range_add(
+						stl->g_data->shgrps_edit_point,
+						cache->b_edit.batch,
+						(!cache_ob->is_dup_ob) ? gpf->runtime.viewmatrix : cache_ob->obmat,
+						start_edit, len);
+
+					start_edit = elm->vertex_idx;
+				}
 				break;
 			}
 			case eGpencilBatchGroupType_Edlin:
 			{
-				const int len = elm->vertex_idx - start_edlin;
-				/* use always the same group */
-				DRW_shgroup_call_range_add(
-				        stl->g_data->shgrps_edit_line,
-				        cache->b_edlin.batch,
-				        (!cache_ob->is_dup_ob) ? gpf->runtime.viewmatrix : cache_ob->obmat,
-				        start_edlin, len);
-
-				start_edlin = elm->vertex_idx;
+				if (stl->g_data->shgrps_edit_line) {
+					const int len = elm->vertex_idx - start_edlin;
+					/* use always the same group */
+					DRW_shgroup_call_range_add(
+						stl->g_data->shgrps_edit_line,
+						cache->b_edlin.batch,
+						(!cache_ob->is_dup_ob) ? gpf->runtime.viewmatrix : cache_ob->obmat,
+						start_edlin, len);
+
+					start_edlin = elm->vertex_idx;
+				}
 				break;
 			}
 			default:
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index 483d6a80991..11bb5c76257 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -719,6 +719,8 @@ void GPENCIL_draw_scene(void *ved)
 	Object *obact = draw_ctx->obact;
 	const bool playing = stl->storage->is_playing;
 	const bool is_render = stl->storage->is_render;
+	bGPdata *gpd_act = (obact) && (obact->type == OB_GPENCIL) ? (bGPdata *)obact->data : NULL;
+	const bool is_edit = GPENCIL_ANY_EDIT_MODE(gpd_act);
 
 	/* paper pass to display a comfortable area to draw over complex scenes with geometry */
 	if ((!is_render) && (obact) && (obact->type == OB_GPENCIL)) {
@@ -875,7 +877,7 @@ void GPENCIL_draw_scene(void *ved)
 				}
 			}
 			/* edit points */
-			if ((!is_render) && (!playing)) {
+			if ((!is_render) && (!playing) && (is_edit)) {
 				DRW_draw_pass(psl->edit_pass);
 			}
 		}



More information about the Bf-blender-cvs mailing list