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 20dfcfabfccad8a8f2f42f83081638c7e5c9bfb4b9Chih-Hung Hsiehusing android::RSC::BaseObj; 2169cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 22221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid * BaseObj::getID() const { 2344bef6fba6244292b751387f3d6c31cca96c28adChris Wailes if (mID == nullptr) { 24221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Internal error: Object id 0."); 25221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 26221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID; 27221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 28221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 2945768e1663714702c0c2b7adf14fdbd80dae71f5Chih-Hung Hsiehvoid * BaseObj::getObjID(const sp<const BaseObj>& o) { 3044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes return o == nullptr ? nullptr : o->getID(); 31b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams} 32b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 33b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 3484bf2b877024aaa154b66e0f2338d54bdabd855aTim MurrayBaseObj::BaseObj(void *id, sp<RS> rs) { 353560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray mRS = rs.get(); 36221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mID = id; 37221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 38221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 39221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::checkValid() { 40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (mID == 0) { 41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Invalid object."); 42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 44221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 45221a4b17cda03916a0599628fcbb5f48605a0e5aJason SamsBaseObj::~BaseObj() { 463560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray if (mRS && mRS->getContext()) { 473560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray RS::dispatch->ObjDestroy(mRS->getContext(), mID); 483560907fa9b1624eefbd6db5e9c3ccc25ab23b92Tim Murray } 4944bef6fba6244292b751387f3d6c31cca96c28adChris Wailes mRS = nullptr; 5044bef6fba6244292b751387f3d6c31cca96c28adChris Wailes mID = nullptr; 51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::updateFromNative() { 5444bef6fba6244292b751387f3d6c31cca96c28adChris Wailes const char *name = nullptr; 554a92d1268983edaf329f73c8a5b8860cdbb11596Tim Murray RS::dispatch->GetName(mRS->getContext(), mID, &name); 56221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mName = name; 57221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 58221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 5945768e1663714702c0c2b7adf14fdbd80dae71f5Chih-Hung Hsiehbool BaseObj::equals(const sp<const BaseObj>& obj) { 60cf067b8c4d1e53bc4768fbad239851c579717f2cMiao Wang // Early-out check to see if both BaseObjs are actually the same. 6189daad6bae798779e57f252e9da4fe4e62337124Tim Murray if (this == obj.get()) 62221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return true; 63221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID == obj->mID; 64221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 65