From d15321ff907a1203836c9f5ecedd977fe1d9720a Mon Sep 17 00:00:00 2001 From: Dario Casalinuovo Date: Fri, 28 Aug 2015 17:25:17 +0200 Subject: [PATCH] BMediaRoster::Roster Use BAutolock --- src/kits/media/MediaRoster.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/kits/media/MediaRoster.cpp b/src/kits/media/MediaRoster.cpp index 6799b01d7a..4268720846 100644 --- a/src/kits/media/MediaRoster.cpp +++ b/src/kits/media/MediaRoster.cpp @@ -44,6 +44,7 @@ char __dont_remove_copyright_from_binary[] = "Copyright (c) 2002-2006 Marcus " #include +#include #include #include #include @@ -83,6 +84,7 @@ struct RosterNotification { static bool sServerIsUp = false; static List sNotificationList; +static BLocker sInitLocker("BMediaRoster::Roster locker"); } // namespace media } // namespace BPrivate @@ -2188,10 +2190,14 @@ BMediaRoster::UnregisterNode(BMediaNode* node) /*static*/ BMediaRoster* BMediaRoster::Roster(status_t* out_error) { - static BLocker locker("BMediaRoster::Roster locker"); - locker.Lock(); + BAutolock lock(sInitLocker); + + if (!lock.IsLocked()) + return NULL; + if (out_error) *out_error = B_OK; + if (sDefaultInstance == NULL) { status_t err; sDefaultInstance = new (std::nothrow) BMediaRosterEx(&err); @@ -2207,7 +2213,6 @@ BMediaRoster::Roster(status_t* out_error) *out_error = err; } } - locker.Unlock(); return sDefaultInstance; }