diff --git a/sys/osxaudio/gstosxaudiosink.c b/sys/osxaudio/gstosxaudiosink.c index fd8be0c8ea..fffaf4ec11 100644 --- a/sys/osxaudio/gstosxaudiosink.c +++ b/sys/osxaudio/gstosxaudiosink.c @@ -358,7 +358,12 @@ gst_osx_audio_sink_getcaps (GstBaseSink * sink, GstCaps * filter) gstelement_class = GST_ELEMENT_GET_CLASS (sink); osxsink = GST_OSX_AUDIO_SINK (sink); + + GST_OBJECT_LOCK (osxsink); buf = GST_AUDIO_BASE_SINK (sink)->ringbuffer; + if (buf) + gst_object_ref (buf); + GST_OBJECT_UNLOCK (osxsink); if (buf) { GST_OBJECT_LOCK (buf); @@ -380,6 +385,8 @@ gst_osx_audio_sink_getcaps (GstBaseSink * sink, GstCaps * filter) ret = gst_caps_ref (osxsink->cached_caps); GST_OBJECT_UNLOCK (buf); + + gst_object_unref (buf); } if (ret && filter) { diff --git a/sys/osxaudio/gstosxaudiosrc.c b/sys/osxaudio/gstosxaudiosrc.c index 99f48b84c8..8592b7c116 100644 --- a/sys/osxaudio/gstosxaudiosrc.c +++ b/sys/osxaudio/gstosxaudiosrc.c @@ -311,7 +311,12 @@ gst_osx_audio_src_get_caps (GstBaseSrc * src, GstCaps * filter) gstelement_class = GST_ELEMENT_GET_CLASS (src); osxsrc = GST_OSX_AUDIO_SRC (src); + + GST_OBJECT_LOCK (osxsrc); buf = GST_AUDIO_BASE_SRC (src)->ringbuffer; + if (buf) + gst_object_ref (buf); + GST_OBJECT_UNLOCK (osxsrc); if (buf) { GST_OBJECT_LOCK (buf); @@ -330,6 +335,7 @@ gst_osx_audio_src_get_caps (GstBaseSrc * src, GstCaps * filter) } GST_OBJECT_UNLOCK (buf); + gst_object_unref (buf); } if (!ret && osxsrc->cached_caps)