diff --git a/libsaria/library/list.cpp b/libsaria/library/list.cpp index e5e943e8..3d856d92 100644 --- a/libsaria/library/list.cpp +++ b/libsaria/library/list.cpp @@ -1,8 +1,11 @@ +#include +#include #include using namespace std; #include +#include #include #include "library.h" @@ -76,6 +79,21 @@ static void insert_list(list *tag_list) play_list.push_back(&(*it)); } +static void random_next() +{ + unsigned int index = rand() % play_list.size(); + cur_track = play_list.begin(); + for (unsigned int i = 0; i < index; i++) + cur_track++; +} + +static void sequential_next() +{ + cur_track++; + if (cur_track == play_list.end()) + cur_track = play_list.begin(); +} + namespace libsaria { @@ -121,9 +139,10 @@ namespace libsaria void library::next() { - cur_track++; - if (cur_track == play_list.end()) - cur_track = play_list.begin(); + if (libsaria::prefs::get_bool("random") == true) + random_next(); + else + sequential_next(); libsaria::audio::load((*cur_track)->get_filepath()); } diff --git a/libsaria/libsaria.cpp b/libsaria/libsaria.cpp index 3afea91b..8e40b83a 100644 --- a/libsaria/libsaria.cpp +++ b/libsaria/libsaria.cpp @@ -1,4 +1,6 @@ +#include + #include #include #include @@ -11,6 +13,7 @@ namespace libsaria void init(int argc, char **argv) { + srand( time(NULL) ); println("Initializing libsaria"); audio::init(argc, argv); print("saria dir: ");