scene: update output geom on commit after dropping pending damage

Otherwise the whole output damage gets ignored.
This commit is contained in:
Kirill Primak 2024-08-20 19:25:20 +03:00
parent 098cb9b7a3
commit 62cc96b3a4

View File

@ -1520,16 +1520,6 @@ static void scene_output_handle_commit(struct wl_listener *listener, void *data)
struct wlr_output_event_commit *event = data;
const struct wlr_output_state *state = event->state;
bool force_update = state->committed & (
WLR_OUTPUT_STATE_TRANSFORM |
WLR_OUTPUT_STATE_SCALE |
WLR_OUTPUT_STATE_SUBPIXEL);
if (force_update || state->committed & (WLR_OUTPUT_STATE_MODE |
WLR_OUTPUT_STATE_ENABLED)) {
scene_output_update_geometry(scene_output, force_update);
}
// if the output has been committed with a certain damage, we know that region
// will be acknowledged by the backend so we don't need to keep track of it
// anymore
@ -1543,6 +1533,16 @@ static void scene_output_handle_commit(struct wl_listener *listener, void *data)
}
}
bool force_update = state->committed & (
WLR_OUTPUT_STATE_TRANSFORM |
WLR_OUTPUT_STATE_SCALE |
WLR_OUTPUT_STATE_SUBPIXEL);
if (force_update || state->committed & (WLR_OUTPUT_STATE_MODE |
WLR_OUTPUT_STATE_ENABLED)) {
scene_output_update_geometry(scene_output, force_update);
}
if (scene_output->scene->debug_damage_option == WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT &&
!wl_list_empty(&scene_output->damage_highlight_regions)) {
wlr_output_schedule_frame(scene_output->output);