eglglessink: Don't signal the GCond too often
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 16 Oct 2012 15:35:18 +0000 (17:35 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Thu, 18 Oct 2012 12:35:19 +0000 (14:35 +0200)
ext/eglgles/gsteglglessink.c

index 426382a..e713405 100644 (file)
@@ -1093,19 +1093,17 @@ render_thread_func (GstEglGlesSink * eglglessink)
     }
 
     eglglessink->last_flow = gst_eglglessink_render_and_display (eglglessink, buf);
-    g_mutex_lock (eglglessink->render_lock);
-    g_cond_broadcast (eglglessink->render_cond);
-    g_mutex_unlock (eglglessink->render_lock);
+    if (buf) {
+      g_mutex_lock (eglglessink->render_lock);
+      g_cond_broadcast (eglglessink->render_cond);
+      g_mutex_unlock (eglglessink->render_lock);
+    }
     item->destroy (item);
     if (eglglessink->last_flow != GST_FLOW_OK)
       break;
     GST_DEBUG_OBJECT (eglglessink, "Successfully handled object");
   }
 
-  g_mutex_lock (eglglessink->render_lock);
-  g_cond_broadcast (eglglessink->render_cond);
-  g_mutex_unlock (eglglessink->render_lock);
-
   if (eglglessink->last_flow == GST_FLOW_OK)
     eglglessink->last_flow = GST_FLOW_WRONG_STATE;