# HG changeset patch # User reimar # Date 1098293429 0 # Node ID c29255ab4712928705deaf5c1a8cf9505eecdc40 # Parent 3fff37ed4fe7a3461b99b405af8576b21772e632 fix -loop in combination with -shuffle diff -r 3fff37ed4fe7 -r c29255ab4712 playtree.c --- a/playtree.c Wed Oct 20 16:38:33 2004 +0000 +++ b/playtree.c Wed Oct 20 17:30:29 2004 +0000 @@ -585,6 +585,14 @@ if(pt == NULL) { // No next // Must we loop? + if (iter->mode == PLAY_TREE_ITER_RND) { + if (iter->root->loop == 0) + return PLAY_TREE_ITER_END; + play_tree_unset_flag(iter->root, PLAY_TREE_RND_PLAYED, -1); + if (iter->root->loop > 0) iter->root->loop--; + // try again + return play_tree_iter_step(iter, 0, with_nodes); + } else if(iter->tree->parent && iter->tree->parent->loop != 0 && ((d > 0 && iter->loop != 0) || ( d < 0 && (iter->loop < 0 || iter->loop < iter->tree->parent->loop) ) ) ) { if(d > 0) { // Go back to the first one for(pt = iter->tree ; pt->prev != NULL; pt = pt->prev)