mirror of
https://gitlab.freedesktop.org/libinput/libei.git
synced 2026-01-04 17:50:16 +01:00
ei: fix ei_seat_unbind_capabilities
Simplify the code a little but more importantly: if we get down to zero capabilities close the devices - just like we do in ei_seat_unbind_capability.
This commit is contained in:
parent
1a4764d99b
commit
cf74cfeb1e
1 changed files with 11 additions and 6 deletions
|
|
@ -332,7 +332,7 @@ ei_seat_unbind_capabilities(struct ei_seat *seat, ...)
|
|||
return;
|
||||
}
|
||||
|
||||
uint32_t mask = 0;
|
||||
uint32_t old_mask = seat->capabilities_bound;
|
||||
enum ei_device_capability cap;
|
||||
|
||||
va_list args;
|
||||
|
|
@ -341,14 +341,19 @@ ei_seat_unbind_capabilities(struct ei_seat *seat, ...)
|
|||
if (!is_known_cap(cap))
|
||||
continue;
|
||||
|
||||
mask_add(mask, cap);
|
||||
mask_remove(seat->capabilities_bound, cap);
|
||||
}
|
||||
|
||||
mask = seat->capabilities & ~mask;
|
||||
|
||||
if (seat->capabilities_bound == mask)
|
||||
if (seat->capabilities_bound == old_mask)
|
||||
return;
|
||||
|
||||
seat->capabilities_bound = mask;
|
||||
if (seat->capabilities_bound == 0) {
|
||||
struct ei_device *device;
|
||||
list_for_each(device, &seat->devices, link) {
|
||||
if (ei_device_has_capability(device, cap))
|
||||
ei_device_close(device);
|
||||
}
|
||||
}
|
||||
|
||||
ei_seat_send_bind(seat, seat->capabilities_bound);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue