[Bf-blender-cvs] [33d3dcdb00c] temp-lanpr-staging: View3D: Circle Select optimization

2019-08-15 Thread mano-wii
Commit: 33d3dcdb00c99217333d8919565830807199d23f
Author: mano-wii
Date:   Sun Aug 11 22:12:11 2019 -0300
Branches: temp-lanpr-staging
https://developer.blender.org/rB33d3dcdb00c99217333d8919565830807199d23f

View3D: Circle Select optimization

Don't recreate `select_bitmap` for each edited object.

===

M   source/blender/editors/space_view3d/view3d_select.c

===

diff --git a/source/blender/editors/space_view3d/view3d_select.c 
b/source/blender/editors/space_view3d/view3d_select.c
index d20a854c022..3e2d387bcec 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -3392,7 +3392,9 @@ static bool mesh_circle_select(ViewContext *vc,
   struct EditSelectBuf_Cache *esel = wm_userdata->data;
 
   if (use_zbuf) {
-esel->select_bitmap = DRW_select_buffer_bitmap_from_circle(mval, (int)(rad 
+ 1.0f), NULL);
+if (esel->select_bitmap == NULL) {
+  esel->select_bitmap = DRW_select_buffer_bitmap_from_circle(mval, 
(int)(rad + 1.0f), NULL);
+}
   }
 
   if (ts->selectmode & SCE_SELECT_VERTEX) {
@@ -3432,13 +3434,6 @@ static bool mesh_circle_select(ViewContext *vc,
 }
   }
 
-  if (use_zbuf) {
-if (esel->select_bitmap != NULL) {
-  MEM_freeN(esel->select_bitmap);
-  esel->select_bitmap = NULL;
-}
-  }
-
   changed |= data.is_changed;
 
   if (changed) {
@@ -4020,6 +4015,13 @@ static int view3d_circle_select_exec(bContext *C, 
wmOperator *op)
   if (wm_userdata == _userdata_buf) {
 WM_generic_user_data_free(wm_userdata);
   }
+  else {
+struct EditSelectBuf_Cache *esel = wm_userdata->data;
+if (esel && esel->select_bitmap) {
+  MEM_freeN(esel->select_bitmap);
+  esel->select_bitmap = NULL;
+}
+  }
 
   return OPERATOR_FINISHED;
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs


[Bf-blender-cvs] [33d3dcdb00c] temp-lanpr-staging: View3D: Circle Select optimization

2019-08-14 Thread mano-wii
Commit: 33d3dcdb00c99217333d8919565830807199d23f
Author: mano-wii
Date:   Sun Aug 11 22:12:11 2019 -0300
Branches: temp-lanpr-staging
https://developer.blender.org/rB33d3dcdb00c99217333d8919565830807199d23f

View3D: Circle Select optimization

Don't recreate `select_bitmap` for each edited object.

===

M   source/blender/editors/space_view3d/view3d_select.c

===

diff --git a/source/blender/editors/space_view3d/view3d_select.c 
b/source/blender/editors/space_view3d/view3d_select.c
index d20a854c022..3e2d387bcec 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -3392,7 +3392,9 @@ static bool mesh_circle_select(ViewContext *vc,
   struct EditSelectBuf_Cache *esel = wm_userdata->data;
 
   if (use_zbuf) {
-esel->select_bitmap = DRW_select_buffer_bitmap_from_circle(mval, (int)(rad 
+ 1.0f), NULL);
+if (esel->select_bitmap == NULL) {
+  esel->select_bitmap = DRW_select_buffer_bitmap_from_circle(mval, 
(int)(rad + 1.0f), NULL);
+}
   }
 
   if (ts->selectmode & SCE_SELECT_VERTEX) {
@@ -3432,13 +3434,6 @@ static bool mesh_circle_select(ViewContext *vc,
 }
   }
 
-  if (use_zbuf) {
-if (esel->select_bitmap != NULL) {
-  MEM_freeN(esel->select_bitmap);
-  esel->select_bitmap = NULL;
-}
-  }
-
   changed |= data.is_changed;
 
   if (changed) {
@@ -4020,6 +4015,13 @@ static int view3d_circle_select_exec(bContext *C, 
wmOperator *op)
   if (wm_userdata == _userdata_buf) {
 WM_generic_user_data_free(wm_userdata);
   }
+  else {
+struct EditSelectBuf_Cache *esel = wm_userdata->data;
+if (esel && esel->select_bitmap) {
+  MEM_freeN(esel->select_bitmap);
+  esel->select_bitmap = NULL;
+}
+  }
 
   return OPERATOR_FINISHED;
 }

___
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs