diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-04-19 22:55:48 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-04-19 22:55:48 +0300 |
commit | a738e985c6d3b5d3803aa3dc5c48b0bd0e4cfa8a (patch) | |
tree | da554188229933bf2a5d5863e69e8c0479b72372 /source/blender/blenkernel | |
parent | 72efee07ff837ca4651e25b63c0029b81e2d61b1 (diff) |
Fix update drawing curve editmode
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/curve_render.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/curve_render.c b/source/blender/blenkernel/intern/curve_render.c index 31ec2ccc760..18fe02be5b4 100644 --- a/source/blender/blenkernel/intern/curve_render.c +++ b/source/blender/blenkernel/intern/curve_render.c @@ -322,6 +322,15 @@ static bool curve_batch_cache_valid(Curve *cu) return false; } + if (cache->is_editmode) { + if ((cache->hide_handles != ((cu->drawflag & CU_HIDE_HANDLES) != 0))) { + return false; + } + else if ((cache->hide_normals != ((cu->drawflag & CU_HIDE_NORMALS) != 0))) { + return false; + } + } + if (cache->is_dirty == false) { return true; } @@ -330,12 +339,6 @@ static bool curve_batch_cache_valid(Curve *cu) if (cache->is_editmode) { return false; } - else if ((cache->hide_handles != ((cu->drawflag & CU_HIDE_HANDLES) != 0))) { - return false; - } - else if ((cache->hide_normals != ((cu->drawflag & CU_HIDE_NORMALS) != 0))) { - return false; - } } return true; @@ -352,8 +355,8 @@ static void curve_batch_cache_init(Curve *cu) memset(cache, 0, sizeof(*cache)); } - cache->hide_handles = (cu->flag & CU_HIDE_HANDLES) != 0; - cache->hide_normals = (cu->flag & CU_HIDE_NORMALS) != 0; + cache->hide_handles = (cu->drawflag & CU_HIDE_HANDLES) != 0; + cache->hide_normals = (cu->drawflag & CU_HIDE_NORMALS) != 0; #if 0 ListBase *nurbs; @@ -408,8 +411,10 @@ void BKE_curve_batch_cache_clear(Curve *cu) BATCH_DISCARD_ALL_SAFE(cache->overlay.edges); if (cache->wire.batch) { - /* Also handles: 'cache->wire.verts', 'cache->wire.edges', 'cache->wire.elem' */ BATCH_DISCARD_ALL_SAFE(cache->wire.batch); + cache->wire.verts = NULL; + cache->wire.edges = NULL; + cache->wire.elem = NULL; } else { VERTEXBUFFER_DISCARD_SAFE(cache->wire.verts); @@ -419,6 +424,9 @@ void BKE_curve_batch_cache_clear(Curve *cu) if (cache->normal.batch) { BATCH_DISCARD_ALL_SAFE(cache->normal.batch); + cache->normal.verts = NULL; + cache->normal.edges = NULL; + cache->normal.elem = NULL; } else { VERTEXBUFFER_DISCARD_SAFE(cache->normal.verts); |