|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
# HG changeset patch
|
|
David Woodhouse |
f31341b |
# User Youness Alaoui <kakaroto@kakaroto.homelinux.net>
|
|
David Woodhouse |
f31341b |
# Date 1404874798 14400
|
|
David Woodhouse |
f31341b |
# Node ID b52be4fef1ded825e262095480915f2c675a5694
|
|
David Woodhouse |
f31341b |
# Parent 2b41ba1fde8a80a4f2d715874a0b02449d4b66ad
|
|
David Woodhouse |
f31341b |
Fix gstreamer elements references
|
|
David Woodhouse |
f31341b |
In backend-fs2, the create_src will unref the src after it's done with
|
|
David Woodhouse |
f31341b |
it, if we simply return the created source, it will segfault.
|
|
David Woodhouse |
f31341b |
The issue never happened before because every source so far also has
|
|
David Woodhouse |
f31341b |
the UNIQUE flag, which causes it to go in a different branch of the
|
|
David Woodhouse |
f31341b |
code which does ref the element and add it to the bin.
|
|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
Refs #16315
|
|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
|
|
David Woodhouse |
f31341b |
--- a/libpurple/mediamanager.c
|
|
David Woodhouse |
f31341b |
+++ b/libpurple/mediamanager.c
|
|
David Woodhouse |
f31341b |
@@ -443,7 +443,11 @@
|
|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
if (src) {
|
|
David Woodhouse |
f31341b |
GstElement *capsfilter = gst_bin_get_by_name(GST_BIN(src), "prpl_video_caps");
|
|
David Woodhouse |
f31341b |
- g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
|
|
David Woodhouse |
f31341b |
+ if (capsfilter) {
|
|
David Woodhouse |
f31341b |
+ g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
|
|
David Woodhouse |
f31341b |
+ gst_object_unref (capsfilter);
|
|
David Woodhouse |
f31341b |
+ }
|
|
David Woodhouse |
f31341b |
+ gst_object_unref (src);
|
|
David Woodhouse |
f31341b |
}
|
|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
g_free(id);
|
|
David Woodhouse |
f31341b |
@@ -550,6 +554,11 @@
|
|
David Woodhouse |
f31341b |
} else {
|
|
David Woodhouse |
f31341b |
ret = purple_media_element_info_call_create(info,
|
|
David Woodhouse |
f31341b |
media, session_id, participant);
|
|
David Woodhouse |
f31341b |
+ if (element_type & PURPLE_MEDIA_ELEMENT_SRC) {
|
|
David Woodhouse |
f31341b |
+ gst_object_ref(ret);
|
|
David Woodhouse |
f31341b |
+ gst_bin_add(GST_BIN(purple_media_manager_get_pipeline(manager)),
|
|
David Woodhouse |
f31341b |
+ ret);
|
|
David Woodhouse |
f31341b |
+ }
|
|
David Woodhouse |
f31341b |
}
|
|
David Woodhouse |
f31341b |
|
|
David Woodhouse |
f31341b |
if (ret == NULL)
|
|
David Woodhouse |
f31341b |
|