From c2e4fe983da690907316dac9cd1838fc713dec1b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 9 Aug 2012 21:20:24 +0200 Subject: Song: add function song_equals() decoder_is_current_song() now recognizes different instances of the same physical song. --- src/Song.cxx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/Song.cxx') diff --git a/src/Song.cxx b/src/Song.cxx index 006ef8aaa..3dfdc0c74 100644 --- a/src/Song.cxx +++ b/src/Song.cxx @@ -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) { -- cgit v1.2.3