* Refactored storing the playlist archive in the quit message.

* Added looping all windows on quit and store the current playlist if
   applicable.

Fixes #5061.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35253 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stephan Aßmus
2010-01-23 10:52:36 +00:00
parent fa8101b56e
commit 312ca935ab
3 changed files with 49 additions and 20 deletions
+27 -20
View File
@@ -737,26 +737,7 @@ bool
MainWin::QuitRequested()
{
BMessage message(M_PLAYER_QUIT);
message.AddPointer("instance", this);
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;
BAutolock controllerLocker(fController);
playlistArchive.AddInt64("position", fController->TimePosition());
controllerLocker.Unlock();
BAutolock playlistLocker(fPlaylist);
if (fPlaylist->Archive(&playlistArchive) != B_OK
|| playlistArchive.AddInt32("index",
fPlaylist->CurrentItemIndex()) != B_OK
|| message.AddMessage("playlist", &playlistArchive) != B_OK) {
fprintf(stderr, "Failed to store current playlist.\n");
}
}
GetQuitMessage(&message);
be_app->PostMessage(&message);
return true;
}
@@ -927,6 +908,32 @@ MainWin::VideoFormatChange(int width, int height, int widthAspect,
}
void
MainWin::GetQuitMessage(BMessage* message)
{
message->AddPointer("instance", this);
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;
BAutolock controllerLocker(fController);
playlistArchive.AddInt64("position", fController->TimePosition());
controllerLocker.Unlock();
BAutolock playlistLocker(fPlaylist);
if (fPlaylist->Archive(&playlistArchive) != B_OK
|| playlistArchive.AddInt32("index",
fPlaylist->CurrentItemIndex()) != B_OK
|| message->AddMessage("playlist", &playlistArchive) != B_OK) {
fprintf(stderr, "Failed to store current playlist.\n");
}
}
}
// #pragma mark -