diff options
-rw-r--r-- | src/libsystemd-terminal/sysview.c | 14 | ||||
-rw-r--r-- | src/libsystemd-terminal/sysview.h | 7 |
2 files changed, 20 insertions, 1 deletions
diff --git a/src/libsystemd-terminal/sysview.c b/src/libsystemd-terminal/sysview.c index 6c1a9543b9..23d564d6a0 100644 --- a/src/libsystemd-terminal/sysview.c +++ b/src/libsystemd-terminal/sysview.c @@ -517,6 +517,18 @@ static int context_raise_session_detach(sysview_context *c, sysview_session *ses 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; @@ -872,7 +884,7 @@ static int context_ud_hotplug(sysview_context *c, struct udev_device *d) { 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; diff --git a/src/libsystemd-terminal/sysview.h b/src/libsystemd-terminal/sysview.h index de6ff371db..b9452fab89 100644 --- a/src/libsystemd-terminal/sysview.h +++ b/src/libsystemd-terminal/sysview.h @@ -64,6 +64,8 @@ enum { SYSVIEW_EVENT_SESSION_ATTACH, SYSVIEW_EVENT_SESSION_DETACH, SYSVIEW_EVENT_SESSION_CONTROL, + + SYSVIEW_EVENT_DEVICE_CHANGE, }; struct sysview_event { @@ -94,6 +96,11 @@ struct sysview_event { sysview_session *session; int error; } session_control; + + struct { + sysview_device *device; + struct udev_device *ud; + } device_change; }; }; |