chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
terminal: add helpers to retrieve page dimensions
[elogind.git]
/
src
/
libsystemd-terminal
/
modeset.c
diff --git
a/src/libsystemd-terminal/modeset.c
b/src/libsystemd-terminal/modeset.c
index 02ed1a898750866461d78c62f29937db56cc1f72..f564fa0f6513d34a475c43bd0a5f35f43621f467 100644
(file)
--- a/
src/libsystemd-terminal/modeset.c
+++ b/
src/libsystemd-terminal/modeset.c
@@
-252,9
+252,9
@@
static void modeset_draw(Modeset *m, const grdev_display_target *t) {
static void modeset_render(Modeset *m, grdev_display *d) {
const grdev_display_target *t;
static void modeset_render(Modeset *m, grdev_display *d) {
const grdev_display_target *t;
- m->r = next_color(&m->r_up, m->r,
20
);
- m->g = next_color(&m->g_up, m->g,
10
);
- m->b = next_color(&m->b_up, m->b,
5
);
+ m->r = next_color(&m->r_up, m->r,
4
);
+ m->g = next_color(&m->g_up, m->g,
3
);
+ m->b = next_color(&m->b_up, m->b,
2
);
GRDEV_DISPLAY_FOREACH_TARGET(d, t, 0) {
modeset_draw(m, t);
GRDEV_DISPLAY_FOREACH_TARGET(d, t, 0) {
modeset_draw(m, t);
@@
-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);
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:
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);
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);
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;
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));
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;
break;
case SYSVIEW_EVENT_SESSION_CONTROL:
r = ev->session_control.error;