db/DatabasePlaylist: pass Database reference around
Reduce global variable usage, move to frontend code.
This commit is contained in:
@@ -21,7 +21,6 @@
|
||||
#include "DatabasePlaylist.hxx"
|
||||
#include "Selection.hxx"
|
||||
#include "PlaylistFile.hxx"
|
||||
#include "DatabaseGlue.hxx"
|
||||
#include "DatabasePlugin.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
@@ -37,17 +36,14 @@ AddSong(const char *playlist_path_utf8,
|
||||
}
|
||||
|
||||
bool
|
||||
search_add_to_playlist(const char *uri, const char *playlist_path_utf8,
|
||||
search_add_to_playlist(const Database &db,
|
||||
const char *uri, const char *playlist_path_utf8,
|
||||
const SongFilter *filter,
|
||||
Error &error)
|
||||
{
|
||||
const Database *db = GetDatabase(error);
|
||||
if (db == nullptr)
|
||||
return false;
|
||||
|
||||
const DatabaseSelection selection(uri, true, filter);
|
||||
|
||||
using namespace std::placeholders;
|
||||
const auto f = std::bind(AddSong, playlist_path_utf8, _1, _2);
|
||||
return db->Visit(selection, f, error);
|
||||
return db.Visit(selection, f, error);
|
||||
}
|
||||
|
@@ -22,12 +22,14 @@
|
||||
|
||||
#include "Compiler.h"
|
||||
|
||||
class Database;
|
||||
class SongFilter;
|
||||
class Error;
|
||||
|
||||
gcc_nonnull(1,2)
|
||||
gcc_nonnull(2,3)
|
||||
bool
|
||||
search_add_to_playlist(const char *uri, const char *path_utf8,
|
||||
search_add_to_playlist(const Database &db,
|
||||
const char *uri, const char *path_utf8,
|
||||
const SongFilter *filter,
|
||||
Error &error);
|
||||
|
||||
|
@@ -19,23 +19,18 @@
|
||||
|
||||
#include "config.h"
|
||||
#include "DatabaseSong.hxx"
|
||||
#include "DatabaseGlue.hxx"
|
||||
#include "DatabasePlugin.hxx"
|
||||
#include "DetachedSong.hxx"
|
||||
#include "Mapper.hxx"
|
||||
|
||||
DetachedSong *
|
||||
DatabaseDetachSong(const char *uri, Error &error)
|
||||
DatabaseDetachSong(const Database &db, const char *uri, Error &error)
|
||||
{
|
||||
const Database *db = GetDatabase(error);
|
||||
if (db == nullptr)
|
||||
return nullptr;
|
||||
|
||||
const LightSong *tmp = db->GetSong(uri, error);
|
||||
const LightSong *tmp = db.GetSong(uri, error);
|
||||
if (tmp == nullptr)
|
||||
return nullptr;
|
||||
|
||||
DetachedSong *song = new DetachedSong(map_song_detach(*tmp));
|
||||
db->ReturnSong(tmp);
|
||||
db.ReturnSong(tmp);
|
||||
return song;
|
||||
}
|
||||
|
@@ -22,6 +22,7 @@
|
||||
|
||||
#include "Compiler.h"
|
||||
|
||||
class Database;
|
||||
class DetachedSong;
|
||||
class Error;
|
||||
|
||||
@@ -33,6 +34,6 @@ class Error;
|
||||
*/
|
||||
gcc_malloc gcc_nonnull_all
|
||||
DetachedSong *
|
||||
DatabaseDetachSong(const char *uri, Error &error);
|
||||
DatabaseDetachSong(const Database &db, const char *uri, Error &error);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user