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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user