From be982b9cd5a8704cc80c4b28fba3a7a76aae3616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 13 Apr 2010 15:23:03 +0000 Subject: [PATCH] * Only restore the previous playing position when there is a file that is currently playing; this fixes the the problem I mentioned in a comment in bug #3855. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36224 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/mediaplayer/MainWin.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp index 39dc8f89be..5ac596b8eb 100644 --- a/src/apps/mediaplayer/MainWin.cpp +++ b/src/apps/mediaplayer/MainWin.cpp @@ -908,7 +908,10 @@ MainWin::OpenPlaylist(const BMessage* playlistArchive) playlistLocker.Unlock(); - playlistArchive->FindInt64("position", (int64*)&fInitialSeekPosition); + if (currentIndex != -1) { + // Restore the current play position only if we have something to play + playlistArchive->FindInt64("position", (int64*)&fInitialSeekPosition); + } if (IsHidden()) Show(); @@ -1051,6 +1054,7 @@ MainWin::GetQuitMessage(BMessage* message) message->AddRect("window frame", Frame()); message->AddBool("audio only", !fHasVideo); message->AddInt64("creation time", fCreationTime); + if (!fHasVideo && fHasAudio) { // store playlist, current index and position if this is audio BMessage playlistArchive; @@ -1061,6 +1065,7 @@ MainWin::GetQuitMessage(BMessage* message) if (!fPlaylist) return; + BAutolock playlistLocker(fPlaylist); if (fPlaylist->Archive(&playlistArchive) != B_OK || playlistArchive.AddInt32("index", @@ -1189,6 +1194,7 @@ MainWin::_PlaylistItemOpened(const PlaylistItemRef& item, status_t result) fHasVideo = fController->VideoTrackCount() != 0; fHasAudio = fController->AudioTrackCount() != 0; SetTitle(item->Name().String()); + fController->SetTimePosition(fInitialSeekPosition); fInitialSeekPosition = 0; }