Author: anevilyak Date: 2011-06-10 03:55:12 +0200 (Fri, 10 Jun 2011) New Revision: 42079 Changeset: https://dev.haiku-os.org/changeset/42079 Modified: haiku/trunk/headers/private/shared/Referenceable.h haiku/trunk/src/kits/support/Referenceable.cpp Log: AcquireReference() now returns the previous ref count. Modified: haiku/trunk/headers/private/shared/Referenceable.h =================================================================== --- haiku/trunk/headers/private/shared/Referenceable.h 2011-06-09 21:01:57 UTC (rev 42078) +++ haiku/trunk/headers/private/shared/Referenceable.h 2011-06-10 01:55:12 UTC (rev 42079) @@ -17,7 +17,7 @@ BReferenceable(); virtual ~BReferenceable(); - void AcquireReference(); + int32 AcquireReference(); bool ReleaseReference(); // returns true after last Modified: haiku/trunk/src/kits/support/Referenceable.cpp =================================================================== --- haiku/trunk/src/kits/support/Referenceable.cpp 2011-06-09 21:01:57 UTC (rev 42078) +++ haiku/trunk/src/kits/support/Referenceable.cpp 2011-06-10 01:55:12 UTC (rev 42079) @@ -28,13 +28,16 @@ } -void +int32 BReferenceable::AcquireReference() { - if (atomic_add(&fReferenceCount, 1) == 0) + int32 previousReferenceCount = atomic_add(&fReferenceCount, 1); + if (previousReferenceCount == 0) FirstReferenceAcquired(); TRACE("%p: acquire %ld\n", this, fReferenceCount); + + return previousReferenceCount; }