X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fmodeset.c;h=f564fa0f6513d34a475c43bd0a5f35f43621f467;hb=c17091b79773e9c458f03a897b26c2257d7366a7;hp=33c79a2036914a830b54c3a7c0f7e11bd618a378;hpb=3ec19e5d91d3d705682fee62a509801737c56c1e;p=elogind.git diff --git a/src/libsystemd-terminal/modeset.c b/src/libsystemd-terminal/modeset.c index 33c79a203..f564fa0f6 100644 --- a/src/libsystemd-terminal/modeset.c +++ b/src/libsystemd-terminal/modeset.c @@ -332,7 +332,8 @@ static int modeset_sysview_fn(sysview_context *c, void *userdata, sysview_event grdev_session_restore(m->grdev_session); grdev_session_disable(m->grdev_session); m->grdev_session = grdev_session_free(m->grdev_session); - sd_event_exit(m->event, 0); + if (sd_event_get_exit_code(m->event, &r) == -ENODATA) + sd_event_exit(m->event, 0); break; case SYSVIEW_EVENT_SESSION_ATTACH: d = ev->session_attach.device; @@ -347,6 +348,13 @@ static int modeset_sysview_fn(sysview_context *c, void *userdata, sysview_event if (type == SYSVIEW_DEVICE_DRM) grdev_session_remove_drm(m->grdev_session, sysview_device_get_ud(d)); + break; + case SYSVIEW_EVENT_SESSION_REFRESH: + d = ev->session_refresh.device; + type = sysview_device_get_type(d); + if (type == SYSVIEW_DEVICE_DRM) + grdev_session_hotplug_drm(m->grdev_session, ev->session_refresh.ud); + break; case SYSVIEW_EVENT_SESSION_CONTROL: r = ev->session_control.error; @@ -361,13 +369,6 @@ static int modeset_sysview_fn(sysview_context *c, void *userdata, sysview_event return -errno; } - break; - case SYSVIEW_EVENT_DEVICE_CHANGE: - d = ev->device_change.device; - type = sysview_device_get_type(d); - if (type == SYSVIEW_DEVICE_DRM) - grdev_session_hotplug_drm(m->grdev_session, ev->device_change.ud); - break; }