Commit 6d3488c8 authored by Max Kellermann's avatar Max Kellermann

song: added song_in_database()

Some functions assume that a song is not in the database when it is a remote song. Based on that, they decide whether they are responsible for freeing the song struct. Add a special function which checks whether a song is in the database (currently equal to song_is_file()).
parent 4a7ad5b6
......@@ -181,11 +181,9 @@ static int getNextId(void)
void finishPlaylist(void)
{
int i;
for (i = 0; i < playlist.length; i++) {
if (!song_is_file(playlist.songs[i])) {
for (i = 0; i < playlist.length; i++)
if (!song_in_database(playlist.songs[i]))
song_free(playlist.songs[i]);
}
}
playlist.length = 0;
......@@ -208,9 +206,9 @@ void clearPlaylist(void)
stopPlaylist();
for (i = 0; i < playlist.length; i++) {
if (!song_is_file(playlist.songs[i])) {
if (!song_in_database(playlist.songs[i]))
song_free(playlist.songs[i]);
}
playlist.idToPosition[playlist.positionToId[i]] = -1;
playlist.songs[i] = NULL;
}
......@@ -678,9 +676,8 @@ enum playlist_result deleteFromPlaylist(int song)
|| playlist.order[playlist.current] == song))
clearPlayerQueue();
if (!song_is_file(playlist.songs[song])) {
if (!song_in_database(playlist.songs[song]))
song_free(playlist.songs[song]);
}
playlist.idToPosition[playlist.positionToId[song]] = -1;
......@@ -858,6 +855,8 @@ static void syncCurrentPlayerDecodeMetadata(void)
if (!song_is_file(song) &&
0 == strcmp(song_get_url(song, path_max_tmp), songPlayer->url) &&
!tag_equal(song->tag, songPlayer->tag)) {
assert(!song_in_database(song));
if (song->tag)
tag_free(song->tag);
song->tag = tag_dup(songPlayer->tag);
......
......@@ -68,9 +68,15 @@ char *
song_get_url(const struct song *song, char *path_max_tmp);
static inline bool
song_is_file(const struct song *song)
song_in_database(const struct song *song)
{
return song->parent != NULL;
}
static inline bool
song_is_file(const struct song *song)
{
return song_in_database(song);
}
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment