audio: make public get_type() functions thread-safe

This commit is contained in:
Tim-Philipp Müller 2010-10-08 09:48:50 +01:00
parent 6b7af81e30
commit 751c34bffc
3 changed files with 29 additions and 26 deletions

View file

@ -56,28 +56,28 @@ static GstSystemClockClass *parent_class = NULL;
GType
gst_audio_clock_get_type (void)
{
static GType clock_type = 0;
static volatile gsize clock_type = 0;
static const GTypeInfo clock_info = {
sizeof (GstAudioClockClass),
NULL,
NULL,
(GClassInitFunc) gst_audio_clock_class_init,
NULL,
NULL,
sizeof (GstAudioClock),
4,
(GInstanceInitFunc) gst_audio_clock_init,
NULL
};
if (!clock_type) {
static const GTypeInfo clock_info = {
sizeof (GstAudioClockClass),
NULL,
NULL,
(GClassInitFunc) gst_audio_clock_class_init,
NULL,
NULL,
sizeof (GstAudioClock),
4,
(GInstanceInitFunc) gst_audio_clock_init,
NULL
};
clock_type = g_type_register_static (GST_TYPE_SYSTEM_CLOCK, "GstAudioClock",
if (g_once_init_enter (&clock_type)) {
GType tmp = g_type_register_static (GST_TYPE_SYSTEM_CLOCK, "GstAudioClock",
&clock_info, 0);
g_once_init_leave (&clock_type, tmp);
}
return clock_type;
}
return (GType) clock_type;
}
static void
gst_audio_clock_class_init (GstAudioClockClass * klass)

View file

@ -110,7 +110,7 @@ enum
GType
gst_base_audio_sink_slave_method_get_type (void)
{
static GType slave_method_type = 0;
static volatile gsize slave_method_type = 0;
static const GEnumValue slave_method[] = {
{GST_BASE_AUDIO_SINK_SLAVE_RESAMPLE, "GST_BASE_AUDIO_SINK_SLAVE_RESAMPLE",
"resample"},
@ -119,11 +119,13 @@ gst_base_audio_sink_slave_method_get_type (void)
{0, NULL, NULL},
};
if (!slave_method_type) {
slave_method_type =
if (g_once_init_enter (&slave_method_type)) {
GType tmp =
g_enum_register_static ("GstBaseAudioSinkSlaveMethod", slave_method);
g_once_init_leave (&slave_method_type, tmp);
}
return slave_method_type;
return (GType) slave_method_type;
}

View file

@ -48,7 +48,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_base_audio_src_debug);
GType
gst_base_audio_src_slave_method_get_type (void)
{
static GType slave_method_type = 0;
static volatile gsize slave_method_type = 0;
/* FIXME 0.11: nick should be "retimestamp" not "re-timestamp" */
static const GEnumValue slave_method[] = {
{GST_BASE_AUDIO_SRC_SLAVE_RESAMPLE,
@ -60,11 +60,12 @@ gst_base_audio_src_slave_method_get_type (void)
{0, NULL, NULL},
};
if (!slave_method_type) {
slave_method_type =
if (g_once_init_enter (&slave_method_type)) {
GType tmp =
g_enum_register_static ("GstBaseAudioSrcSlaveMethod", slave_method);
g_once_init_leave (&slave_method_type, tmp);
}
return slave_method_type;
return (GType) slave_method_type;
}
#define GST_BASE_AUDIO_SRC_GET_PRIVATE(obj) \