From b311b833c1998bd8694cebe888a4b159b291023d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Mon, 17 Jan 2011 23:59:48 +0000 Subject: [PATCH] app: make GstAppBuffer get_type() function thread-safe --- gst-libs/gst/app/gstappbuffer.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gst-libs/gst/app/gstappbuffer.c b/gst-libs/gst/app/gstappbuffer.c index 06f354f869..2fa72bb8ad 100644 --- a/gst-libs/gst/app/gstappbuffer.c +++ b/gst-libs/gst/app/gstappbuffer.c @@ -37,9 +37,9 @@ static GstBufferClass *parent_class; GType gst_app_buffer_get_type (void) { - static GType _gst_app_buffer_type; + static volatile gsize app_buffer_type = 0; - if (G_UNLIKELY (_gst_app_buffer_type == 0)) { + if (g_once_init_enter (&app_buffer_type)) { static const GTypeInfo app_buffer_info = { sizeof (GstBufferClass), NULL, @@ -52,10 +52,12 @@ gst_app_buffer_get_type (void) (GInstanceInitFunc) gst_app_buffer_init, NULL }; - _gst_app_buffer_type = g_type_register_static (GST_TYPE_BUFFER, - "GstAppBuffer", &app_buffer_info, 0); + GType tmp = g_type_register_static (GST_TYPE_BUFFER, "GstAppBuffer", + &app_buffer_info, 0); + g_once_init_leave (&app_buffer_type, tmp); } - return _gst_app_buffer_type; + + return (GType) app_buffer_type; } static void