BaseObj.cpp revision 3560907fa9b1624eefbd6db5e9c3ccc25ab23b92
1221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams/* 269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams * Copyright (C) 2012 The Android Open Source Project 3221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 4221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * you may not use this file except in compliance with the License. 6221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * You may obtain a copy of the License at 7221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 8221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * http://www.apache.org/licenses/LICENSE-2.0 9221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * 10221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * Unless required by applicable law or agreed to in writing, software 11221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * See the License for the specific language governing permissions and 14221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams * limitations under the License. 15221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams */ 16221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 17221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "RenderScript.h" 18eeaf7142d7e06efb3e0ddc7ef542884ab1d527dcTim Murray#include "rsCppInternal.h" 19221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 2069cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsusing namespace android; 219eb7f4b90120ebe4be74343856e86b46495f72dfTim Murrayusing namespace RSC; 2269cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 23221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid * BaseObj::getID() const { 24221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (mID == NULL) { 25221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Internal error: Object id 0."); 26221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 27221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID; 28221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 29221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 3069cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsvoid * BaseObj::getObjID(sp<const BaseObj> o) { 3189daad6bae798779e57f252e9da4fe4e62337124Tim Murray return o == NULL ? NULL : o->getID(); 32b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams} 33b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 34b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 3584bf2b877024aaa154b66e0f2338d54bdabd855aTim MurrayBaseObj::BaseObj(void *id, sp<RS> rs) { 363560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray mRS = rs.get(); 37221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mID = id; 38221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 39221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::checkValid() { 41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (mID == 0) { 42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Invalid object."); 43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 44221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 45221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 46221a4b17cda03916a0599628fcbb5f48605a0e5aJason SamsBaseObj::~BaseObj() { 473560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray if (mRS && mRS->getContext()) { 483560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray RS::dispatch->ObjDestroy(mRS->getContext(), mID); 493560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray } 50221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mRS = NULL; 51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mID = NULL; 52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 54221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::updateFromNative() { 55221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const char *name = NULL; 564a92d1268983edaf329f73c8a5b8860cdbb11596Tim Murray RS::dispatch->GetName(mRS->getContext(), mID, &name); 57221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mName = name; 58221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 59221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 6089daad6bae798779e57f252e9da4fe4e62337124Tim Murraybool BaseObj::equals(sp<const BaseObj> obj) { 61221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams // Early-out check to see if both BaseObjs are actually the same 6289daad6bae798779e57f252e9da4fe4e62337124Tim Murray if (this == obj.get()) 63221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return true; 64221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID == obj->mID; 65221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 66