Song: add function song_equals()

decoder_is_current_song() now recognizes different instances of the
same physical song.
This commit is contained in:
Max Kellermann
2012-08-09 21:20:24 +02:00
parent 81e898375b
commit c2e4fe983d
3 changed files with 37 additions and 1 deletions

View File

@@ -84,6 +84,33 @@ song_free(struct song *song)
g_free(song);
}
gcc_pure
static inline bool
directory_equals(const struct directory &a, const struct directory &b)
{
return strcmp(a.path, b.path) == 0;
}
gcc_pure
static inline bool
directory_is_same(const struct directory *a, const struct directory *b)
{
return a == b ||
(a != nullptr && b != nullptr &&
directory_equals(*a, *b));
}
bool
song_equals(const struct song *a, const struct song *b)
{
assert(a != nullptr);
assert(b != nullptr);
return directory_is_same(a->parent, b->parent) &&
strcmp(a->uri, b->uri) == 0;
}
char *
song_get_uri(const struct song *song)
{