Playlist: More defensive proramming for when trying to play an empty playlist.

This commit is contained in:
Fabian Schlenz 2019-11-29 05:52:00 +01:00
parent 001e275131
commit dd9e1538c8
3 changed files with 12 additions and 4 deletions

View File

@ -36,7 +36,7 @@ public:
bool set_track(uint8_t track); bool set_track(uint8_t track);
void reset(); void reset();
bool is_empty(); bool is_empty();
String get_current_file(); bool get_current_file(String* dst);
uint32_t get_position(); uint32_t get_position();
void set_position(uint32_t p); void set_position(uint32_t p);
void shuffle(uint8_t random_offset=0); void shuffle(uint8_t random_offset=0);

View File

@ -535,7 +535,10 @@ bool Player::play() {
if (_current_playlist == NULL) return false; if (_current_playlist == NULL) return false;
if (_current_playlist->get_file_count()==0) return false; if (_current_playlist->get_file_count()==0) return false;
_current_playlist->start(); _current_playlist->start();
String file = _current_playlist->get_current_file(); String file;
if (!_current_playlist->get_current_file(&file)) {
return false;
}
uint32_t position = _current_playlist->get_position(); uint32_t position = _current_playlist->get_position();
_state = playing; _state = playing;
_play_file(file, position); _play_file(file, position);

View File

@ -310,8 +310,13 @@ void Playlist::reset() {
_started = false; _started = false;
} }
String Playlist::get_current_file() { bool Playlist::get_current_file(String* dst) {
return _files[_current_track].filename; if (_current_track < _files.size()) {
return false;
} else {
dst->concat(_files[_current_track].filename);
return true;
}
} }
uint32_t Playlist::get_position() { uint32_t Playlist::get_position() {