media_server: watch for media services status

* It's now calling CleanupDormantInfos when
  media_addon_server die.
This commit is contained in:
Dario Casalinuovo
2015-07-24 12:19:34 +02:00
parent b43b20d38f
commit 733709121a
+19
View File
@@ -43,6 +43,7 @@ char __dont_remove_copyright_from_binary[] = "Copyright (c) 2002, 2003 "
#include <Roster.h>
#include <MediaDefs.h>
#include <MediaFormats.h>
#include <MediaRoster.h>
#include <Messenger.h>
#include <syscalls.h>
@@ -112,9 +113,16 @@ ServerApp::ServerApp()
fControlThread = spawn_thread(_ControlThread, "media_server control", 105,
this);
resume_thread(fControlThread);
BMediaRoster* roster = BMediaRoster::Roster();
if (roster->StartWatching(BMessenger(this, this),
B_MEDIA_SERVER_QUIT) != B_OK) {
TRACE("ServerApp: can't watch for B_MEDIA_SERVER_QUIT");
}
}
ServerApp::~ServerApp()
{
TRACE("ServerApp::~ServerApp()\n");
@@ -127,6 +135,12 @@ ServerApp::~ServerApp()
delete gAppManager;
delete gNodeManager;
delete gMediaFilesManager;
BMediaRoster* roster = BMediaRoster::CurrentRoster();
if (roster->StopWatching(BMessenger(this, this),
B_MEDIA_SERVER_QUIT) != B_OK) {
TRACE("ServerApp: can't unwatch for B_MEDIA_SERVER_QUIT");
}
}
@@ -929,6 +943,11 @@ ServerApp::MessageReceived(BMessage* msg)
case MEDIA_SERVER_ADD_SYSTEM_BEEP_EVENT:
gMediaFilesManager->HandleAddSystemBeepEvent(msg);
break;
case B_MEDIA_SERVER_QUIT:
gNodeManager->CleanupDormantFlavorInfos();
break;
default:
BApplication::MessageReceived(msg);
printf("\nmedia_server: unknown message received:\n");