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:
authormano-wii <germano.costa@ig.com.br>2019-08-12 04:12:11 +0300
committermano-wii <germano.costa@ig.com.br>2019-08-12 04:12:11 +0300
commit52421e9ace745985a88dd61ee903502d4039f595 (patch)
treeb3265722fc3c21b8cd7a85c6d51d72e3dfb9b46d /source/blender/editors/space_view3d/view3d_select.c
parent0d719fcacb3bb17e948afb62130c7162858ed80e (diff)
View3D: Circle Select optimization
Don't recreate `select_bitmap` for each edited object.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_select.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c18
1 files changed, 10 insertions, 8 deletions
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 == &wm_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;
}