From 4e88633de4f301b93291a81bdc850da3a6c3d965 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Olivier=20Cr=C3=AAte?= Date: Fri, 3 Jul 2009 04:42:24 -0400 Subject: [PATCH] audiosink: Add stream-status messages Fixes #587695 --- gst-libs/gst/audio/gstaudiosink.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gst-libs/gst/audio/gstaudiosink.c b/gst-libs/gst/audio/gstaudiosink.c index 114a971..16a4fe4 100644 --- a/gst-libs/gst/audio/gstaudiosink.c +++ b/gst-libs/gst/audio/gstaudiosink.c @@ -207,6 +207,8 @@ audioringbuffer_thread_func (GstRingBuffer * buf) GstAudioSinkClass *csink; GstAudioRingBuffer *abuf = GST_AUDIORING_BUFFER_CAST (buf); WriteFunc writefunc; + GstMessage *message; + GValue val = { 0 }; sink = GST_AUDIO_SINK (GST_OBJECT_PARENT (buf)); csink = GST_AUDIO_SINK_GET_CLASS (sink); @@ -222,6 +224,14 @@ audioringbuffer_thread_func (GstRingBuffer * buf) if (writefunc == NULL) goto no_function; + g_value_init (&val, G_TYPE_POINTER); + g_value_set_pointer (&val, sink->thread); + message = gst_message_new_stream_status (GST_OBJECT_CAST (buf), + GST_STREAM_STATUS_TYPE_ENTER, GST_ELEMENT_CAST (sink)); + gst_message_set_stream_status_object (message, &val); + GST_DEBUG_OBJECT (sink, "posting ENTER stream status"); + gst_element_post_message (GST_ELEMENT_CAST (sink), message); + while (TRUE) { gint left, len; guint8 *readptr; @@ -270,6 +280,7 @@ audioringbuffer_thread_func (GstRingBuffer * buf) } /* Will never be reached */ + g_assert_not_reached (); return; /* ERROR */ @@ -282,6 +293,11 @@ stop_running: { GST_OBJECT_UNLOCK (abuf); GST_DEBUG_OBJECT (sink, "stop running, exit thread"); + message = gst_message_new_stream_status (GST_OBJECT_CAST (buf), + GST_STREAM_STATUS_TYPE_LEAVE, GST_ELEMENT_CAST (sink)); + gst_message_set_stream_status_object (message, &val); + GST_DEBUG_OBJECT (sink, "posting LEAVE stream status"); + gst_element_post_message (GST_ELEMENT_CAST (sink), message); return; } } -- 2.7.4