[vlc-devel] [PATCH 1/3] display: turn the reset_pictures flag into a simple boolean

Steve Lhomme robux4 at ycbcr.xyz
Thu Oct 24 17:24:32 CEST 2019


On 2019-10-24 17:18, Steve Lhomme wrote:
> It is already read alongside control calls which are protected by the caller.
> 
> It is only set by D3D9 which is setting it during Prepare which is also
> protected by the caller the same way.

The protection is the "vout->p->display_lock" in the vout or the 
"part->lock" in the splitter.

> ---
>   src/video_output/display.c | 11 +++++------
>   1 file changed, 5 insertions(+), 6 deletions(-)
> 
> diff --git a/src/video_output/display.c b/src/video_output/display.c
> index 556406f7c6d..8c5d8539b4d 100644
> --- a/src/video_output/display.c
> +++ b/src/video_output/display.c
> @@ -283,7 +283,7 @@ typedef struct {
>         * can be done and nothing will be displayed */
>       filter_chain_t *converters;
>   #ifdef _WIN32
> -    atomic_bool reset_pictures;
> +    bool reset_pictures; // set/read under the same lock as the control
>   #endif
>       picture_pool_t *pool;
>   } vout_display_priv_t;
> @@ -361,7 +361,7 @@ void vout_display_SendEventPicturesInvalid(vout_display_t *vd)
>   
>       msg_Err(vd, "picture buffers invalidated asynchronously");
>       assert(vd->info.has_pictures_invalid);
> -    atomic_store_explicit(&osys->reset_pictures, true, memory_order_release);
> +    osys->reset_pictures = true;
>   #else
>       (void) vd;
>       vlc_assert_unreachable();
> @@ -484,9 +484,8 @@ static void vout_display_CheckReset(vout_display_t *vd)
>   #ifdef _WIN32
>       vout_display_priv_t *osys = container_of(vd, vout_display_priv_t, display);
>   
> -    if (unlikely(atomic_exchange_explicit(&osys->reset_pictures, false,
> -                                          memory_order_relaxed))) {
> -        atomic_thread_fence(memory_order_acquire);
> +    if (unlikely(osys->reset_pictures)) {
> +        osys->reset_pictures = false;
>           vout_display_Reset(vd);
>       }
>   #else
> @@ -744,7 +743,7 @@ vout_display_t *vout_display_New(vlc_object_t *parent,
>                                          &osys->cfg.display.height,
>                                          source, &osys->cfg);
>   #ifdef _WIN32
> -    atomic_init(&osys->reset_pictures, false);
> +    osys->reset_pictures = false;
>   #endif
>       osys->pool = NULL;
>   
> -- 
> 2.17.1
> 
> _______________________________________________
> 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