osxaudio: Take lock around sink/source before accessing the ringbuffer
https://bugzilla.gnome.org/show_bug.cgi?id=740987
This commit is contained in:
parent
4a58ebf487
commit
d18a6b0a2c
@ -358,7 +358,12 @@ gst_osx_audio_sink_getcaps (GstBaseSink * sink, GstCaps * filter)
|
|||||||
|
|
||||||
gstelement_class = GST_ELEMENT_GET_CLASS (sink);
|
gstelement_class = GST_ELEMENT_GET_CLASS (sink);
|
||||||
osxsink = GST_OSX_AUDIO_SINK (sink);
|
osxsink = GST_OSX_AUDIO_SINK (sink);
|
||||||
|
|
||||||
|
GST_OBJECT_LOCK (osxsink);
|
||||||
buf = GST_AUDIO_BASE_SINK (sink)->ringbuffer;
|
buf = GST_AUDIO_BASE_SINK (sink)->ringbuffer;
|
||||||
|
if (buf)
|
||||||
|
gst_object_ref (buf);
|
||||||
|
GST_OBJECT_UNLOCK (osxsink);
|
||||||
|
|
||||||
if (buf) {
|
if (buf) {
|
||||||
GST_OBJECT_LOCK (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);
|
ret = gst_caps_ref (osxsink->cached_caps);
|
||||||
|
|
||||||
GST_OBJECT_UNLOCK (buf);
|
GST_OBJECT_UNLOCK (buf);
|
||||||
|
|
||||||
|
gst_object_unref (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret && filter) {
|
if (ret && filter) {
|
||||||
|
@ -311,7 +311,12 @@ gst_osx_audio_src_get_caps (GstBaseSrc * src, GstCaps * filter)
|
|||||||
|
|
||||||
gstelement_class = GST_ELEMENT_GET_CLASS (src);
|
gstelement_class = GST_ELEMENT_GET_CLASS (src);
|
||||||
osxsrc = GST_OSX_AUDIO_SRC (src);
|
osxsrc = GST_OSX_AUDIO_SRC (src);
|
||||||
|
|
||||||
|
GST_OBJECT_LOCK (osxsrc);
|
||||||
buf = GST_AUDIO_BASE_SRC (src)->ringbuffer;
|
buf = GST_AUDIO_BASE_SRC (src)->ringbuffer;
|
||||||
|
if (buf)
|
||||||
|
gst_object_ref (buf);
|
||||||
|
GST_OBJECT_UNLOCK (osxsrc);
|
||||||
|
|
||||||
if (buf) {
|
if (buf) {
|
||||||
GST_OBJECT_LOCK (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_UNLOCK (buf);
|
||||||
|
gst_object_unref (buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ret && osxsrc->cached_caps)
|
if (!ret && osxsrc->cached_caps)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user