core/playlist: Add playlist_callbacks struct

This will be used to gradually phase out the queue_ops struct over the
next several patches.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-09-17 09:30:11 -04:00
parent 93cb7145e6
commit a87373f335
14 changed files with 32 additions and 13 deletions

View File

@ -28,7 +28,7 @@ void core_init(int *argc, char ***argv, struct core_init_data *init)
idle_init();
settings_init();
tags_init();
playlist_init(init->playlist_ops);
playlist_init(init->playlist_ops, init->playlist_cb);
audio_init(argc, argv, init->audio_ops);
idle_schedule(IDLE_SYNC, core_defragment, NULL);

View File

@ -33,8 +33,9 @@ static struct playlist *__playlist_saved(const gchar *s_type, const gchar *s_id)
return playlist_types[type]->pl_get(id);
}
void playlist_init(struct queue_ops *ops)
void playlist_init(struct queue_ops *ops, struct playlist_callbacks *cb)
{
playlist_generic_set_callbacks(cb);
pl_system_init(ops);
pl_artist_init(ops);
pl_user_init(ops);

View File

@ -4,10 +4,14 @@
#include <core/idle.h>
#include <core/playlists/generic.h>
static struct playlist_callbacks *callbacks = NULL;
void playlist_generic_set_callbacks(struct playlist_callbacks *cb)
{
callbacks = cb;
}
/*
* Generic playlist operations.
*/
void playlist_generic_init(struct playlist *playlist, unsigned int flags,
struct queue_ops *ops)
{

View File

@ -32,8 +32,9 @@ const static gchar *OCARINA_APP = "org.gtk.ocarina-debug";
#endif
struct core_init_data init_data = {
&playlist_ops,
&audio_ops,
.playlist_cb = &playlist_cb,
.playlist_ops = &playlist_ops,
.audio_ops = &audio_ops,
};
static int startup_argc;

View File

@ -75,6 +75,9 @@ struct queue_ops playlist_ops = {
.qop_updated = __gui_playlist_updated,
};
struct playlist_callbacks playlist_cb = {
};
static void __gui_playlist_add_selected_to(struct playlist *playlist)
{

View File

@ -7,6 +7,7 @@
struct core_init_data {
struct playlist_callbacks *playlist_cb;
struct queue_ops *playlist_ops;
struct audio_ops *audio_ops;
#ifdef CONFIG_TESTING

View File

@ -14,7 +14,7 @@
/* Called to initialize the playlist manager. */
void playlist_init(struct queue_ops *);
void playlist_init(struct queue_ops *, struct playlist_callbacks *);
/* Called to deinitialize the playlist manager. */
void playlist_deinit();

View File

@ -5,6 +5,13 @@
#define OCARINA_CORE_PLAYLISTS_GENERIC_H
#include <core/playlists/playlist.h>
struct playlist_callbacks {
};
/* Called to set playlist callbacks. */
void playlist_generic_set_callbacks(struct playlist_callbacks *);
/* Generic playlist init function. */
void playlist_generic_init(struct playlist *, unsigned int, struct queue_ops *);

View File

@ -28,5 +28,7 @@ static inline GtkMenuItem *gui_rc_add_to_other()
/* Playlist operations passed to core_init() */
extern struct queue_ops playlist_ops;
/* Playlist callbacks passed to core_init() */
extern struct playlist_callbacks playlist_cb;
#endif /* OCARINA_GUI_PLAYLIST_H */

View File

@ -44,7 +44,7 @@ int main(int argc, char **argv)
idle_init_sync();
settings_init();
tags_init();
playlist_init(NULL);
playlist_init(NULL, NULL);
while (idle_run_task()) {};
library = library_find("tests/Music");

View File

@ -63,7 +63,7 @@ int main(int argc, char **argv)
idle_init_sync();
settings_init();
tags_init();
playlist_init(NULL);
playlist_init(NULL, NULL);
while (idle_run_task()) {};
/* Add tracks to the collection. */

View File

@ -113,7 +113,7 @@ int main(int argc, char **argv)
idle_init_sync();
settings_init();
tags_init();
playlist_init(NULL);
playlist_init(NULL, NULL);
while (idle_run_task()) {};
g_test_init(&argc, &argv, NULL);

View File

@ -362,7 +362,7 @@ int main(int argc, char **argv)
idle_init_sync();
settings_init();
tags_init();
playlist_init(NULL);
playlist_init(NULL, NULL);
while (idle_run_task()) {};
g_test_init(&argc, &argv, NULL);

View File

@ -77,7 +77,7 @@ int main(int argc, char **argv)
idle_init_sync();
settings_init();
tags_init();
playlist_init(NULL);
playlist_init(NULL, NULL);
while (idle_run_task()) {};
playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony");