[vlc-devel] [PATCH v3 07/10] core: use refcounter helper for opengl

Romain Vimont rom1v at videolabs.io
Tue Jul 3 08:47:58 CEST 2018


---
 src/video_output/opengl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/video_output/opengl.c b/src/video_output/opengl.c
index 9852af7f9ec..e737667710c 100644
--- a/src/video_output/opengl.c
+++ b/src/video_output/opengl.c
@@ -23,10 +23,10 @@
 #endif
 
 #include <assert.h>
-#include <stdatomic.h>
 #include <stdlib.h>
 
 #include <vlc_common.h>
+#include <vlc_atomic.h>
 #include <vlc_opengl.h>
 #include "libvlc.h"
 #include <vlc_modules.h>
@@ -34,7 +34,7 @@
 struct vlc_gl_priv_t
 {
     vlc_gl_t gl;
-    atomic_uint ref_count;
+    vlc_atomic_rc_t rc;
 };
 #undef vlc_gl_Create
 /**
@@ -80,7 +80,7 @@ vlc_gl_t *vlc_gl_Create(struct vout_window_t *wnd, unsigned flags,
     }
     assert(gl->makeCurrent && gl->releaseCurrent && gl->swap
         && gl->getProcAddress);
-    atomic_init(&glpriv->ref_count, 1);
+    vlc_atomic_rc_init(&glpriv->rc);
 
     return &glpriv->gl;
 }
@@ -88,13 +88,13 @@ vlc_gl_t *vlc_gl_Create(struct vout_window_t *wnd, unsigned flags,
 void vlc_gl_Hold(vlc_gl_t *gl)
 {
     struct vlc_gl_priv_t *glpriv = (struct vlc_gl_priv_t *)gl;
-    atomic_fetch_add(&glpriv->ref_count, 1);
+    vlc_atomic_rc_inc(&glpriv->rc);
 }
 
 void vlc_gl_Release(vlc_gl_t *gl)
 {
     struct vlc_gl_priv_t *glpriv = (struct vlc_gl_priv_t *)gl;
-    if (atomic_fetch_sub(&glpriv->ref_count, 1) != 1)
+    if (!vlc_atomic_rc_dec(&glpriv->rc))
         return;
     module_unneed(gl, gl->module);
     vlc_object_release(gl);
-- 
2.18.0



More information about the vlc-devel mailing list