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.
This commit is contained in:
parent
95dbf6b19e
commit
3ec19e5d91
|
@ -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_raise_display_change(session, display);
|
||||
else if (display->framed)
|
||||
session_frame(session, display);
|
||||
} else if (changed) {
|
||||
session_raise_display_change(session, display);
|
||||
session_frame(session, display);
|
||||
} else if (display->framed) {
|
||||
session_frame(session, display);
|
||||
}
|
||||
}
|
||||
|
||||
static void session_frame(grdev_session *session, grdev_display *display) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue