DatabaseQueue: pass playlist object
Don't use the global variable "g_playlist".
This commit is contained in:
@@ -92,7 +92,8 @@ handle_match_add(Client *client, int argc, char *argv[], bool fold_case)
|
|||||||
}
|
}
|
||||||
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
return findAddIn(client->player_control, "", &filter, &error)
|
return findAddIn(client->playlist, client->player_control,
|
||||||
|
"", &filter, &error)
|
||||||
? COMMAND_RETURN_OK
|
? COMMAND_RETURN_OK
|
||||||
: print_error(client, error);
|
: print_error(client, error);
|
||||||
}
|
}
|
||||||
|
@@ -27,10 +27,11 @@
|
|||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
AddToQueue(struct player_control *pc, song &song, GError **error_r)
|
AddToQueue(struct playlist &playlist, struct player_control *pc,
|
||||||
|
song &song, GError **error_r)
|
||||||
{
|
{
|
||||||
enum playlist_result result =
|
enum playlist_result result =
|
||||||
playlist_append_song(&g_playlist, pc, &song, NULL);
|
playlist_append_song(&playlist, pc, &song, NULL);
|
||||||
if (result != PLAYLIST_RESULT_SUCCESS) {
|
if (result != PLAYLIST_RESULT_SUCCESS) {
|
||||||
g_set_error(error_r, playlist_quark(), result,
|
g_set_error(error_r, playlist_quark(), result,
|
||||||
"Playlist error");
|
"Playlist error");
|
||||||
@@ -41,7 +42,8 @@ AddToQueue(struct player_control *pc, song &song, GError **error_r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
findAddIn(struct player_control *pc, const char *uri,
|
findAddIn(struct playlist &playlist, struct player_control *pc,
|
||||||
|
const char *uri,
|
||||||
const SongFilter *filter, GError **error_r)
|
const SongFilter *filter, GError **error_r)
|
||||||
{
|
{
|
||||||
const Database *db = GetDatabase(error_r);
|
const Database *db = GetDatabase(error_r);
|
||||||
@@ -51,6 +53,6 @@ findAddIn(struct player_control *pc, const char *uri,
|
|||||||
const DatabaseSelection selection(uri, true, filter);
|
const DatabaseSelection selection(uri, true, filter);
|
||||||
|
|
||||||
using namespace std::placeholders;
|
using namespace std::placeholders;
|
||||||
const auto f = std::bind(AddToQueue, pc, _1, _2);
|
const auto f = std::bind(AddToQueue, playlist, pc, _1, _2);
|
||||||
return db->Visit(selection, f, error_r);
|
return db->Visit(selection, f, error_r);
|
||||||
}
|
}
|
||||||
|
@@ -24,11 +24,13 @@
|
|||||||
#include "gerror.h"
|
#include "gerror.h"
|
||||||
|
|
||||||
class SongFilter;
|
class SongFilter;
|
||||||
|
struct playlist;
|
||||||
struct player_control;
|
struct player_control;
|
||||||
|
|
||||||
gcc_nonnull(1,2)
|
gcc_nonnull(2,3)
|
||||||
bool
|
bool
|
||||||
findAddIn(struct player_control *pc, const char *name,
|
findAddIn(struct playlist &playlist, struct player_control *pc,
|
||||||
|
const char *name,
|
||||||
const SongFilter *filter, GError **error_r);
|
const SongFilter *filter, GError **error_r);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -70,7 +70,8 @@ handle_add(Client *client, G_GNUC_UNUSED int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
return findAddIn(client->player_control, uri, nullptr, &error)
|
return findAddIn(client->playlist, client->player_control,
|
||||||
|
uri, nullptr, &error)
|
||||||
? COMMAND_RETURN_OK
|
? COMMAND_RETURN_OK
|
||||||
: print_error(client, error);
|
: print_error(client, error);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user