mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
terminal: forward DEVICE_CHANGE events via sysview
Whe need to react to "change" events on devices, but we want to avoid duplicating udev-monitors everywhere. Therefore, make sysview forward change events to the sysview controllers, which can then properly react to it.
This commit is contained in:
parent
3e7f6cf956
commit
965f7a3f9b
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user