From 0d9b7baff6e8bb4d65ce1a7c7218b2179d696aeb Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Tue, 3 May 2016 07:54:54 -0400 Subject: [PATCH] core/tags/album: Add a pointer to the struct artist This is needed for album art fetching to get more accurate results for our MusicBrainz query. Signed-off-by: Anna Schumaker --- core/tags/album.c | 7 ++++--- core/tags/tags.c | 4 ++-- core/tags/track.c | 6 ++++++ include/core/tags/album.h | 2 ++ tests/core/.gitignore | 2 +- tests/core/tags/Sconscript | 2 +- 6 files changed, 16 insertions(+), 7 deletions(-) diff --git a/core/tags/album.c b/core/tags/album.c index 3fb85c11..e722507a 100644 --- a/core/tags/album.c +++ b/core/tags/album.c @@ -17,9 +17,10 @@ static struct album *__album_alloc(gchar *name, unsigned int year) struct album *album = g_malloc(sizeof(struct album)); dbe_init(&album->al_dbe, album); - album->al_year = year; - album->al_name = name; - album->al_lower = string_lowercase(album->al_name); + album->al_year = year; + album->al_name = name; + album->al_lower = string_lowercase(album->al_name); + album->al_artist = NULL; return album; } diff --git a/core/tags/tags.c b/core/tags/tags.c index 09e1505f..9c7e38bb 100644 --- a/core/tags/tags.c +++ b/core/tags/tags.c @@ -10,8 +10,8 @@ void tags_init() { - album_db_init(); artist_db_init(); + album_db_init(); genre_db_init(); library_db_init(); track_db_init(); @@ -22,6 +22,6 @@ void tags_deinit() track_db_deinit(); library_db_deinit(); genre_db_deinit(); - artist_db_deinit(); album_db_deinit(); + artist_db_deinit(); } diff --git a/core/tags/track.c b/core/tags/track.c index f174c603..79b6f0a0 100644 --- a/core/tags/track.c +++ b/core/tags/track.c @@ -71,6 +71,9 @@ struct db_entry *track_alloc(const gchar *key) track->tr_genre = genre_find(taglib_tag_genre(tag)); track->tr_library = library; + if (track->tr_album->al_artist == NULL) + track->tr_album->al_artist = track->tr_artist; + unplayed_count++; track->tr_count = 0; track->tr_length = taglib_audioproperties_length(audio); @@ -138,6 +141,9 @@ static struct db_entry *track_read(struct file *file) track->tr_genre = genre_get(genre_id); track->tr_library = library_get(library_id); + if (track->tr_album->al_artist == NULL) + track->tr_album->al_artist = track->tr_artist; + track->tr_title = file_readl(file); track->tr_lower = string_lowercase(track->tr_title); track->tr_path = __track_key(track->tr_library, file_readl(file)); diff --git a/include/core/tags/album.h b/include/core/tags/album.h index 173ba40a..7f6d04f8 100644 --- a/include/core/tags/album.h +++ b/include/core/tags/album.h @@ -15,11 +15,13 @@ #define OCARINA_CORE_TAGS_ALBUM_H #include +#include struct album { unsigned int al_year; /* This album's year. */ gchar *al_name; /* This album's name. */ gchar *al_lower; /* This album's name (lowercased). */ + struct artist *al_artist; struct db_entry al_dbe; }; diff --git a/tests/core/.gitignore b/tests/core/.gitignore index 0510fa40..93e52dc6 100644 --- a/tests/core/.gitignore +++ b/tests/core/.gitignore @@ -8,8 +8,8 @@ containers/database containers/index containers/queue filter -tags/album tags/artist +tags/album tags/genre tags/library tags/track diff --git a/tests/core/tags/Sconscript b/tests/core/tags/Sconscript index b754e016..e8c76e55 100644 --- a/tests/core/tags/Sconscript +++ b/tests/core/tags/Sconscript @@ -11,8 +11,8 @@ def TagTest(name): return run env.UsePackage("taglib_c") -res += [ TagTest("album") ] res += [ TagTest("artist") ] +res += [ TagTest("album") ] res += [ TagTest("genre") ] res += [ TagTest("library") ]