1*e1eccf28SAndroid Build Coastguard Worker /* 2*e1eccf28SAndroid Build Coastguard Worker * Copyright (C) 2012 The Android Open Source Project 3*e1eccf28SAndroid Build Coastguard Worker * 4*e1eccf28SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*e1eccf28SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*e1eccf28SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*e1eccf28SAndroid Build Coastguard Worker * 8*e1eccf28SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*e1eccf28SAndroid Build Coastguard Worker * 10*e1eccf28SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*e1eccf28SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*e1eccf28SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*e1eccf28SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*e1eccf28SAndroid Build Coastguard Worker * limitations under the License. 15*e1eccf28SAndroid Build Coastguard Worker */ 16*e1eccf28SAndroid Build Coastguard Worker 17*e1eccf28SAndroid Build Coastguard Worker #include "RenderScript.h" 18*e1eccf28SAndroid Build Coastguard Worker #include "rsCppInternal.h" 19*e1eccf28SAndroid Build Coastguard Worker 20*e1eccf28SAndroid Build Coastguard Worker using android::RSC::BaseObj; 21*e1eccf28SAndroid Build Coastguard Worker getID() const22*e1eccf28SAndroid Build Coastguard Workervoid * BaseObj::getID() const { 23*e1eccf28SAndroid Build Coastguard Worker if (mID == nullptr) { 24*e1eccf28SAndroid Build Coastguard Worker ALOGE("Internal error: Object id 0."); 25*e1eccf28SAndroid Build Coastguard Worker } 26*e1eccf28SAndroid Build Coastguard Worker return mID; 27*e1eccf28SAndroid Build Coastguard Worker } 28*e1eccf28SAndroid Build Coastguard Worker getObjID(const sp<const BaseObj> & o)29*e1eccf28SAndroid Build Coastguard Workervoid * BaseObj::getObjID(const sp<const BaseObj>& o) { 30*e1eccf28SAndroid Build Coastguard Worker return o == nullptr ? nullptr : o->getID(); 31*e1eccf28SAndroid Build Coastguard Worker } 32*e1eccf28SAndroid Build Coastguard Worker 33*e1eccf28SAndroid Build Coastguard Worker BaseObj(void * id,sp<RS> rs)34*e1eccf28SAndroid Build Coastguard WorkerBaseObj::BaseObj(void *id, sp<RS> rs) { 35*e1eccf28SAndroid Build Coastguard Worker mRS = rs.get(); 36*e1eccf28SAndroid Build Coastguard Worker mID = id; 37*e1eccf28SAndroid Build Coastguard Worker } 38*e1eccf28SAndroid Build Coastguard Worker checkValid()39*e1eccf28SAndroid Build Coastguard Workervoid BaseObj::checkValid() { 40*e1eccf28SAndroid Build Coastguard Worker if (mID == 0) { 41*e1eccf28SAndroid Build Coastguard Worker ALOGE("Invalid object."); 42*e1eccf28SAndroid Build Coastguard Worker } 43*e1eccf28SAndroid Build Coastguard Worker } 44*e1eccf28SAndroid Build Coastguard Worker ~BaseObj()45*e1eccf28SAndroid Build Coastguard WorkerBaseObj::~BaseObj() { 46*e1eccf28SAndroid Build Coastguard Worker if (mRS && mRS->getContext()) { 47*e1eccf28SAndroid Build Coastguard Worker RS::dispatch->ObjDestroy(mRS->getContext(), mID); 48*e1eccf28SAndroid Build Coastguard Worker } 49*e1eccf28SAndroid Build Coastguard Worker mRS = nullptr; 50*e1eccf28SAndroid Build Coastguard Worker mID = nullptr; 51*e1eccf28SAndroid Build Coastguard Worker } 52*e1eccf28SAndroid Build Coastguard Worker updateFromNative()53*e1eccf28SAndroid Build Coastguard Workervoid BaseObj::updateFromNative() { 54*e1eccf28SAndroid Build Coastguard Worker const char *name = nullptr; 55*e1eccf28SAndroid Build Coastguard Worker RS::dispatch->GetName(mRS->getContext(), mID, &name); 56*e1eccf28SAndroid Build Coastguard Worker mName = name; 57*e1eccf28SAndroid Build Coastguard Worker } 58*e1eccf28SAndroid Build Coastguard Worker equals(const sp<const BaseObj> & obj)59*e1eccf28SAndroid Build Coastguard Workerbool BaseObj::equals(const sp<const BaseObj>& obj) { 60*e1eccf28SAndroid Build Coastguard Worker // Early-out check to see if both BaseObjs are actually the same. 61*e1eccf28SAndroid Build Coastguard Worker if (this == obj.get()) 62*e1eccf28SAndroid Build Coastguard Worker return true; 63*e1eccf28SAndroid Build Coastguard Worker return mID == obj->mID; 64*e1eccf28SAndroid Build Coastguard Worker } 65