BMediaRoster::Roster Use BAutolock
This commit is contained in:
@@ -44,6 +44,7 @@ char __dont_remove_copyright_from_binary[] = "Copyright (c) 2002-2006 Marcus "
|
|||||||
|
|
||||||
#include <new>
|
#include <new>
|
||||||
|
|
||||||
|
#include <Autolock.h>
|
||||||
#include <BufferConsumer.h>
|
#include <BufferConsumer.h>
|
||||||
#include <BufferProducer.h>
|
#include <BufferProducer.h>
|
||||||
#include <Locker.h>
|
#include <Locker.h>
|
||||||
@@ -83,6 +84,7 @@ struct RosterNotification {
|
|||||||
|
|
||||||
static bool sServerIsUp = false;
|
static bool sServerIsUp = false;
|
||||||
static List<RosterNotification> sNotificationList;
|
static List<RosterNotification> sNotificationList;
|
||||||
|
static BLocker sInitLocker("BMediaRoster::Roster locker");
|
||||||
|
|
||||||
} // namespace media
|
} // namespace media
|
||||||
} // namespace BPrivate
|
} // namespace BPrivate
|
||||||
@@ -2188,10 +2190,14 @@ BMediaRoster::UnregisterNode(BMediaNode* node)
|
|||||||
/*static*/ BMediaRoster*
|
/*static*/ BMediaRoster*
|
||||||
BMediaRoster::Roster(status_t* out_error)
|
BMediaRoster::Roster(status_t* out_error)
|
||||||
{
|
{
|
||||||
static BLocker locker("BMediaRoster::Roster locker");
|
BAutolock lock(sInitLocker);
|
||||||
locker.Lock();
|
|
||||||
|
if (!lock.IsLocked())
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (out_error)
|
if (out_error)
|
||||||
*out_error = B_OK;
|
*out_error = B_OK;
|
||||||
|
|
||||||
if (sDefaultInstance == NULL) {
|
if (sDefaultInstance == NULL) {
|
||||||
status_t err;
|
status_t err;
|
||||||
sDefaultInstance = new (std::nothrow) BMediaRosterEx(&err);
|
sDefaultInstance = new (std::nothrow) BMediaRosterEx(&err);
|
||||||
@@ -2207,7 +2213,6 @@ BMediaRoster::Roster(status_t* out_error)
|
|||||||
*out_error = err;
|
*out_error = err;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
locker.Unlock();
|
|
||||||
return sDefaultInstance;
|
return sDefaultInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user