/pidgin/main: b52be4fef1de: Fix gstreamer elements references

Youness Alaoui <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: b52be4fef1ded825e262095480915f2c675a5694
Author:	 Youness Alaoui <[email protected]>
Date:	 2014-07-08 22:59 -0400
Branch:	 release-2.x.y
URL: https://hg.pidgin.im/pidgin/main/rev/b52be4fef1de

Description:

Fix gstreamer elements references
In backend-fs2, the create_src will unref the src after it's done with
it, if we simply return the created source, it will segfault.
The issue never happened before because every source so far also has
the UNIQUE flag, which causes it to go in a different branch of the
code which does ref the element and add it to the bin.

Refs #16315

diffstat:

 libpurple/mediamanager.c |  11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diffs (28 lines):

diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -443,7 +443,11 @@ purple_media_manager_set_video_caps(Purp
 
 		if (src) {
 			GstElement *capsfilter = gst_bin_get_by_name(GST_BIN(src), "prpl_video_caps");
-			g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+			if (capsfilter) {
+				g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+				gst_object_unref (capsfilter);
+			}
+			gst_object_unref (src);
 		}
 
 		g_free(id);
@@ -550,6 +554,11 @@ purple_media_manager_get_element(PurpleM
 	} else {
 		ret = purple_media_element_info_call_create(info,
 				media, session_id, participant);
+		if (element_type & PURPLE_MEDIA_ELEMENT_SRC) {
+			gst_object_ref(ret);
+			gst_bin_add(GST_BIN(purple_media_manager_get_pipeline(manager)),
+				ret);
+		}
 	}
 
 	if (ret == NULL)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.