Commit: d4e7288af9caec2c5f5a2af758d265663fd75063
Author: Clément Foucault
Date:   Mon Mar 6 03:58:08 2017 +0100
Branches: blender2.8
https://developer.blender.org/rBd4e7288af9caec2c5f5a2af758d265663fd75063

Edit Mode overlay: Update cache on selection

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

M       source/blender/blenkernel/BKE_mesh_render.h
M       source/blender/blenkernel/intern/mesh_render.c
M       source/blender/editors/space_view3d/space_view3d.c

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

diff --git a/source/blender/blenkernel/BKE_mesh_render.h 
b/source/blender/blenkernel/BKE_mesh_render.h
index 31c57d4513..0b51dc3d9d 100644
--- a/source/blender/blenkernel/BKE_mesh_render.h
+++ b/source/blender/blenkernel/BKE_mesh_render.h
@@ -33,6 +33,7 @@ struct Batch;
 struct Mesh;
 
 void BKE_mesh_batch_cache_dirty(struct Mesh *me);
+void BKE_mesh_batch_selection_dirty(struct Mesh *me);
 void BKE_mesh_batch_cache_clear(struct Mesh *me);
 void BKE_mesh_batch_cache_free(struct Mesh *me);
 struct Batch *BKE_mesh_batch_cache_get_all_edges(struct Mesh *me);
diff --git a/source/blender/blenkernel/intern/mesh_render.c 
b/source/blender/blenkernel/intern/mesh_render.c
index ad0353b9ba..67991d08f9 100644
--- a/source/blender/blenkernel/intern/mesh_render.c
+++ b/source/blender/blenkernel/intern/mesh_render.c
@@ -811,6 +811,30 @@ void BKE_mesh_batch_cache_dirty(struct Mesh *me)
        }
 }
 
+void BKE_mesh_batch_selection_dirty(struct Mesh *me)
+{
+       MeshBatchCache *cache = me->batch_cache;
+       if (cache) {
+               /* TODO Separate Flag vbo */
+               if (cache->overlay_triangles) {
+                       Batch_discard_all(cache->overlay_triangles);
+                       cache->overlay_triangles = NULL;
+               }
+               if (cache->overlay_loose_verts) {
+                       Batch_discard_all(cache->overlay_loose_verts);
+                       cache->overlay_loose_verts = NULL;
+               }
+               if (cache->overlay_loose_edges) {
+                       Batch_discard_all(cache->overlay_loose_edges);
+                       cache->overlay_loose_edges = NULL;
+               }
+               if (cache->overlay_facedots) {
+                       Batch_discard_all(cache->overlay_facedots);
+                       cache->overlay_facedots = NULL;
+               }
+       }
+}
+
 void BKE_mesh_batch_cache_clear(Mesh *me)
 {
        MeshBatchCache *cache = me->batch_cache;
diff --git a/source/blender/editors/space_view3d/space_view3d.c 
b/source/blender/editors/space_view3d/space_view3d.c
index b57f8e9d40..7920631b10 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -47,6 +47,7 @@
 #include "BKE_icons.h"
 #include "BKE_library.h"
 #include "BKE_main.h"
+#include "BKE_mesh_render.h"
 #include "BKE_object.h"
 #include "BKE_scene.h"
 #include "BKE_screen.h"
@@ -893,9 +894,18 @@ static void view3d_main_region_listener(bScreen *sc, 
ScrArea *sa, ARegion *ar, w
                        break;
                case NC_GEOM:
                        switch (wmn->data) {
+                               case ND_SELECT:
+                               {
+                                       if (scene->obedit) {
+                                               Object *ob = scene->obedit;
+                                               if (ob->type == OB_MESH) {
+                                                       struct Mesh *me = 
ob->data;
+                                                       
BKE_mesh_batch_selection_dirty(me);
+                                               }
+                                       }
+                               }
                                case ND_DATA:
                                case ND_VERTEX_GROUP:
-                               case ND_SELECT:
                                        ED_region_tag_redraw(ar);
                                        break;
                        }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to