[vlc-devel] [PATCH v3 04/10] core: use refcounter helper for pictures
Romain Vimont
rom1v at videolabs.io
Tue Jul 3 08:47:55 CEST 2018
---
src/misc/picture.c | 9 +++------
src/misc/picture.h | 5 ++---
2 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/src/misc/picture.c b/src/misc/picture.c
index 6fe9437a273..728f67ed404 100644
--- a/src/misc/picture.c
+++ b/src/misc/picture.c
@@ -205,7 +205,7 @@ static picture_priv_t *picture_NewPrivate(const video_format_t *restrict p_fmt)
return NULL;
}
- atomic_init( &priv->gc.refs, 1 );
+ vlc_atomic_rc_init( &priv->gc.rc );
priv->gc.opaque = NULL;
return priv;
@@ -305,8 +305,7 @@ picture_t *picture_Hold( picture_t *p_picture )
assert( p_picture != NULL );
picture_priv_t *priv = (picture_priv_t *)p_picture;
- uintptr_t refs = atomic_fetch_add( &priv->gc.refs, 1 );
- assert( refs > 0 );
+ vlc_atomic_rc_inc( &priv->gc.rc );
return p_picture;
}
@@ -315,9 +314,7 @@ void picture_Release( picture_t *p_picture )
assert( p_picture != NULL );
picture_priv_t *priv = (picture_priv_t *)p_picture;
- uintptr_t refs = atomic_fetch_sub( &priv->gc.refs, 1 );
- assert( refs != 0 );
- if( refs > 1 )
+ if( !vlc_atomic_rc_dec( &priv->gc.rc ) )
return;
PictureDestroyContext( p_picture );
diff --git a/src/misc/picture.h b/src/misc/picture.h
index 70ee64878da..4a70b6a6c53 100644
--- a/src/misc/picture.h
+++ b/src/misc/picture.h
@@ -18,8 +18,7 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
-#include <stdatomic.h>
-
+#include <vlc_atomic.h>
#include <vlc_picture.h>
typedef struct
@@ -27,7 +26,7 @@ typedef struct
picture_t picture;
struct
{
- atomic_uintptr_t refs;
+ vlc_atomic_rc_t rc;
void (*destroy)(picture_t *);
void *opaque;
} gc;
--
2.18.0
More information about the vlc-devel
mailing list