From 65b547f60b2299c8a078a538d4a4506f6711f54c Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Tue, 26 Jul 2016 15:53:47 -0400 Subject: [PATCH] core/tags/album: Add pointer to genre tag Albums tend to have a single genre for all tracks, so it makes more sense for an album to point to genre information. Signed-off-by: Anna Schumaker --- core/tags/album.c | 1 + core/tags/track.c | 4 ++++ include/core/tags/album.h | 1 + tests/core/tags/track.c | 2 ++ 4 files changed, 8 insertions(+) diff --git a/core/tags/album.c b/core/tags/album.c index 7aedeb07..1b08f65f 100644 --- a/core/tags/album.c +++ b/core/tags/album.c @@ -171,6 +171,7 @@ static struct album *__album_alloc(gchar *name, unsigned int year) album->al_name = name; album->al_tokens = g_str_tokenize_and_fold(name, NULL, &album->al_alts); album->al_artist = NULL; + album->al_genre = NULL; if (!album_artwork_exists(album)) idle_schedule(IDLE_ASYNC, IDLE_FUNC(__album_fetch_artwork), album); diff --git a/core/tags/track.c b/core/tags/track.c index d85ad668..0df70e3b 100644 --- a/core/tags/track.c +++ b/core/tags/track.c @@ -72,6 +72,8 @@ struct db_entry *track_alloc(const gchar *key) if (track->tr_album->al_artist == NULL) track->tr_album->al_artist = track->tr_artist; + if (track->tr_album->al_genre == NULL) + track->tr_album->al_genre = track->tr_genre; unplayed_count++; track->tr_count = 0; @@ -140,6 +142,8 @@ static struct db_entry *track_read(struct file *file) if (track->tr_album->al_artist == NULL) track->tr_album->al_artist = track->tr_artist; + if (track->tr_album->al_genre == NULL) + track->tr_album->al_genre = track->tr_genre; track->tr_title = file_readl(file); track->tr_tokens = g_str_tokenize_and_fold(track->tr_title, NULL, diff --git a/include/core/tags/album.h b/include/core/tags/album.h index f41d6d4d..7ac8ae0d 100644 --- a/include/core/tags/album.h +++ b/include/core/tags/album.h @@ -23,6 +23,7 @@ struct album { gchar **al_tokens; /* This album's tokenized strings. */ gchar **al_alts; /* This album's alternate ascii tokens. */ struct artist *al_artist; + struct genre *al_genre; struct db_entry al_dbe; }; diff --git a/tests/core/tags/track.c b/tests/core/tags/track.c index e1c9d675..b9fc5bb5 100644 --- a/tests/core/tags/track.c +++ b/tests/core/tags/track.c @@ -21,6 +21,8 @@ static void test_verify_tags(struct track *track) test_equal(track->tr_album->al_year, 1998); test_equal(track->tr_artist->ar_name, "Koji Kondo"); test_equal(track->tr_genre->ge_name, "Game"); + test_equal((void *)track->tr_album->al_artist, (void *)track->tr_artist); + test_equal((void *)track->tr_album->al_genre, (void *)track->tr_genre); test_equal(track->tr_library->li_path, "tests/Music"); }