[vlc-devel] [PATCH 14/17] video_output: group the code to release/unload the display module in a function

Thomas Guillem thomas at gllm.fr
Fri Nov 20 21:10:21 CET 2020



On Fri, Nov 20, 2020, at 15:45, Steve Lhomme wrote:
> The rest of vout_ReleaseDisplay() also deals with filters, mouse handling,
> decoder FIFO, etc.
> 
> The display module is flushed unconditionally (effectively the converters
> filter chain).
> ---
>  src/video_output/video_output.c | 20 +++++++++++++++-----
>  1 file changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
> index 74602e09c76..a92c185275f 100644
> --- a/src/video_output/video_output.c
> +++ b/src/video_output/video_output.c
> @@ -1919,12 +1919,25 @@ static void *Thread(void *object)
>      }
>  }
>  
> -static void vout_ReleaseDisplay(vout_thread_sys_t *vout)
> +static void vout_ReleaseDisplayAlone(vout_thread_sys_t *vout)
>  {
>      vout_thread_sys_t *sys = vout;
>  
>      assert(sys->display != NULL);
>  
> +    vout_FilterFlush(sys->display);
> +
> +    vout_CloseWrapper(&vout->obj, &sys->private, sys->display);
> +    sys->display = NULL;
> +    assert(sys->private.display_pool == NULL);
> +
> +    video_format_Clean(&sys->original);
> +}
> +
> +static void vout_ReleaseDisplay(vout_thread_sys_t *vout)

Nit: rename vout_ReleaseDisplay to vout_ReleaseDisplayAndFilters
rename vout_ReleaseDisplayAlone to vout_ReleaseDisplay

> +{
> +    vout_thread_sys_t *sys = vout;
> +
>      if (sys->spu_blend != NULL)
>          filter_DeleteBlend(sys->spu_blend);
>  
> @@ -1933,8 +1946,7 @@ static void vout_ReleaseDisplay(vout_thread_sys_t *vout)
>          vout_FlushUnlocked(vout, true, INT64_MAX);
>  
>      vlc_mutex_lock(&sys->display_lock);
> -    vout_CloseWrapper(&vout->obj, &sys->private, sys->display);
> -    sys->display = NULL;
> +    vout_ReleaseDisplayAlone(vout);
>      vlc_mutex_unlock(&sys->display_lock);
>  
>      /* Destroy the video filters */
> @@ -1954,7 +1966,6 @@ static void vout_ReleaseDisplay(vout_thread_sys_t *vout)
>          picture_fifo_Delete(sys->decoder_fifo);
>          sys->decoder_fifo = NULL;
>      }
> -    assert(sys->private.display_pool == NULL);
>  
>      if (sys->mouse_event)
>      {
> @@ -1965,7 +1976,6 @@ static void vout_ReleaseDisplay(vout_thread_sys_t *vout)
>      if (sys->spu)
>          spu_Detach(sys->spu);
>      sys->clock = NULL;
> -    video_format_Clean(&sys->original);
>  }
>  
>  void vout_StopDisplay(vout_thread_t *vout)
> -- 
> 2.26.2
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel


More information about the vlc-devel mailing list