From 1089b7b8d638a286c70571fced969826d61143bc Mon Sep 17 00:00:00 2001 From: Kirill Primak Date: Thu, 14 Oct 2021 22:32:40 +0300 Subject: [PATCH] output: disallow NULL event for wlr_output_send_present() --- backend/headless/output.c | 5 ++++- backend/wayland/output.c | 10 ++++++++-- types/wlr_output.c | 7 +------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/headless/output.c b/backend/headless/output.c index 8c7e57f1..8351c935 100644 --- a/backend/headless/output.c +++ b/backend/headless/output.c @@ -64,7 +64,10 @@ static bool output_commit(struct wlr_output *wlr_output) { } if (wlr_output->pending.committed & WLR_OUTPUT_STATE_BUFFER) { - wlr_output_send_present(wlr_output, NULL); + struct wlr_output_event_present present_event = { + .commit_seq = wlr_output->commit_seq + 1, + }; + wlr_output_send_present(wlr_output, &present_event); } return true; diff --git a/backend/wayland/output.c b/backend/wayland/output.c index 16eb17f5..285c70fc 100644 --- a/backend/wayland/output.c +++ b/backend/wayland/output.c @@ -89,7 +89,10 @@ static void presentation_feedback_handle_discarded(void *data, struct wp_presentation_feedback *wp_feedback) { struct wlr_wl_presentation_feedback *feedback = data; - wlr_output_send_present(&feedback->output->wlr_output, NULL); + struct wlr_output_event_present event = { + .commit_seq = feedback->commit_seq, + }; + wlr_output_send_present(&feedback->output->wlr_output, &event); presentation_feedback_destroy(feedback); } @@ -345,7 +348,10 @@ static bool output_commit(struct wlr_output *wlr_output) { wp_presentation_feedback_add_listener(wp_feedback, &presentation_feedback_listener, feedback); } else { - wlr_output_send_present(wlr_output, NULL); + struct wlr_output_event_present present_event = { + .commit_seq = wlr_output->commit_seq + 1, + }; + wlr_output_send_present(wlr_output, &present_event); } } diff --git a/types/wlr_output.c b/types/wlr_output.c index 65c1d926..a1744304 100644 --- a/types/wlr_output.c +++ b/types/wlr_output.c @@ -956,12 +956,7 @@ void wlr_output_schedule_frame(struct wlr_output *output) { void wlr_output_send_present(struct wlr_output *output, struct wlr_output_event_present *event) { - struct wlr_output_event_present _event = {0}; - if (event == NULL) { - event = &_event; - event->commit_seq = output->commit_seq + 1; - } - + assert(event); event->output = output; struct timespec now;