Add a ratbag_device_get_svg_name() function

To retrieve which SVG file is associated to which device.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
This commit is contained in:
Benjamin Tissoires
2015-09-02 11:02:03 -04:00
parent 4644614da5
commit 1e1dfd02fd
6 changed files with 24 additions and 2 deletions

View File

@@ -744,7 +744,7 @@ static const struct ratbag_id etekcity_table[] = {
.vendor = USB_VENDOR_ID_ETEKCITY, .vendor = USB_VENDOR_ID_ETEKCITY,
.product = 0x4011, .product = 0x4011,
.version = VERSION_ANY }, .version = VERSION_ANY },
.data = 1, .svg_filename = "etekcity.svg",
}, },
{ }, { },

View File

@@ -273,7 +273,8 @@ static const struct ratbag_id hidpp10drv_table[] = {
{ .id = LOGITECH_DEVICE(BUS_USB, 0x1028) }, { .id = LOGITECH_DEVICE(BUS_USB, 0x1028) },
/* G500s */ /* G500s */
{ .id = LOGITECH_DEVICE(BUS_USB, 0xc24e) }, { .id = LOGITECH_DEVICE(BUS_USB, 0xc24e),
.svg_filename = "logitech-g500s.svg" },
{ }, { },
}; };

View File

@@ -54,6 +54,7 @@ struct ratbag {
struct ratbag_device { struct ratbag_device {
char *name; char *name;
const char *svg_name;
void *userdata; void *userdata;
struct udev_device *udev_device; struct udev_device *udev_device;
@@ -74,6 +75,7 @@ struct ratbag_device {
struct ratbag_id { struct ratbag_id {
struct input_id id; struct input_id id;
const char *svg_filename;
unsigned long data; unsigned long data;
}; };

View File

@@ -287,10 +287,12 @@ ratbag_find_driver(struct ratbag_device *device, const struct input_id *dev_id)
if (ratbag_match_id(dev_id, &matching_id->id)) { if (ratbag_match_id(dev_id, &matching_id->id)) {
matched_id.id = *dev_id; matched_id.id = *dev_id;
matched_id.data = matching_id->data; matched_id.data = matching_id->data;
matched_id.svg_filename = matching_id->svg_filename;
device->driver = driver; device->driver = driver;
rc = driver->probe(device, matched_id); rc = driver->probe(device, matched_id);
if (rc == 0) { if (rc == 0) {
log_debug(ratbag, "driver match found\n"); log_debug(ratbag, "driver match found\n");
device->svg_name = matching_id->svg_filename;
return driver; return driver;
} }
@@ -438,6 +440,12 @@ ratbag_device_get_name(const struct ratbag_device* device)
return device->name; return device->name;
} }
LIBRATBAG_EXPORT const char *
ratbag_device_get_svg_name(const struct ratbag_device* device)
{
return device->svg_name;
}
static void static void
ratbag_register_driver(struct ratbag *ratbag, struct ratbag_driver *driver) ratbag_register_driver(struct ratbag *ratbag, struct ratbag_driver *driver)
{ {

View File

@@ -386,6 +386,16 @@ ratbag_device_get_user_data(const struct ratbag_device *device);
const char * const char *
ratbag_device_get_name(const struct ratbag_device* device); ratbag_device_get_name(const struct ratbag_device* device);
/**
* @ingroup device
*
* @param device A previously initialized ratbag device
* @return The file name of the svg drawing associated with the given ratbag.
* If there is no file associated to the device, NULL is returned.
*/
const char *
ratbag_device_get_svg_name(const struct ratbag_device* device);
/** /**
* @ingroup device * @ingroup device
*/ */

View File

@@ -21,6 +21,7 @@ global:
ratbag_device_get_num_buttons; ratbag_device_get_num_buttons;
ratbag_device_get_num_profiles; ratbag_device_get_num_profiles;
ratbag_device_get_profile_by_index; ratbag_device_get_profile_by_index;
ratbag_device_get_svg_name;
ratbag_device_get_user_data; ratbag_device_get_user_data;
ratbag_device_has_capability; ratbag_device_has_capability;
ratbag_device_new_from_udev_device; ratbag_device_new_from_udev_device;