From e8464db22f5e18ba075bdaa59cf8496fa54709f7 Mon Sep 17 00:00:00 2001 From: Tim-Philipp Müller Date: Tue, 22 Nov 2005 14:44:26 +0000 Subject: 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. --- gst/autodetect/gstautoaudiosink.c | 11 +++++++---- gst/autodetect/gstautovideosink.c | 18 ++++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) (limited to 'gst/autodetect') diff --git a/gst/autodetect/gstautoaudiosink.c b/gst/autodetect/gstautoaudiosink.c index dbd9efe7..3e540822 100644 --- a/gst/autodetect/gstautoaudiosink.c +++ b/gst/autodetect/gstautoaudiosink.c @@ -170,7 +170,7 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) if (ss) { gboolean r; - g_object_get (G_OBJECT (el), "soundserver-running", &r, NULL); + g_object_get (el, "soundserver-running", &r, NULL); if (r) { GST_DEBUG_OBJECT (sink, "%s - soundserver is running", GST_PLUGIN_FEATURE (f)->name); @@ -192,7 +192,8 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) /* collect all error messages */ while ((message = gst_bus_pop (bus))) { 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); } else { gst_message_unref (message); @@ -203,7 +204,7 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) } next: - gst_object_unref (GST_OBJECT (el)); + gst_object_unref (el); } } @@ -228,7 +229,7 @@ done: } } 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_free (errors); @@ -252,7 +253,9 @@ gst_auto_audio_sink_detect (GstAutoAudioSink * sink) if (!(esink = gst_auto_audio_sink_find_best (sink))) { return FALSE; } + sink->kid = esink; + gst_element_set_state (sink->kid, GST_STATE (sink)); gst_bin_add (GST_BIN (sink), esink); /* attach ghost pad */ diff --git a/gst/autodetect/gstautovideosink.c b/gst/autodetect/gstautovideosink.c index 5d2ba29e..0a303770 100644 --- a/gst/autodetect/gstautovideosink.c +++ b/gst/autodetect/gstautovideosink.c @@ -134,14 +134,15 @@ gst_auto_video_sink_compare_ranks (GstPluginFeature * f1, GstPluginFeature * f2) static GstElement * 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 (), (GstPluginFeatureFilter) gst_auto_video_sink_factory_filter, FALSE, sink); list = g_list_sort (list, (GCompareFunc) gst_auto_video_sink_compare_ranks); - for (; list != NULL; list = list->next) { - GstElementFactory *f = GST_ELEMENT_FACTORY (list->data); + for (walk = list; walk != NULL; walk = walk->next) { + GstElementFactory *f = GST_ELEMENT_FACTORY (walk->data); GstElement *el; 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); if (ret == GST_STATE_CHANGE_SUCCESS) { GST_DEBUG_OBJECT (sink, "success"); - return el; + choice = el; + goto done; } 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, "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 @@ -188,6 +193,7 @@ gst_auto_video_sink_detect (GstAutoVideoSink * sink) ("Failed to find a supported video sink")); return FALSE; } + sink->kid = esink; gst_bin_add (GST_BIN (sink), esink); -- cgit