pidgin/plugins/vvconfig.c

branch
release-2.x.y
changeset 37650
f827e56eea34
parent 36316
2415067473ba
child 38257
1a294a6d2a57
--- a/pidgin/plugins/vvconfig.c	Mon Apr 11 04:22:21 2016 -0300
+++ b/pidgin/plugins/vvconfig.c	Wed Apr 27 09:19:58 2016 +0200
@@ -371,6 +371,26 @@
 	return ret;
 }
 
+static void
+videosink_disable_last_sample(GstElement *sink)
+{
+	GObjectClass *klass = G_OBJECT_GET_CLASS(sink);
+
+	if (g_object_class_find_property(klass, "enable-last-sample")) {
+		g_object_set(sink, "enable-last-sample", FALSE, NULL);
+	}
+}
+
+static void
+autovideosink_child_added_cb(GstChildProxy *child_proxy, GObject *object,
+#if GST_CHECK_VERSION(1,0,0)
+		gchar *name,
+#endif
+		gpointer user_data)
+{
+	videosink_disable_last_sample(GST_ELEMENT(object));
+}
+
 static GstElement *
 create_video_sink(PurpleMedia *media,
 		const gchar *session_id, const gchar *participant)
@@ -388,6 +408,14 @@
 	ret = gst_element_factory_make(plugin, NULL);
 	if (device[0] != '\0')
 		g_object_set(G_OBJECT(ret), "device", device, NULL);
+
+	if (g_strcmp0(plugin, "autovideosink") == 0) {
+		g_signal_connect(ret, "child-added",
+			G_CALLBACK(autovideosink_child_added_cb), NULL);
+	} else {
+		videosink_disable_last_sample(ret);
+	}
+
 	return ret;
 }
 

mercurial