eglglessink: Post stream-status messages for our render thread
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 1 Nov 2012 12:51:09 +0000 (13:51 +0100)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 21 Mar 2013 08:57:42 +0000 (09:57 +0100)
ext/eglgles/gsteglglessink.c

index 828ce48380f52dca5f2fdef6d9dcdc128571186e..7625cf6d866b5bf5e1eeaf81afeba573bfc59980 100644 (file)
@@ -591,8 +591,19 @@ HANDLE_ERROR:
 static gpointer
 render_thread_func (GstEglGlesSink * eglglessink)
 {
+  GstMessage *message;
+  GValue val = { 0 };
   GstDataQueueItem *item = NULL;
 
+  g_value_init (&val, G_TYPE_POINTER);
+  g_value_set_pointer (&val, g_thread_self ());
+  message = gst_message_new_stream_status (GST_OBJECT_CAST (eglglessink),
+      GST_STREAM_STATUS_TYPE_ENTER, GST_ELEMENT_CAST (eglglessink));
+  gst_message_set_stream_status_object (message, &val);
+  GST_DEBUG_OBJECT (eglglessink, "posting ENTER stream status");
+  gst_element_post_message (GST_ELEMENT_CAST (eglglessink), message);
+  g_value_unset (&val);
+
   while (gst_data_queue_pop (eglglessink->queue, &item)) {
     GstBuffer *buf = NULL;
 
@@ -650,6 +661,15 @@ render_thread_func (GstEglGlesSink * eglglessink)
     eglglessink->configured_caps = NULL;
   }
 
+  g_value_init (&val, G_TYPE_POINTER);
+  g_value_set_pointer (&val, g_thread_self ());
+  message = gst_message_new_stream_status (GST_OBJECT_CAST (eglglessink),
+      GST_STREAM_STATUS_TYPE_LEAVE, GST_ELEMENT_CAST (eglglessink));
+  gst_message_set_stream_status_object (message, &val);
+  GST_DEBUG_OBJECT (eglglessink, "posting LEAVE stream status");
+  gst_element_post_message (GST_ELEMENT_CAST (eglglessink), message);
+  g_value_unset (&val);
+
   return NULL;
 }