[vlc-devel] [PATCH 3/4] libvlc: media_list_player: use vlc_atomic_rc for refcount
Steve Lhomme
robux4 at ycbcr.xyz
Mon Nov 23 07:58:15 CET 2020
On 2020-11-21 13:21, Alexandre Janniaux wrote:
> ---
> lib/media_list_player.c | 21 ++++++++-------------
> 1 file changed, 8 insertions(+), 13 deletions(-)
>
> diff --git a/lib/media_list_player.c b/lib/media_list_player.c
> index 2e7405c492..276e825e88 100644
> --- a/lib/media_list_player.c
> +++ b/lib/media_list_player.c
> @@ -36,11 +36,15 @@
> #include <vlc/libvlc_events.h>
> #include <assert.h>
>
> +#include <vlc_common.h>
> +#include <vlc_atomic.h>
> +
> #include "libvlc_internal.h"
>
> #include "media_internal.h" // Abuse, could and should be removed
> #include "media_list_path.h"
>
> +
Nitpicking, this change is probably not needed.
> //#define DEBUG_MEDIA_LIST_PLAYER
>
> /* This is a very dummy implementation of playlist on top of
> @@ -58,7 +62,6 @@
> struct libvlc_media_list_player_t
> {
> libvlc_event_manager_t event_manager;
> - int i_refcount;
> int seek_offset;
> bool dead;
> /* Protect access to this structure. */
> @@ -73,6 +76,7 @@ struct libvlc_media_list_player_t
> libvlc_playback_mode_t e_playback_mode;
>
> vlc_thread_t thread;
> + vlc_atomic_rc_t rc;
> };
>
> /*
> @@ -473,7 +477,7 @@ libvlc_media_list_player_new(libvlc_instance_t * p_instance)
> return NULL;
> }
>
> - p_mlp->i_refcount = 1;
> + vlc_atomic_rc_init(&p_mlp->rc);
> p_mlp->seek_offset = 0;
> p_mlp->dead = false;
> vlc_mutex_init(&p_mlp->object_lock);
> @@ -509,15 +513,8 @@ void libvlc_media_list_player_release(libvlc_media_list_player_t * p_mlp)
> if (!p_mlp)
> return;
>
> - lock(p_mlp);
> - p_mlp->i_refcount--;
> - if (p_mlp->i_refcount > 0)
> - {
> - unlock(p_mlp);
> + if (!vlc_atomic_rc_dec(&p_mlp->rc))
> return;
> - }
> - assert(p_mlp->i_refcount == 0);
> - unlock(p_mlp);
>
> vlc_mutex_lock(&p_mlp->mp_callback_lock);
> p_mlp->dead = true;
> @@ -552,9 +549,7 @@ void libvlc_media_list_player_retain(libvlc_media_list_player_t * p_mlp)
> if (!p_mlp)
> return;
>
> - lock(p_mlp);
> - p_mlp->i_refcount++;
> - unlock(p_mlp);
> + vlc_atomic_rc_inc(&p_mlp->rc);
> }
>
> /**************************************************************************
> --
> 2.29.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