From 4323461bc650dad0cdf5d8891d524cc29b61dea6 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Wed, 23 Mar 2016 11:33:22 -0400 Subject: [PATCH] core/queue: Adjust random track selection Dividing queue size by 3 seems to give a better distribution of tracks, but only for a large set of tracks (such as the entire collection). let's skip the division if the queue only has a small number of tracks. Signed-off-by: Anna Schumaker --- core/queue.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/queue.c b/core/queue.c index 82d3a54a..a493b512 100644 --- a/core/queue.c +++ b/core/queue.c @@ -185,7 +185,8 @@ struct track *queue_next(struct queue *queue) if (size == 1) _q_iter_set(&queue->q_tracks, &queue->q_cur, 0); else if (queue_has_flag(queue, Q_RANDOM)) { - pos = queue->q_cur.it_pos + random_range(1, size / 2); + pos = random_range(1, (size < 15) ? size : size / 3); + pos += queue->q_cur.it_pos; _q_iter_set(&queue->q_tracks, &queue->q_cur, pos % size); } else { _q_iter_next(&queue->q_cur);