gtk: Do not forget to release OBJECT_LOCK on error path
authorThibault Saunier <tsaunier@gnome.org>
Thu, 24 Sep 2015 13:51:28 +0000 (15:51 +0200)
committerThibault Saunier <tsaunier@gnome.org>
Thu, 24 Sep 2015 13:57:26 +0000 (15:57 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=755542

ext/gtk/gstgtkbasesink.c

index 9ce6f7cc00b4b4bf8b37a077e4b4042353c68060..57c5a060afb5bff260c4535f49e57da5bf97f8ba 100644 (file)
@@ -347,7 +347,7 @@ gst_gtk_base_sink_stop (GstBaseSink * bsink)
 }
 
 static void
-gst_gtk_widget_show_all_and_unref (GtkWidget *widget)
+gst_gtk_widget_show_all_and_unref (GtkWidget * widget)
 {
   gtk_widget_show_all (widget);
   g_object_unref (widget);
@@ -378,7 +378,8 @@ gst_gtk_base_sink_change_state (GstElement * element, GstStateChange transition)
       GST_OBJECT_UNLOCK (gtk_sink);
 
       if (window)
-        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref, window);
+        gst_gtk_invoke_on_main ((GThreadFunc) gst_gtk_widget_show_all_and_unref,
+            window);
 
       break;
     }
@@ -437,9 +438,10 @@ gst_gtk_base_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
     return FALSE;
   }
 
-  if (!gtk_gst_base_widget_set_format (gtk_sink->widget, &gtk_sink->v_info))
+  if (!gtk_gst_base_widget_set_format (gtk_sink->widget, &gtk_sink->v_info)) {
+    GST_OBJECT_UNLOCK (gtk_sink);
     return FALSE;
-
+  }
   GST_OBJECT_UNLOCK (gtk_sink);
 
   return TRUE;