core/playlist: Merge __playlist_fill() with playlist_static()
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
b7a4bb3872
commit
5844402ee3
|
@ -41,53 +41,34 @@ static unsigned int __playlist_find_average()
|
|||
return total / track_db_get()->db_size;
|
||||
}
|
||||
|
||||
static void __playlist_fill(enum playlist_t plist, struct set *set)
|
||||
{
|
||||
struct set_iter it;
|
||||
|
||||
queue_clear(&playlist_q);
|
||||
playlist_cur = plist;
|
||||
|
||||
if (!set)
|
||||
return;
|
||||
|
||||
queue_set_flag(&playlist_q, Q_ADD_FRONT);
|
||||
set_for_each(set, &it)
|
||||
queue_add(&playlist_q, track_get(it.it_val));
|
||||
queue_unset_flag(&playlist_q, Q_ADD_FRONT);
|
||||
|
||||
queue_resort(&playlist_q);
|
||||
}
|
||||
|
||||
static void __playlist_fill_static(enum playlist_t plist)
|
||||
{
|
||||
struct index_entry *ent = __playlist_lookup(plist);
|
||||
__playlist_fill(plist, ent ? &ent->ie_set : NULL);
|
||||
struct set_iter it;
|
||||
|
||||
if (ent) {
|
||||
set_for_each(&ent->ie_set, &it)
|
||||
queue_add(&playlist_q, track_get(it.it_val));
|
||||
}
|
||||
}
|
||||
|
||||
static void __playlist_fill_dynamic(enum playlist_t plist)
|
||||
{
|
||||
unsigned int count = 0, average = 0;
|
||||
struct db_entry *track, *next;
|
||||
struct set set;
|
||||
|
||||
if (plist == PL_MOST_PLAYED || plist == PL_LEAST_PLAYED)
|
||||
average = __playlist_find_average();
|
||||
|
||||
set_init(&set);
|
||||
|
||||
db_for_each(track, next, track_db_get()) {
|
||||
count = TRACK(track)->tr_count;
|
||||
if (plist == PL_UNPLAYED && count == 0)
|
||||
set_insert(&set, track->dbe_index);
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
else if (plist == PL_MOST_PLAYED && count > average)
|
||||
set_insert(&set, track->dbe_index);
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
else if (plist == PL_LEAST_PLAYED && count < average && count > 0)
|
||||
set_insert(&set, track->dbe_index);
|
||||
queue_add(&playlist_q, TRACK(track));
|
||||
}
|
||||
|
||||
__playlist_fill(plist, &set);
|
||||
set_deinit(&set);
|
||||
}
|
||||
|
||||
|
||||
|
@ -159,10 +140,16 @@ bool playlist_has(enum playlist_t plist, struct track *track)
|
|||
|
||||
void playlist_select(enum playlist_t plist)
|
||||
{
|
||||
queue_clear(&playlist_q);
|
||||
queue_set_flag(&playlist_q, Q_ADD_FRONT);
|
||||
if (__playlist_is_static(plist))
|
||||
__playlist_fill_static(plist);
|
||||
else if (__playlist_is_dynamic(plist))
|
||||
else
|
||||
__playlist_fill_dynamic(plist);
|
||||
queue_unset_flag(&playlist_q, Q_ADD_FRONT);
|
||||
|
||||
playlist_cur = plist;
|
||||
queue_resort(&playlist_q);
|
||||
}
|
||||
|
||||
struct queue *playlist_get_queue()
|
||||
|
|
Loading…
Reference in New Issue