From 41f5b3fc35319cc8464308914d7ee92f2a6fee5c Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Sat, 28 Mar 2015 16:12:34 +0100 Subject: [PATCH] launch_media_server: correctly handle media services start * Handle when the media_addon_server is not running. * Fix #5621. --- src/kits/media/MediaDefs.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/kits/media/MediaDefs.cpp b/src/kits/media/MediaDefs.cpp index a60facbe74..4298a2a114 100644 --- a/src/kits/media/MediaDefs.cpp +++ b/src/kits/media/MediaDefs.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include "debug.h" @@ -1287,17 +1288,22 @@ shutdown_media_server(bigtime_t timeout, status_t launch_media_server(uint32 flags) { - status_t err; - - if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) + if (BMediaRoster::IsRunning()) return B_ALREADY_RUNNING; + // The media_server crashed if (be_roster->IsRunning(B_MEDIA_ADDON_SERVER_SIGNATURE)) { kill_team(be_roster->TeamFor(B_MEDIA_ADDON_SERVER_SIGNATURE)); snooze(1000000); } - err = be_roster->Launch(B_MEDIA_SERVER_SIGNATURE); + // The media_addon_server crashed + if (be_roster->IsRunning(B_MEDIA_SERVER_SIGNATURE)) { + kill_team(be_roster->TeamFor(B_MEDIA_SERVER_SIGNATURE)); + snooze(1000000); + } + + status_t err = be_roster->Launch(B_MEDIA_SERVER_SIGNATURE); if (err != B_OK) return err;