From 35acbae03395719b6d35b8e060abd73828766545 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Tue, 8 Oct 2013 13:45:55 -0300 Subject: [PATCH] formatter: Try to use best formatter first --- ges/ges-formatter.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ges/ges-formatter.c b/ges/ges-formatter.c index ba47822..2ba3cf1 100644 --- a/ges/ges-formatter.c +++ b/ges/ges-formatter.c @@ -493,6 +493,23 @@ _init_formatter_assets (void) g_free (formatters); } +static gint +_sort_formatters (GESAsset * asset, GESAsset * asset1) +{ + GESFormatterClass *class = + g_type_class_peek (ges_asset_get_extractable_type (asset)); + GESFormatterClass *class1 = + g_type_class_peek (ges_asset_get_extractable_type (asset1)); + + /* We want the highest ranks to be first! */ + if (class->rank > class1->rank) + return -1; + else if (class->rank < class1->rank) + return 1; + + return 0; +} + GESAsset * _find_formatter_asset_for_uri (const gchar * uri) { @@ -500,7 +517,8 @@ _find_formatter_asset_for_uri (const gchar * uri) GList *formatter_assets, *tmp; GESAsset *asset = NULL; - formatter_assets = ges_list_assets (GES_TYPE_FORMATTER); + formatter_assets = g_list_sort (ges_list_assets (GES_TYPE_FORMATTER), + (GCompareFunc) _sort_formatters); for (tmp = formatter_assets; tmp; tmp = tmp->next) { GESFormatter *dummy_instance; -- 2.7.4