SongLoader: move code to LoadFromDatabase()

Avoids the recursion in LoadFile().
This commit is contained in:
Max Kellermann 2015-10-22 09:34:13 +02:00
parent bea5973e0c
commit 1a5b66b78d
2 changed files with 20 additions and 10 deletions

View File

@ -41,6 +41,21 @@ SongLoader::SongLoader(const Client &_client)
#endif
DetachedSong *
SongLoader::LoadFromDatabase(const char *uri, Error &error) const
{
#ifdef ENABLE_DATABASE
if (db != nullptr)
return DatabaseDetachSong(*db, *storage, uri, error);
#else
(void)uri;
#endif
error.Set(playlist_domain, int(PlaylistResult::NO_SUCH_SONG),
"No database");
return nullptr;
}
DetachedSong *
SongLoader::LoadFile(const char *path_utf8, Error &error) const
{
@ -50,7 +65,7 @@ SongLoader::LoadFile(const char *path_utf8, Error &error) const
if (suffix != nullptr)
/* this path was relative to the music
directory - obtain it from the database */
return LoadSong(suffix, error);
return LoadFromDatabase(suffix, error);
}
#endif
@ -99,14 +114,6 @@ SongLoader::LoadSong(const char *uri_utf8, Error &error) const
} else {
/* URI relative to the music directory */
#ifdef ENABLE_DATABASE
if (db != nullptr)
return DatabaseDetachSong(*db, *storage,
uri_utf8, error);
#endif
error.Set(playlist_domain, int(PlaylistResult::NO_SUCH_SONG),
"No database");
return nullptr;
return LoadFromDatabase(uri_utf8, error);
}
}

View File

@ -70,6 +70,9 @@ public:
DetachedSong *LoadSong(const char *uri_utf8, Error &error) const;
private:
gcc_nonnull_all
DetachedSong *LoadFromDatabase(const char *uri, Error &error) const;
gcc_nonnull_all
DetachedSong *LoadFile(const char *path_utf8, Error &error) const;
};