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 <Roster.h>
#include <MediaDefs.h> #include <MediaDefs.h>
#include <MediaFormats.h> #include <MediaFormats.h>
#include <MediaRoster.h>
#include <Messenger.h> #include <Messenger.h>
#include <syscalls.h> #include <syscalls.h>
@@ -112,9 +113,16 @@ ServerApp::ServerApp()
fControlThread = spawn_thread(_ControlThread, "media_server control", 105, fControlThread = spawn_thread(_ControlThread, "media_server control", 105,
this); this);
resume_thread(fControlThread); 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() ServerApp::~ServerApp()
{ {
TRACE("ServerApp::~ServerApp()\n"); TRACE("ServerApp::~ServerApp()\n");
@@ -127,6 +135,12 @@ ServerApp::~ServerApp()
delete gAppManager; delete gAppManager;
delete gNodeManager; delete gNodeManager;
delete gMediaFilesManager; 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: case MEDIA_SERVER_ADD_SYSTEM_BEEP_EVENT:
gMediaFilesManager->HandleAddSystemBeepEvent(msg); gMediaFilesManager->HandleAddSystemBeepEvent(msg);
break; break;
case B_MEDIA_SERVER_QUIT:
gNodeManager->CleanupDormantFlavorInfos();
break;
default: default:
BApplication::MessageReceived(msg); BApplication::MessageReceived(msg);
printf("\nmedia_server: unknown message received:\n"); printf("\nmedia_server: unknown message received:\n");