Fix T81200: Crash on certain armature select operators when OpenGL Depth

Picking is disabled

Affected were (at least)
- Select Linked pick
- Select Shortest Path

Was originally caused by rB8b347fc2cdc6 [which got improved in
rBfc8a7a44b200 - but only partially].

After removal of BONESEL_NOSEL we have to filter out -1 from the hits for
any bone picking it seems (since armature drawing uses this).
In rBfc8a7a44b200, this was done for 'ED_armature_edit_select_pick' (or
'get_nearest_editbonepoint' precisely), now do this for
'ed_armature_pick_bone_impl' as well.

Reviewers: campbellbarton

Maniphest Tasks: T81200

Differential Revision: https://developer.blender.org/D9080
This commit is contained in:
Philipp Oeser 2020-10-01 18:11:51 +02:00
parent 8157305869
commit e3b49bb850
Notes: blender-bot 2023-02-14 07:40:56 +01:00
Referenced by issue #81200, Select linked on armatures crashes when OpenGL Depth Picking is disabled
1 changed files with 10 additions and 2 deletions

View File

@ -335,8 +335,16 @@ static void *ed_armature_pick_bone_impl(
BLI_rcti_init_pt_radius(&rect, xy, 0);
hits = view3d_opengl_select(
&vc, buffer, MAXPICKBUF, &rect, VIEW3D_SELECT_PICK_NEAREST, VIEW3D_SELECT_FILTER_NOP);
/* Don't use hits with this ID, (armature drawing uses this). */
const int select_id_ignore = -1;
hits = view3d_opengl_select_with_id_filter(&vc,
buffer,
MAXPICKBUF,
&rect,
VIEW3D_SELECT_PICK_NEAREST,
VIEW3D_SELECT_FILTER_NOP,
select_id_ignore);
*r_base = NULL;