diff --git a/core/playlist.c b/core/playlist.c index ff7568bf..13029abf 100644 --- a/core/playlist.c +++ b/core/playlist.c @@ -4,46 +4,18 @@ #include #include -static struct queue playlist_q; static enum playlist_t playlist_cur; static const gchar *playlist_names[5] = { "Favorites", "Hidden", "Unplayed", "Most Played", "Least Played" }; -static void __playlist_fill_dynamic(enum playlist_t plist) -{ - unsigned int count = 0, average = 0; - struct db_entry *track, *next; - - if (plist == PL_MOST_PLAYED || plist == PL_LEAST_PLAYED) - average = track_db_average_plays(); - - db_for_each(track, next, track_db_get()) { - count = TRACK(track)->tr_count; - if (plist == PL_UNPLAYED && count == 0) - queue_add(&playlist_q, TRACK(track)); - else if (plist == PL_MOST_PLAYED && count > average) - queue_add(&playlist_q, TRACK(track)); - else if (plist == PL_LEAST_PLAYED && count <= average && count > 0) - queue_add(&playlist_q, TRACK(track)); - } -} - - void playlist_init(struct queue_ops *ops) { - queue_init(&playlist_q, Q_ENABLED | Q_REPEAT, ops); - queue_sort(&playlist_q, COMPARE_ARTIST, true); - queue_sort(&playlist_q, COMPARE_YEAR, false); - queue_sort(&playlist_q, COMPARE_TRACK, false); - queue_set_flag(&playlist_q, Q_NO_SORT); - pl_system_init(ops); } void playlist_deinit() { - queue_deinit(&playlist_q); pl_system_deinit(); } @@ -77,19 +49,9 @@ bool playlist_has(enum playlist_t plist, struct track *track) void playlist_select(enum playlist_t plist) { playlist_cur = plist; - - if (playlist_get_queue(plist) != &playlist_q) - return; - - queue_clear(&playlist_q); - queue_set_flag(&playlist_q, Q_ADD_FRONT); - __playlist_fill_dynamic(plist); - queue_unset_flag(&playlist_q, Q_ADD_FRONT); - queue_resort(&playlist_q); } struct queue *playlist_get_queue(enum playlist_t plist) { - struct queue *ret = pl_system.pl_get_queue(playlist_names[plist]); - return ret ? ret : &playlist_q; + return pl_system.pl_get_queue(playlist_names[plist]); } diff --git a/tests/core/playlist.c b/tests/core/playlist.c index 02a7cea1..2a17f149 100644 --- a/tests/core/playlist.c +++ b/tests/core/playlist.c @@ -114,63 +114,6 @@ static void test_remove() test_equal(queue_size(q), 0); } -static void test_dynamic() -{ - struct db_entry *dbe, *next; - unsigned int i, average = 0; - //struct track *track; - struct queue *q; - - /* Set play count to (track_number - 1) (average = 6) */ - db_for_each(dbe, next, track_db_get()) { - for (i = 1; i < TRACK(dbe)->tr_track; i++) - track_played(TRACK(dbe)); - average += TRACK(dbe)->tr_count; - } - average /= track_db_get()->db_size; - - /* Only one unplayed track (tr_track == 1) */ - playlist_update(PL_UNPLAYED); - while (idle_run_task()) {} - q = playlist_get_queue(PL_UNPLAYED); - test_equal(playlist_add(PL_UNPLAYED, track_get(1)), (bool)false); - test_equal(playlist_remove(PL_UNPLAYED, queue_at(q, 0)), (bool)true); - test_equal(playlist_add(PL_UNPLAYED, track_get(0)), (bool)true); - test_equal(queue_size(q), 1); - test_equal(queue_at(q, 0)->tr_track, 1); - test_equal(queue_at(q, 0)->tr_count, 0); - - /* Six tracks have tr_count <= average && tr_count > 0 */ - playlist_update(PL_LEAST_PLAYED); - while (idle_run_task()) {} - q = playlist_get_queue(PL_LEAST_PLAYED); - playlist_select(PL_LEAST_PLAYED); - test_equal(playlist_add(PL_LEAST_PLAYED, track_get(0)), (bool)false); - test_equal(queue_size(q), 6); - /*for (i = 0; i < queue_size(q); i++) { - track = queue_at(q, i); - test_loop_equal(track->tr_track, i + 2, i); - test_loop_equal(track->tr_count, i + 1, i); - test_loop_equal(playlist_remove(PL_LEAST_PLAYED, track), - (bool)false, i); - } test_loop_passed();*/ - - /* Six tracks have tr_count > average */ - playlist_update(PL_MOST_PLAYED); - while (idle_run_task()) {} - q = playlist_get_queue(PL_MOST_PLAYED); - playlist_select(PL_MOST_PLAYED); - test_equal(playlist_add(PL_MOST_PLAYED, track_get(0)), (bool)false); - test_equal(queue_size(q), 6); - /*for (i = 0; i < queue_size(q); i++) { - track = queue_at(q, i); - test_loop_equal(track->tr_track, i + 8, i); - test_loop_equal(track->tr_count, i + 7, i); - test_loop_equal(playlist_remove(PL_MOST_PLAYED, track), - (bool)false, i); - } test_loop_passed();*/ -} - static void test_deinit() { struct queue *q = playlist_get_queue(PL_UNPLAYED); @@ -187,6 +130,5 @@ DECLARE_UNIT_TESTS( UNIT_TEST("Playlist Initialization", test_init), UNIT_TEST("Playlist Add Track", test_add), UNIT_TEST("Playlist Remove Track", test_remove), - UNIT_TEST("Playlist Dynamic Generation", test_dynamic), UNIT_TEST("Playlist Deinit", test_deinit), );