- if(tracks.size()>1)
- {
- if(shuffle)
- {
- while(1)
- {
- list<string>::iterator i=tracks.begin();
- advance(i, rand()%tracks.size());
- if(i!=current_track)
- {
- current_track = i;
- break;
- }
- }
- }
- else
- {
- ++current_track;
- if(current_track==tracks.end())
- current_track=tracks.begin();
- }
- signal_track_changed.emit(*current_track);
- }
+ current = playlist->advance(current, 1);
+ signal_track_changed.emit(current);