summaryrefslogtreecommitdiffstats
path: root/gst/autodetect
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2005-11-22 14:44:26 +0000
committerTim-Philipp Müller <tim@centricular.net>2005-11-22 14:44:26 +0000
commite8464db22f5e18ba075bdaa59cf8496fa54709f7 (patch)
tree7d78fc25e484e6d346a5f5289fe989afec6fd901 /gst/autodetect
parentbaba27fb184cad400e2315f2f159767b4b4ca74b (diff)
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.
Diffstat (limited to 'gst/autodetect')
-rw-r--r--gst/autodetect/gstautoaudiosink.c11
-rw-r--r--gst/autodetect/gstautovideosink.c18
2 files changed, 19 insertions, 10 deletions
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);