diff --git a/src/servers/media/media_server.cpp b/src/servers/media/media_server.cpp index b7fdfc7c8a..c023bfc8cc 100644 --- a/src/servers/media/media_server.cpp +++ b/src/servers/media/media_server.cpp @@ -43,6 +43,7 @@ char __dont_remove_copyright_from_binary[] = "Copyright (c) 2002, 2003 " #include #include #include +#include #include #include @@ -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");