From a99d0dd7b7a920540401d591a54a5776afb5ec48 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Fri, 10 Jun 2011 01:55:12 +0000 Subject: [PATCH] AcquireReference() now returns the previous ref count. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42079 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/shared/Referenceable.h | 2 +- src/kits/support/Referenceable.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/headers/private/shared/Referenceable.h b/headers/private/shared/Referenceable.h index 264eaea6ea..f020d7e163 100644 --- a/headers/private/shared/Referenceable.h +++ b/headers/private/shared/Referenceable.h @@ -17,7 +17,7 @@ public: BReferenceable(); virtual ~BReferenceable(); - void AcquireReference(); + int32 AcquireReference(); bool ReleaseReference(); // returns true after last diff --git a/src/kits/support/Referenceable.cpp b/src/kits/support/Referenceable.cpp index 3df724635e..39906255ae 100644 --- a/src/kits/support/Referenceable.cpp +++ b/src/kits/support/Referenceable.cpp @@ -28,13 +28,16 @@ BReferenceable::~BReferenceable() } -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; }