View3D: Circle Select optimization
Don't recreate `select_bitmap` for each edited object.
This commit is contained in:
parent
0d719fcacb
commit
52421e9ace
Notes:
blender-bot
2023-02-14 11:25:11 +01:00
Referenced by issue #68767, Crash on loading File Referenced by issue #68574, Operator view3d.zoom_border doesn't work for bones in armature edit and pose mode Referenced by issue #68528, blender crash memory max
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue