[vlc-devel] [vlc-commits] picture: inline and relax picture_Hold()

Steve Lhomme robux4 at ycbcr.xyz
Wed Dec 12 10:09:13 CET 2018


On 11/12/2018 18:11, Rémi Denis-Courmont wrote:
> vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Mon Dec 10 23:34:40 2018 +0200| [aae07419ece284a903ad68ca8644916ec686c6b0] | committer: Rémi Denis-Courmont
>
> picture: inline and relax picture_Hold()
>
> Relaxed memory order cannot work with an external function.
>
>> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=aae07419ece284a903ad68ca8644916ec686c6b0
> ---
>
>   include/vlc_picture.h | 14 ++++++++++----
>   src/libvlccore.sym    |  1 -
>   src/misc/picture.c    |  9 ---------
>   3 files changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/include/vlc_picture.h b/include/vlc_picture.h
> index 772bc4fc1d..3629aa4d72 100644
> --- a/include/vlc_picture.h
> +++ b/include/vlc_picture.h
> @@ -32,6 +32,8 @@
>   #else
>   #include <atomic>
>   using std::atomic_uintptr_t;
> +using std::memory_order;

Why is this one needed ?

> +using std::memory_order_relaxed;
>   #endif
>   
>   /**
> @@ -166,12 +168,16 @@ typedef struct
>   VLC_API picture_t * picture_NewFromResource( const video_format_t *, const picture_resource_t * ) VLC_USED;
>   
>   /**
> - * This function will increase the picture reference count.
> - * It will not have any effect on picture obtained from vout
> + * Increments the picture reference count.
>    *
> - * It returns the given picture for convenience.
> + * \return picture
>    */
> -VLC_API picture_t *picture_Hold( picture_t *p_picture );
> +static inline picture_t *picture_Hold(picture_t *picture)
> +{
> +    atomic_fetch_add_explicit(&picture->refs, (uintptr_t)1,
> +                              memory_order_relaxed);
> +    return picture;
> +}
>   
>   /**
>    * This function will release a picture.
> diff --git a/src/libvlccore.sym b/src/libvlccore.sym
> index d53f6b27c1..c0c6429dba 100644
> --- a/src/libvlccore.sym
> +++ b/src/libvlccore.sym
> @@ -298,7 +298,6 @@ NTPtime64
>   picture_BlendSubpicture
>   picture_Clone
>   picture_CopyPixels
> -picture_Hold
>   picture_Release
>   picture_CopyProperties
>   picture_Copy
> diff --git a/src/misc/picture.c b/src/misc/picture.c
> index b97d181aba..924d2ca960 100644
> --- a/src/misc/picture.c
> +++ b/src/misc/picture.c
> @@ -320,15 +320,6 @@ picture_t *picture_New( vlc_fourcc_t i_chroma, int i_width, int i_height, int i_
>    *
>    *****************************************************************************/
>   
> -picture_t *picture_Hold( picture_t *p_picture )
> -{
> -    assert( p_picture != NULL );
> -
> -    uintptr_t refs = atomic_fetch_add(&p_picture->refs, 1);
> -    assert( refs > 0 );
> -    return p_picture;
> -}
> -
>   void picture_Release( picture_t *p_picture )
>   {
>       assert( p_picture != NULL );
>
> _______________________________________________
> vlc-commits mailing list
> vlc-commits at videolan.org
> https://mailman.videolan.org/listinfo/vlc-commits



More information about the vlc-devel mailing list