playbin3: fix leaks of collection returned by message parse API

gst_message_parse_stream_collection() and
gst_message_parse_streams_selected() actually return a reffed
GstStreamCollection.

https://bugzilla.gnome.org/show_bug.cgi?id=768776
This commit is contained in:
Guillaume Desmottes 2016-07-13 16:02:25 +02:00 committed by Tim-Philipp Müller
parent 657a9c23d6
commit c1d55f29a1
4 changed files with 6 additions and 0 deletions

View file

@ -1182,6 +1182,8 @@ gst_decodebin3_handle_message (GstBin * bin, GstMessage * message)
gst_message_unref (message);
message = new_msg;
}
if (collection)
gst_object_unref (collection);
break;
}
default:

View file

@ -3102,6 +3102,7 @@ gst_play_bin3_handle_message (GstBin * bin, GstMessage * msg)
GST_PLAY_BIN3_UNLOCK (playbin);
notify_all_streams (playbin, collection);
gst_object_unref (collection);
}
} else if (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_STREAMS_SELECTED) {
GstStreamCollection *collection = NULL;
@ -3138,6 +3139,7 @@ gst_play_bin3_handle_message (GstBin * bin, GstMessage * msg)
GST_PLAY_BIN3_UNLOCK (playbin);
notify_all_streams (playbin, collection);
gst_object_unref (collection);
}
}

View file

@ -223,6 +223,7 @@ _on_bus_message (GstBus * bus, GstMessage * message, MyDataStruct * data)
/* In 5s try to change streams */
data->timeout_id =
g_timeout_add_seconds (5, (GSourceFunc) switch_streams, data);
gst_object_unref (collection);
}
break;
}

View file

@ -217,6 +217,7 @@ _on_bus_message (GstBus * bus, GstMessage * message, MyDataStruct * data)
/* In 5s try to change streams */
data->timeout_id =
g_timeout_add_seconds (5, (GSourceFunc) switch_streams, data);
gst_object_unref (collection);
}
break;
}