return context_raise(c, &event, 0);
}
+static int context_raise_device_change(sysview_context *c, sysview_device *device, struct udev_device *ud) {
+ sysview_event event = {
+ .type = SYSVIEW_EVENT_DEVICE_CHANGE,
+ .device_change = {
+ .device = device,
+ .ud = ud,
+ }
+ };
+
+ return context_raise(c, &event, 0);
+}
+
static int context_add_device(sysview_context *c, sysview_device *device) {
sysview_session *session;
int r, error = 0;
if (!device)
return 0;
- /* TODO: send REFRESH event */
+ return context_raise_device_change(c, device, d);
} else if (!action || streq_ptr(action, "add")) {
struct udev_device *p;
unsigned int type, t;
p = d;
seatname = NULL;
- while ((p = udev_device_get_parent(p))) {
+ do {
seatname = udev_device_get_property_value(p, "ID_SEAT");
if (seatname)
break;
- }
+ } while ((p = udev_device_get_parent(p)));
seat = sysview_find_seat(c, seatname ? : "seat0");
if (!seat)