Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-02-26 08:04:23 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-02-26 08:04:23 +0300
commit06961515e414cc9c0f9289a538a369fce1ef5c7d (patch)
treef7c3412e39ac3598b31e90d9d7d74bd31f2206ae /source/blender/draw/intern/draw_cache_impl_mesh.c
parent58a394073fcd2cf009724514b483aa36b554c3cd (diff)
Fix T61965: Crash edit-mesh drawing w/ hidden faces
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_mesh.c')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_mesh.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.c b/source/blender/draw/intern/draw_cache_impl_mesh.c
index 3562bfeaa95..aa89d4b5e30 100644
--- a/source/blender/draw/intern/draw_cache_impl_mesh.c
+++ b/source/blender/draw/intern/draw_cache_impl_mesh.c
@@ -3382,8 +3382,8 @@ static void mesh_create_loops_lines(
if (!BM_elem_flag_test(bm_edge, BM_ELEM_HIDDEN) &&
bm_edge->l != NULL)
{
- BMLoop *bm_loop1 = BM_vert_find_first_loop(bm_edge->v1);
- BMLoop *bm_loop2 = BM_vert_find_first_loop(bm_edge->v2);
+ BMLoop *bm_loop1 = BM_vert_find_first_loop_visible(bm_edge->v1);
+ BMLoop *bm_loop2 = BM_vert_find_first_loop_visible(bm_edge->v2);
int v1 = BM_elem_index_get(bm_loop1);
int v2 = BM_elem_index_get(bm_loop2);
if (v1 > v2) {
@@ -3625,7 +3625,8 @@ static void mesh_create_edit_loops_points_lines(MeshRenderData *rdata, GPUIndexB
BMEdge *eed;
BM_ITER_MESH (eed, &iter, bm, BM_EDGES_OF_MESH) {
if (!BM_elem_flag_test(eed, BM_ELEM_HIDDEN)) {
- if (eed->l != NULL) {
+ BMLoop *l = BM_edge_find_first_loop_visible(eed);
+ if (l != NULL) {
int v1 = BM_elem_index_get(eed->l);
int v2 = BM_elem_index_get(eed->l->next);
GPU_indexbuf_add_line_verts(&elb_edge, v1, v2);
@@ -3638,7 +3639,7 @@ static void mesh_create_edit_loops_points_lines(MeshRenderData *rdata, GPUIndexB
BMVert *eve;
BM_ITER_MESH (eve, &iter, bm, BM_VERTS_OF_MESH) {
if (!BM_elem_flag_test(eve, BM_ELEM_HIDDEN)) {
- BMLoop *l = BM_vert_find_first_loop(eve);
+ BMLoop *l = BM_vert_find_first_loop_visible(eve);
if (l != NULL) {
int v = BM_elem_index_get(l);
GPU_indexbuf_add_generic_vert(&elb_vert, v);