From 07ae40623737a6060b8a925fd2e6bba76780dcd4 Mon Sep 17 00:00:00 2001 From: Jason Sams Date: Thu, 27 Aug 2009 20:23:34 -0700 Subject: Implement async data/subData. Implement TriangleMeshBuilder in SimpleMesh which replaces TriangleMesh. Update Film to use new builder. --- libs/rs/rsObjectBase.cpp | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) (limited to 'libs/rs/rsObjectBase.cpp') diff --git a/libs/rs/rsObjectBase.cpp b/libs/rs/rsObjectBase.cpp index 07bbc1e76ca8..7e7afabe0550 100644 --- a/libs/rs/rsObjectBase.cpp +++ b/libs/rs/rsObjectBase.cpp @@ -21,28 +21,51 @@ using namespace android::renderscript; ObjectBase::ObjectBase() { - mRefCount = 0; + mUserRefCount = 0; + mSysRefCount = 0; mName = NULL; } ObjectBase::~ObjectBase() { //LOGV("~ObjectBase %p ref %i", this, mRefCount); - rsAssert(!mRefCount); + rsAssert(!mUserRefCount); + rsAssert(!mSysRefCount); } -void ObjectBase::incRef() const +void ObjectBase::incUserRef() const { - mRefCount ++; + mUserRefCount ++; //LOGV("ObjectBase %p inc ref %i", this, mRefCount); } -void ObjectBase::decRef() const +void ObjectBase::incSysRef() const { - rsAssert(mRefCount > 0); - mRefCount --; + mSysRefCount ++; + //LOGV("ObjectBase %p inc ref %i", this, mRefCount); +} + +void ObjectBase::decUserRef() const +{ + rsAssert(mUserRefCount > 0); + mUserRefCount --; + //LOGV("ObjectBase %p dec ref %i", this, mRefCount); + if (!(mSysRefCount | mUserRefCount)) { + if (mName) { + LOGV("Deleting RS object %p, name %s", this, mName); + } else { + LOGV("Deleting RS object %p, no name", this); + } + delete this; + } +} + +void ObjectBase::decSysRef() const +{ + rsAssert(mSysRefCount > 0); + mSysRefCount --; //LOGV("ObjectBase %p dec ref %i", this, mRefCount); - if (!mRefCount) { + if (!(mSysRefCount | mUserRefCount)) { if (mName) { LOGV("Deleting RS object %p, name %s", this, mName); } else { -- cgit v1.2.3-59-g8ed1b