AcquireReference() now returns the previous ref count.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42079 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -17,7 +17,7 @@ public:
|
|||||||
BReferenceable();
|
BReferenceable();
|
||||||
virtual ~BReferenceable();
|
virtual ~BReferenceable();
|
||||||
|
|
||||||
void AcquireReference();
|
int32 AcquireReference();
|
||||||
bool ReleaseReference();
|
bool ReleaseReference();
|
||||||
// returns true after last
|
// returns true after last
|
||||||
|
|
||||||
|
|||||||
@@ -28,13 +28,16 @@ BReferenceable::~BReferenceable()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
int32
|
||||||
BReferenceable::AcquireReference()
|
BReferenceable::AcquireReference()
|
||||||
{
|
{
|
||||||
if (atomic_add(&fReferenceCount, 1) == 0)
|
int32 previousReferenceCount = atomic_add(&fReferenceCount, 1);
|
||||||
|
if (previousReferenceCount == 0)
|
||||||
FirstReferenceAcquired();
|
FirstReferenceAcquired();
|
||||||
|
|
||||||
TRACE("%p: acquire %ld\n", this, fReferenceCount);
|
TRACE("%p: acquire %ld\n", this, fReferenceCount);
|
||||||
|
|
||||||
|
return previousReferenceCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user