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 <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-05-03 07:54:54 -04:00
parent 97c8f80393
commit 0d9b7baff6
6 changed files with 16 additions and 7 deletions

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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));

View File

@ -15,11 +15,13 @@
#define OCARINA_CORE_TAGS_ALBUM_H
#include <core/containers/database.h>
#include <core/tags/artist.h>
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;
};

View File

@ -8,8 +8,8 @@ containers/database
containers/index
containers/queue
filter
tags/album
tags/artist
tags/album
tags/genre
tags/library
tags/track

View File

@ -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") ]