[vlc-commits] gst: use vlc_once()
Rémi Denis-Courmont
git at videolan.org
Sun Oct 21 13:01:19 CEST 2018
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Oct 21 12:30:56 2018 +0300| [cc42179c13346b26fdce929970cc885e23ef102f] | committer: Rémi Denis-Courmont
gst: use vlc_once()
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cc42179c13346b26fdce929970cc885e23ef102f
---
modules/codec/gstreamer/gstdecode.c | 26 ++++++++++++--------------
1 file changed, 12 insertions(+), 14 deletions(-)
diff --git a/modules/codec/gstreamer/gstdecode.c b/modules/codec/gstreamer/gstdecode.c
index 413917d2ea..ca58e6d599 100644
--- a/modules/codec/gstreamer/gstdecode.c
+++ b/modules/codec/gstreamer/gstdecode.c
@@ -329,25 +329,23 @@ static gboolean vlc_gst_plugin_init( GstPlugin *p_plugin )
return TRUE;
}
-/* gst_init( ) is not thread-safe, hence a thread-safe wrapper */
-static bool vlc_gst_init( void )
-{
- static vlc_mutex_t init_lock = VLC_STATIC_MUTEX;
- static bool b_registered = false;
- bool b_ret = true;
+static bool vlc_gst_registered = false;
- vlc_mutex_lock( &init_lock );
+static void vlc_gst_init_once(void)
+{
gst_init( NULL, NULL );
- if ( !b_registered )
- {
- b_ret = gst_plugin_register_static( 1, 0, "videolan",
+ vlc_gst_registered = gst_plugin_register_static( 1, 0, "videolan",
"VLC Gstreamer plugins", vlc_gst_plugin_init,
"1.0.0", "LGPL", "NA", "vlc", "NA" );
- b_registered = b_ret;
- }
- vlc_mutex_unlock( &init_lock );
+}
+
+/* gst_init( ) is not thread-safe, hence a thread-safe wrapper */
+static bool vlc_gst_init( void )
+{
+ static vlc_once_t once = VLC_STATIC_ONCE;
- return b_ret;
+ vlc_once(&once, vlc_gst_init_once);
+ return vlc_gst_registered;
}
static GstStructure* vlc_to_gst_fmt( const es_format_t *p_fmt )
More information about the vlc-commits
mailing list