gst/autodetect/: Use gst_plugin_feature_list_free() to free feature list and in the case of autovideosink free the li...

Original commit message from CVS:
* gst/autodetect/gstautoaudiosink.c:
(gst_auto_audio_sink_find_best), (gst_auto_audio_sink_detect):
* gst/autodetect/gstautovideosink.c:
(gst_auto_video_sink_find_best), (gst_auto_video_sink_detect):
Use gst_plugin_feature_list_free() to free feature list and
in the case of autovideosink free the list at all. Also
miscellaneous cosmetic fixes.
This commit is contained in:
Tim-Philipp Müller 2005-11-22 14:44:26 +00:00
parent baba27fb18
commit e8464db22f
3 changed files with 29 additions and 10 deletions

View file

@ -1,3 +1,13 @@
2005-11-22 Tim-Philipp Müller <tim at centricular dot net>
* gst/autodetect/gstautoaudiosink.c:
(gst_auto_audio_sink_find_best), (gst_auto_audio_sink_detect):
* gst/autodetect/gstautovideosink.c:
(gst_auto_video_sink_find_best), (gst_auto_video_sink_detect):
Use gst_plugin_feature_list_free() to free feature list and
in the case of autovideosink free the list at all. Also
miscellaneous cosmetic fixes.
2005-11-22 Thomas Vander Stichele <thomas at apestaart dot org> 2005-11-22 Thomas Vander Stichele <thomas at apestaart dot org>
* gst/cutter/gstcutter.c: (gst_cutter_chain), * gst/cutter/gstcutter.c: (gst_cutter_chain),

View file

@ -170,7 +170,7 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink)
if (ss) { if (ss) {
gboolean r; gboolean r;
g_object_get (G_OBJECT (el), "soundserver-running", &r, NULL); g_object_get (el, "soundserver-running", &r, NULL);
if (r) { if (r) {
GST_DEBUG_OBJECT (sink, "%s - soundserver is running", GST_DEBUG_OBJECT (sink, "%s - soundserver is running",
GST_PLUGIN_FEATURE (f)->name); GST_PLUGIN_FEATURE (f)->name);
@ -192,7 +192,8 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink)
/* collect all error messages */ /* collect all error messages */
while ((message = gst_bus_pop (bus))) { while ((message = gst_bus_pop (bus))) {
if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR) { if (GST_MESSAGE_TYPE (message) == GST_MESSAGE_ERROR) {
GST_DEBUG_OBJECT (sink, "appending error message %p", message); GST_DEBUG_OBJECT (sink, "appending error message %"
GST_PTR_FORMAT, message);
errors = g_slist_append (errors, message); errors = g_slist_append (errors, message);
} else { } else {
gst_message_unref (message); gst_message_unref (message);
@ -203,7 +204,7 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink)
} }
next: next:
gst_object_unref (GST_OBJECT (el)); gst_object_unref (el);
} }
} }
@ -228,7 +229,7 @@ done:
} }
} }
gst_object_unref (bus); gst_object_unref (bus);
g_list_free (list); gst_plugin_feature_list_free (list);
g_slist_foreach (errors, (GFunc) gst_mini_object_unref, NULL); g_slist_foreach (errors, (GFunc) gst_mini_object_unref, NULL);
g_slist_free (errors); g_slist_free (errors);
@ -252,7 +253,9 @@ gst_auto_audio_sink_detect (GstAutoAudioSink * sink)
if (!(esink = gst_auto_audio_sink_find_best (sink))) { if (!(esink = gst_auto_audio_sink_find_best (sink))) {
return FALSE; return FALSE;
} }
sink->kid = esink; sink->kid = esink;
gst_element_set_state (sink->kid, GST_STATE (sink));
gst_bin_add (GST_BIN (sink), esink); gst_bin_add (GST_BIN (sink), esink);
/* attach ghost pad */ /* attach ghost pad */

View file

@ -134,14 +134,15 @@ gst_auto_video_sink_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2)
static GstElement * static GstElement *
gst_auto_video_sink_find_best (GstAutoVideoSink * sink) gst_auto_video_sink_find_best (GstAutoVideoSink * sink)
{ {
GList *list; GstElement *choice = NULL;
GList *list, *walk;
list = gst_registry_feature_filter (gst_registry_get_default (), list = gst_registry_feature_filter (gst_registry_get_default (),
(GstPluginFeatureFilter) gst_auto_video_sink_factory_filter, FALSE, sink); (GstPluginFeatureFilter) gst_auto_video_sink_factory_filter, FALSE, sink);
list = g_list_sort (list, (GCompareFunc) gst_auto_video_sink_compare_ranks); list = g_list_sort (list, (GCompareFunc) gst_auto_video_sink_compare_ranks);
for (; list != NULL; list = list->next) { for (walk = list; walk != NULL; walk = walk->next) {
GstElementFactory *f = GST_ELEMENT_FACTORY (list->data); GstElementFactory *f = GST_ELEMENT_FACTORY (walk->data);
GstElement *el; GstElement *el;
GST_DEBUG_OBJECT (sink, "Trying %s", GST_PLUGIN_FEATURE (f)->name); GST_DEBUG_OBJECT (sink, "Trying %s", GST_PLUGIN_FEATURE (f)->name);
@ -153,7 +154,8 @@ gst_auto_video_sink_find_best (GstAutoVideoSink * sink)
ret = gst_element_set_state (el, GST_STATE_READY); ret = gst_element_set_state (el, GST_STATE_READY);
if (ret == GST_STATE_CHANGE_SUCCESS) { if (ret == GST_STATE_CHANGE_SUCCESS) {
GST_DEBUG_OBJECT (sink, "success"); GST_DEBUG_OBJECT (sink, "success");
return el; choice = el;
goto done;
} }
GST_WARNING_OBJECT (sink, "Couldn't set READY: %d", ret); GST_WARNING_OBJECT (sink, "Couldn't set READY: %d", ret);
@ -162,11 +164,14 @@ gst_auto_video_sink_find_best (GstAutoVideoSink * sink)
GST_WARNING_OBJECT (sink, GST_WARNING_OBJECT (sink,
"Couldn't set element to NULL prior to disposal."); "Couldn't set element to NULL prior to disposal.");
gst_object_unref (GST_OBJECT (el)); gst_object_unref (el);
} }
} }
return NULL; done:
gst_plugin_feature_list_free (list);
return choice;
} }
static gboolean static gboolean
@ -188,6 +193,7 @@ gst_auto_video_sink_detect (GstAutoVideoSink * sink)
("Failed to find a supported video sink")); ("Failed to find a supported video sink"));
return FALSE; return FALSE;
} }
sink->kid = esink; sink->kid = esink;
gst_bin_add (GST_BIN (sink), esink); gst_bin_add (GST_BIN (sink), esink);