diff options
author | David Härdeman <david@hardeman.nu> | 2015-08-15 00:13:23 +0200 |
---|---|---|
committer | David Härdeman <david@hardeman.nu> | 2015-08-15 00:13:23 +0200 |
commit | 6d12cb6b9e9d7b67521f6ca999c933e1555a3226 (patch) | |
tree | e1d89a180ce57b532fc7756e3b43a90578b0066e /rcm-server-main.c | |
parent | 468ba7e90a5eec5213743b54aad03dde2f2f2a99 (diff) |
Add ability for server to signal rcdev errors to client
Diffstat (limited to 'rcm-server-main.c')
-rw-r--r-- | rcm-server-main.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/rcm-server-main.c b/rcm-server-main.c index 65c82f7..4a0adbc 100644 --- a/rcm-server-main.c +++ b/rcm-server-main.c @@ -54,6 +54,8 @@ property_get(sd_bus *bus, const char *path, const char *interface, return sd_bus_message_append(reply, "s", dev->keymap_name); else if (!strcmp(property, "HardwareType")) return sd_bus_message_append(reply, "s", "ir"); + else if (!strcmp(property, "Error")) + return sd_bus_message_append(reply, "s", dev->error); sd_bus_error_set_const(error, "org.gnome.RemoteControlManager.InvalidProperty", "Sorry, invalid property"); return -EINVAL; @@ -654,6 +656,7 @@ static const sd_bus_vtable device_vtable[] = { SD_BUS_PROPERTY("DriverName", "s", property_get, 0, 0), SD_BUS_PROPERTY("KernelKeymapName", "s", property_get, 0, 0), SD_BUS_PROPERTY("HardwareType", "s", property_get, 0, 0), + SD_BUS_PROPERTY("Error", "s", property_get, 0, 0), SD_BUS_METHOD("ListKeymaps", NULL, "as", method_listkeymaps, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("GetKeymap", "s", "ssqqaa{sv}aa{sv}", method_getkeymap, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("SetKeymap", "sssqqaa{sv}aa{sv}", NULL, method_setkeymap, SD_BUS_VTABLE_UNPRIVILEGED), @@ -711,6 +714,7 @@ add_device(struct manager *mgr, struct udev_device *udev) device->path = path; device->name = device->path + strlen("/org/gnome/RemoteControlManager/"); device->evdev_fd = -1; + device->error = NULL; if (keymaps_load(device) < 0) { fprintf(stderr, "failed to load keymaps: %m\n"); @@ -751,6 +755,8 @@ add_device(struct manager *mgr, struct udev_device *udev) r = evdev_setup(device, devnode); if (r < 0) { printf("Failed to setup evdev: %s\n", devnode); + device->error = "Error: Failed to setup evdev"; + device->input_name = NULL; udev_device_unref(evdev); continue; } |