diff options
author | Sebastian Wick <sebastian.wick@redhat.com> | 2023-03-27 21:52:19 +0200 |
---|---|---|
committer | Leandro Ribeiro <leandrohr@riseup.net> | 2023-04-20 11:42:15 +0000 |
commit | 57cba6afb47d375fb8353e4e79d1cc6dbc6f92a4 (patch) | |
tree | 9efd6537d3866309e7a9acc64f0663e542655613 | |
parent | af4fb2b9f6cd5736cbe7e1af2c8c14c27794ef08 (diff) | |
download | weston-57cba6afb47d375fb8353e4e79d1cc6dbc6f92a4.tar.gz |
clients/simple-dmabuf-feedback: fix dangling pointers
to presentation feedback objects.
Signed-off-by: Sebastian Wick <sebastian.wick@redhat.com>
-rw-r--r-- | clients/simple-dmabuf-feedback.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clients/simple-dmabuf-feedback.c b/clients/simple-dmabuf-feedback.c index 0f058fe5..e6832dab 100644 --- a/clients/simple-dmabuf-feedback.c +++ b/clients/simple-dmabuf-feedback.c @@ -682,8 +682,10 @@ redraw(void *data, struct wl_callback *callback, uint32_t time) window->callback = wl_surface_frame(window->surface); wl_callback_add_listener(window->callback, &frame_listener, window); - if (window->presentation_feedback) + if (window->presentation_feedback) { wp_presentation_feedback_destroy(window->presentation_feedback); + window->presentation_feedback = NULL; + } if (window->display->presentation) { window->presentation_feedback = wp_presentation_feedback(window->display->presentation, @@ -735,12 +737,15 @@ static void presentation_feedback_handle_presented(void *data, window->presented_zero_copy = zero_copy; wp_presentation_feedback_destroy(feedback); + window->presentation_feedback = NULL; } static void presentation_feedback_handle_discarded(void *data, struct wp_presentation_feedback *feedback) { + struct window *window = data; wp_presentation_feedback_destroy(feedback); + window->presentation_feedback = NULL; } static const struct wp_presentation_feedback_listener presentation_feedback_listener = { |