forked from drath/libratbag
Fix device capability check
We now have a lot more bits to cater for, so let's use an array.
Broken with 487e66e64d
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
committed by
Benjamin Tissoires
parent
2c4cdc6dc6
commit
df2a06690d
@@ -78,6 +78,8 @@ struct ratbag {
|
||||
enum ratbag_log_priority log_priority;
|
||||
};
|
||||
|
||||
#define MAX_CAP 1000
|
||||
|
||||
struct ratbag_device {
|
||||
char *name;
|
||||
void *userdata;
|
||||
@@ -88,7 +90,7 @@ struct ratbag_device {
|
||||
struct input_id ids;
|
||||
struct ratbag_driver *driver;
|
||||
struct ratbag *ratbag;
|
||||
unsigned long capabilities;
|
||||
unsigned long capabilities[NLONGS(MAX_CAP)];
|
||||
|
||||
unsigned num_profiles;
|
||||
struct list profiles;
|
||||
|
||||
@@ -808,17 +808,20 @@ void
|
||||
ratbag_device_set_capability(struct ratbag_device *device,
|
||||
enum ratbag_device_capability cap)
|
||||
{
|
||||
device->capabilities |= (1UL << cap);
|
||||
if (cap == RATBAG_DEVICE_CAP_NONE || cap >= MAX_CAP)
|
||||
abort();
|
||||
|
||||
long_set_bit(device->capabilities, cap);
|
||||
}
|
||||
|
||||
LIBRATBAG_EXPORT int
|
||||
ratbag_device_has_capability(const struct ratbag_device *device,
|
||||
enum ratbag_device_capability cap)
|
||||
{
|
||||
if (cap == RATBAG_DEVICE_CAP_NONE)
|
||||
if (cap == RATBAG_DEVICE_CAP_NONE || cap >= MAX_CAP)
|
||||
abort();
|
||||
|
||||
return !!(device->capabilities & (1UL << cap));
|
||||
return long_bit_is_set(device->capabilities, cap);
|
||||
}
|
||||
|
||||
static inline enum ratbag_error_code
|
||||
|
||||
Reference in New Issue
Block a user