output: trigger frame/present events on all commits on enabled output

Up until now, frame/present events were only triggered when the
user submitted a buffer. Change the wlr_output API so that these
events are triggered when any commit is applied on an enabled
output.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3708
This commit is contained in:
Simon Ser 2023-08-14 19:39:33 +02:00 committed by Alexander Orzechowski
parent 462f04db9e
commit e5fc8cd4c7
7 changed files with 24 additions and 9 deletions

View file

@ -19,6 +19,7 @@
#include "backend/wayland.h"
#include "render/pixel_format.h"
#include "render/wlr_renderer.h"
#include "types/wlr_output.h"
#include "linux-dmabuf-unstable-v1-client-protocol.h"
#include "presentation-time-client-protocol.h"
@ -555,7 +556,7 @@ static bool output_commit(struct wlr_output *wlr_output,
return false;
}
if (state->committed & (WLR_OUTPUT_STATE_BUFFER | WLR_OUTPUT_STATE_LAYERS)) {
if (output_pending_enabled(wlr_output, state)) {
if (output->frame_callback != NULL) {
wl_callback_destroy(output->frame_callback);
}