diff --git a/core/audio.cpp b/core/audio.cpp index 2b3eb277..c63ed3dd 100644 --- a/core/audio.cpp +++ b/core/audio.cpp @@ -4,6 +4,7 @@ #include extern "C" { #include +#include } #include #include @@ -144,7 +145,7 @@ void audio :: load_track(struct track *track) return; _load_track(track, cur_driver->is_playing()); - queue_add(deck :: get_queue(), cur_track); + queue_add(history_get_queue(), cur_track); } struct track *audio :: current_track() diff --git a/core/deck.cpp b/core/deck.cpp index 0caeb412..65315e3e 100644 --- a/core/deck.cpp +++ b/core/deck.cpp @@ -3,12 +3,12 @@ */ extern "C" { #include +#include } #include #include static std::list queue_deck; -static struct queue recent_queue; static struct file deck_file; @@ -85,7 +85,7 @@ void deck :: init(struct queue_ops *history_ops, struct queue_ops *temp_ops) bool upgraded = false; std::list::iterator it; - queue_init(&recent_queue, Q_ENABLED | Q_REPEAT | Q_NO_SORT | Q_ADD_FRONT, history_ops); + queue_init(history_get_queue(), Q_ENABLED | Q_REPEAT | Q_NO_SORT | Q_ADD_FRONT, history_ops); file_init(&deck_file, "deck", 1); if (!file_open(&deck_file, OPEN_READ)) @@ -219,24 +219,20 @@ struct track *deck :: next() if (!track) track = queue_next(collection_get_queue()); if (track) { - queue_remove_all(&recent_queue, track); - queue_add(&recent_queue, track); - _q_iter_set(&recent_queue.q_tracks, &recent_queue.q_cur, 0); + queue_remove_all(history_get_queue(), track); + queue_add(history_get_queue(), track); + _q_iter_set(&history_get_queue()->q_tracks, + &history_get_queue()->q_cur, 0); } return track; } struct track *deck :: prev() { - return queue_next(&recent_queue); + return queue_next(history_get_queue()); } std::list &deck :: get_queues() { return queue_deck; } - -queue *deck :: get_queue() -{ - return &recent_queue; -} diff --git a/core/history.c b/core/history.c new file mode 100644 index 00000000..cad193d6 --- /dev/null +++ b/core/history.c @@ -0,0 +1,12 @@ +/* + * Copyright 2015 (c) Anna Schumaker. + */ +#include + +static struct queue history_queue; + + +struct queue *history_get_queue() +{ + return &history_queue; +} diff --git a/gui/history.cpp b/gui/history.cpp index 66fca0b9..294c0b66 100644 --- a/gui/history.cpp +++ b/gui/history.cpp @@ -1,6 +1,9 @@ /* * Copyright 2014 (c) Anna Schumaker. */ +extern "C" { +#include +} #include #include #include @@ -11,7 +14,7 @@ private: HistoryLabel *history_label; public: - HistoryTab() : Tab(deck :: get_queue()) + HistoryTab() : Tab(history_get_queue()) { tab_builder->add_from_file(gui :: share_file("QueueLabel.ui")); tab_builder->get_widget_derived("HistoryLabel", history_label); diff --git a/include/core/deck.h b/include/core/deck.h index 0477286a..30fb7d9b 100644 --- a/include/core/deck.h +++ b/include/core/deck.h @@ -110,11 +110,6 @@ namespace deck */ std::list &get_queues(); - /** - * @return The queue of recent tracks. - */ - queue *get_queue(); - }; #endif /* OCARINA_CORE_DECK_H */ diff --git a/include/core/history.h b/include/core/history.h new file mode 100644 index 00000000..4994c6cb --- /dev/null +++ b/include/core/history.h @@ -0,0 +1,12 @@ +/* + * Copyright 2015 (c) Anna Schumaker. + */ +#ifndef OCARINA_CORE_HISTORY_H +#define OCARINA_CORE_HISTORY_H + +#include + +/* Called to access the queue of recent tracks. */ +struct queue *history_get_queue(); + +#endif /* OCARINA_CORE_HISTORY_H */ diff --git a/tests/core/.gitignore b/tests/core/.gitignore index 57d975db..79eb8eee 100644 --- a/tests/core/.gitignore +++ b/tests/core/.gitignore @@ -6,6 +6,7 @@ deck driver file filter +history idle index playlist diff --git a/tests/core/Sconscript b/tests/core/Sconscript index c98c20d0..5e0ccf6f 100644 --- a/tests/core/Sconscript +++ b/tests/core/Sconscript @@ -40,6 +40,7 @@ res += SConscript("tags/Sconscript") res += [ CoreTest("queue") ] res += [ CoreTest("playlist") ] res += [ CoreTest("collection") ] +res += [ CoreTest("history") ] res += [ CoreTest("deck") ] res += [ CoreTest("audio") ] diff --git a/tests/core/deck.cpp b/tests/core/deck.cpp index d659b4df..89af8107 100644 --- a/tests/core/deck.cpp +++ b/tests/core/deck.cpp @@ -5,6 +5,7 @@ extern "C" { #include #include +#include #include #include } @@ -104,7 +105,7 @@ static void test_create_mv_destroy() static void test_next_prev() { std::list::iterator it = deck :: get_queues().begin(); - queue *q = deck :: get_queue(); + queue *q = history_get_queue(); queue *q0 = deck :: get(0); queue *q1 = deck :: get(1); diff --git a/tests/core/history.c b/tests/core/history.c new file mode 100644 index 00000000..1bb97363 --- /dev/null +++ b/tests/core/history.c @@ -0,0 +1,16 @@ +/* + * Copyright 2015 (c) Anna Schumaker. + */ +#include +#include + +static void test_init() +{ + struct queue *q = history_get_queue(); + + test_not_equal((void *)q, NULL); +} + +DECLARE_UNIT_TESTS( + UNIT_TEST("History Initialization", test_init), +);