From 3898263f329e877d9b6a997d7a92851908d19166 Mon Sep 17 00:00:00 2001 From: Benjamin Franzke Date: Mon, 12 Dec 2011 23:03:38 +0100 Subject: Use g_list_find_custom to calculate sink position The compare function matches against the configured sink priority. --- src/pa-sink-ctl.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) (limited to 'src/pa-sink-ctl.c') diff --git a/src/pa-sink-ctl.c b/src/pa-sink-ctl.c index df51b5e..d1fb637 100644 --- a/src/pa-sink-ctl.c +++ b/src/pa-sink-ctl.c @@ -114,21 +114,13 @@ get_sink_priority(struct context *ctx, const pa_sink_info *sink_info) return 0; } -static void -add_sink(struct context *ctx, sink_info *new) +static gint +cmp_priority(gconstpointer list_data, gconstpointer b) { - GList *l, *pos = NULL; - - for (l = ctx->sink_list; l; l = l->next) { - sink_info *sink = l->data; + const sink_info *sink_el = list_data; + const sink_info *sink = b; - if (new->priority > sink->priority) { - pos = l; - break; - } - } - ctx->sink_list = g_list_insert_before(ctx->sink_list, pos, - g_memdup(new, sizeof *new)); + return (sink->priority > sink_el->priority) ? 0 : -1; } static void @@ -169,7 +161,9 @@ sink_info_cb(pa_context *c, const pa_sink_info *i, if (inlist) *inlist = sink; else - add_sink(ctx, &sink); + list_insert_struct(ctx->sink_list, sink, + g_list_find_custom(ctx->sink_list, + &sink, cmp_priority)); } static void -- cgit