actions: locate song: fix crash (hopefully for the last time)

This commit is contained in:
Andrzej Rybczak
2014-10-18 12:30:16 +02:00
parent ea9d5940ff
commit 030d8ccd26
2 changed files with 13 additions and 14 deletions

View File

@@ -1149,13 +1149,11 @@ void TogglePlayingSongCentering::run()
Statusbar::printf("Centering playing song: %1%", Statusbar::printf("Centering playing song: %1%",
Config.autocenter_mode ? "on" : "off" Config.autocenter_mode ? "on" : "off"
); );
if (Config.autocenter_mode if (Config.autocenter_mode && !myPlaylist->main().isFiltered())
&& Status::State::player() != MPD::psUnknown
&& !myPlaylist->main().isFiltered())
{ {
auto sp = Status::State::currentSongPosition(); auto s = myPlaylist->nowPlayingSong();
if (sp >= 0 && size_t(sp) < myPlaylist->main().size()) if (!s.empty())
myPlaylist->main().highlight(Status::State::currentSongPosition()); myPlaylist->main().highlight(s.getPosition());
} }
} }
@@ -1176,25 +1174,24 @@ bool JumpToPlayingSong::canBeRun() const
return ((myScreen == myPlaylist && !myPlaylist->isFiltered()) return ((myScreen == myPlaylist && !myPlaylist->isFiltered())
|| myScreen == myBrowser || myScreen == myBrowser
|| myScreen == myLibrary) || myScreen == myLibrary)
&& Status::State::player() != MPD::psUnknown; && !myPlaylist->nowPlayingSong().empty();
} }
void JumpToPlayingSong::run() void JumpToPlayingSong::run()
{ {
auto s = myPlaylist->nowPlayingSong();
if (myScreen == myPlaylist) if (myScreen == myPlaylist)
{ {
auto sp = Status::State::currentSongPosition(); myPlaylist->main().highlight(s.getPosition());
if (sp >= 0 && size_t(sp) < myPlaylist->main().size())
myPlaylist->main().highlight(Status::State::currentSongPosition());
} }
else if (myScreen == myBrowser) else if (myScreen == myBrowser)
{ {
myBrowser->LocateSong(myPlaylist->nowPlayingSong()); myBrowser->LocateSong(s);
drawHeader(); drawHeader();
} }
else if (myScreen == myLibrary) else if (myScreen == myLibrary)
{ {
myLibrary->LocateSong(myPlaylist->nowPlayingSong()); myLibrary->LocateSong(s);
} }
} }

View File

@@ -249,9 +249,11 @@ MPD::SongList Playlist::getSelectedSongs()
MPD::Song Playlist::nowPlayingSong() MPD::Song Playlist::nowPlayingSong()
{ {
MPD::Song s; MPD::Song s;
if (Status::State::player() != MPD::psStop) if (Status::State::player() != MPD::psUnknown)
withUnfilteredMenu(w, [this, &s]() { withUnfilteredMenu(w, [this, &s]() {
s = w.at(Status::State::currentSongPosition()).value(); auto sp = Status::State::currentSongPosition();
if (sp >= 0 && size_t(sp) < w.size())
s = w.at(sp).value();
}); });
return s; return s;
} }