aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-09-19 14:48:22 +0200
committerMax Kellermann <max@duempel.org>2008-09-19 14:48:22 +0200
commit28a463b53369e9f26d6fb0a755af588faac38e18 (patch)
tree1f8fee58a4150bf122876889808eb55fcd249e0a
parentd13c5a10a758a453dce00990e58cff572c592be7 (diff)
downloadmpd-28a463b53369e9f26d6fb0a755af588faac38e18.tar.gz
mpd-28a463b53369e9f26d6fb0a755af588faac38e18.tar.xz
mpd-28a463b53369e9f26d6fb0a755af588faac38e18.zip
browser: use mpdclient_filelist_find_song() in set_highlight()
A song should not be twice in the browser. Simplify set_highlight() by finding the entry with mpdclient_filelist_find_song().
-rw-r--r--src/screen_browser.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/screen_browser.c b/src/screen_browser.c
index dbc7adad3..828cbe21c 100644
--- a/src/screen_browser.c
+++ b/src/screen_browser.c
@@ -54,26 +54,17 @@ clear_highlights(mpdclient_filelist_t *fl)
static void
set_highlight(mpdclient_filelist_t *fl, mpd_Song *song, int highlight)
{
- GList *list = g_list_first(fl->list);
-
- assert(song != NULL);
+ struct filelist_entry *entry = mpdclient_filelist_find_song(fl, song);
+ mpd_InfoEntity *entity;
- while( list ) {
- filelist_entry_t *entry = list->data;
- mpd_InfoEntity *entity = entry->entity;
+ if (entry == NULL)
+ return;
- if( entity && entity->type==MPD_INFO_ENTITY_TYPE_SONG ) {
- mpd_Song *song2 = entity->info.song;
-
- if( strcmp(song->file, song2->file) == 0 ) {
- if(highlight)
- entry->flags |= HIGHLIGHT;
- else
- entry->flags &= ~HIGHLIGHT;
- }
- }
- list = list->next;
- }
+ entity = entry->entity;
+ if (highlight)
+ entry->flags |= HIGHLIGHT;
+ else
+ entry->flags &= ~HIGHLIGHT;
}
/* sync highlight flags with playlist */