[vlc-devel] [PATCH 2/2] wayland/shm: fix and document picture and buffer releasing
Alexandre Janniaux
alexandre.janniaux at gmail.com
Tue Nov 13 17:41:21 CET 2018
Hi,
ping for review :)
Le lun. 29 oct. 2018 à 14:46, Alexandre Janniaux <
alexandre.janniaux at gmail.com> a écrit :
> Fix pictures being released twice when using
> VOUT_DISPLAY_RESET_PICTURES.
> ---
> modules/video_output/wayland/shm.c | 18 ++++++++++++------
> 1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/modules/video_output/wayland/shm.c
> b/modules/video_output/wayland/shm.c
> index 590cf78151..47f001420b 100644
> --- a/modules/video_output/wayland/shm.c
> +++ b/modules/video_output/wayland/shm.c
> @@ -72,12 +72,15 @@ static void buffer_release_cb(void *data, struct
> wl_buffer *buffer)
> {
> picture_t *pic = data;
>
> -#ifndef NDEBUG
> - assert(pic != NULL);
> + /* Detach the picture from the buffer so we don't release it again
> when
> + * reseting all the pictures */
> wl_buffer_set_user_data(buffer, NULL);
> -#else
> - (void) buffer;
> -#endif
> +
> + /* We can't queue buffer without a corresponding picture */
> + assert(pic);
> +
> + /* The release event happens when the compositor replaced our buffer
> by a
> + * new one, signaling it doesn't need it anymore */
> picture_Release(pic);
> }
>
> @@ -90,7 +93,8 @@ static void PictureDetach(void *data, picture_t *pic)
> {
> struct wl_buffer *buf = (struct wl_buffer *)pic->p_sys;
>
> - /* Detach the buffer if it is attached */
> + /* Release the picture if it is still attached to the buffer, after
> calling
> + * VOUT_DISPLAY_RESET_PICTURES while rendering frames */
> pic = wl_buffer_get_user_data(buf);
> if (pic != NULL)
> buffer_release_cb(pic, buf);
> @@ -189,6 +193,8 @@ static picture_pool_t *Pool(vout_display_t *vd,
> unsigned req)
> break;
> }
>
> + /* We won't queue a buffer without associating a picture before
> so we
> + * can set buffer userdata to NULL here */
> wl_buffer_add_listener(buf, &buffer_cbs, NULL);
> pics[count++] = pic;
> }
> --
> 2.19.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20181113/ce762594/attachment.html>
More information about the vlc-devel
mailing list