diff --git a/gst-libs/gst/audio/gstaudiosink.c b/gst-libs/gst/audio/gstaudiosink.c index b4ceacba9e..479267e413 100644 --- a/gst-libs/gst/audio/gstaudiosink.c +++ b/gst-libs/gst/audio/gstaudiosink.c @@ -191,6 +191,10 @@ gst_audioringbuffer_class_init (GstAudioRingBufferClass * klass) gstringbuffer_class->delay = GST_DEBUG_FUNCPTR (gst_audioringbuffer_delay); gstringbuffer_class->activate = GST_DEBUG_FUNCPTR (gst_audioringbuffer_activate); + + /* ref class from a thread-safe context to work around missing bit of + * thread-safety in GObject */ + g_type_class_ref (GST_TYPE_AUDIORING_BUFFER); } typedef guint (*WriteFunc) (GstAudioSink * sink, gpointer data, guint length); diff --git a/gst-libs/gst/audio/gstaudiosrc.c b/gst-libs/gst/audio/gstaudiosrc.c index 8974e23c5d..ff183b8883 100644 --- a/gst-libs/gst/audio/gstaudiosrc.c +++ b/gst-libs/gst/audio/gstaudiosrc.c @@ -183,6 +183,10 @@ gst_audioringbuffer_class_init (GstAudioRingBufferClass * klass) gstringbuffer_class->stop = GST_DEBUG_FUNCPTR (gst_audioringbuffer_stop); gstringbuffer_class->delay = GST_DEBUG_FUNCPTR (gst_audioringbuffer_delay); + + /* ref class from a thread-safe context to work around missing bit of + * thread-safety in GObject */ + g_type_class_ref (GST_TYPE_AUDIORING_BUFFER); } typedef guint (*ReadFunc) (GstAudioSrc * src, gpointer data, guint length);