X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Fmodeset.c;h=f564fa0f6513d34a475c43bd0a5f35f43621f467;hb=dda57d9143644d39091207b287f142f91f55d0ad;hp=c1119c9e0fde6f366df7b569a563bbff2fbe787b;hpb=39cf40e846754fe37f5c8a948f37227ce1ef8472;p=elogind.git diff --git a/src/libsystemd-terminal/modeset.c b/src/libsystemd-terminal/modeset.c index c1119c9e0..f564fa0f6 100644 --- a/src/libsystemd-terminal/modeset.c +++ b/src/libsystemd-terminal/modeset.c @@ -270,12 +270,10 @@ static void modeset_grdev_fn(grdev_session *session, void *userdata, grdev_event switch (ev->type) { case GRDEV_EVENT_DISPLAY_ADD: grdev_display_enable(ev->display_add.display); - modeset_render(m, ev->display_add.display); break; case GRDEV_EVENT_DISPLAY_REMOVE: break; case GRDEV_EVENT_DISPLAY_CHANGE: - modeset_render(m, ev->display_change.display); break; case GRDEV_EVENT_DISPLAY_FRAME: modeset_render(m, ev->display_frame.display); @@ -334,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; @@ -349,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;