summaryrefslogtreecommitdiff
path: root/src/libsystemd-terminal/grdev.c
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2014-09-20 11:11:07 +0200
committerDavid Herrmann <dh.herrmann@gmail.com>2014-09-20 11:46:49 +0200
commit3ec19e5d91d3d705682fee62a509801737c56c1e (patch)
treef264ad3605ec214aadec8657a3bfd166b6721883 /src/libsystemd-terminal/grdev.c
parent95dbf6b19e8f25e28224b954ef99d96225b4e6e7 (diff)
terminal: grdev: raise frame event after DISPLAY_ADD/CHANGE
Whenever a display is added or changed, we suppressed any frame events. Make sure to raise them manually so we can avoid rendering when handling anything but FRAME events.
Diffstat (limited to 'src/libsystemd-terminal/grdev.c')
-rw-r--r--src/libsystemd-terminal/grdev.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libsystemd-terminal/grdev.c b/src/libsystemd-terminal/grdev.c
index 3e3833fc9..397da1b20 100644
--- a/src/libsystemd-terminal/grdev.c
+++ b/src/libsystemd-terminal/grdev.c
@@ -921,14 +921,17 @@ static void session_change_display(grdev_session *session, grdev_display *displa
changed = display_cache(display);
- if (display->n_leafs == 0)
+ if (display->n_leafs == 0) {
session_remove_display(session, display);
- else if (!display->public)
+ } else if (!display->public) {
session_add_display(session, display);
- else if (changed)
+ session_frame(session, display);
+ } else if (changed) {
session_raise_display_change(session, display);
- else if (display->framed)
session_frame(session, display);
+ } else if (display->framed) {
+ session_frame(session, display);
+ }
}
static void session_frame(grdev_session *session, grdev_display *display) {