BaseObj.cpp revision 69cccdf0659a193d6a75420ec745421fb5c436e6
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 17f1e6d229636c35ad311995853a9cab52c723bed7Jason Sams#define LOG_TAG "libRS_cpp" 18221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 19221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include <rs.h> 20221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 21221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "RenderScript.h" 22221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams#include "BaseObj.h" 23221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 2469cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsusing namespace android; 2569cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsusing namespace renderscriptCpp; 2669cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams 27221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid * BaseObj::getID() const { 28221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (mID == NULL) { 29221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Internal error: Object id 0."); 30221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 31221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID; 32221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 33221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 3469cccdf0659a193d6a75420ec745421fb5c436e6Jason Samsvoid * BaseObj::getObjID(sp<const BaseObj> o) { 3569cccdf0659a193d6a75420ec745421fb5c436e6Jason Sams return o.get() == NULL ? NULL : o->getID(); 36b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams} 37b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 38b2e3dc51dcbbe52b5e72d9c6a16de7000de70edfJason Sams 39221a4b17cda03916a0599628fcbb5f48605a0e5aJason SamsBaseObj::BaseObj(void *id, RenderScript *rs) { 40221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mRS = rs; 41221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mID = id; 42221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 43221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 44221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::checkValid() { 45221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (mID == 0) { 46221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams ALOGE("Invalid object."); 47221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams } 48221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 49221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 50221a4b17cda03916a0599628fcbb5f48605a0e5aJason SamsBaseObj::~BaseObj() { 51221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams rsObjDestroy(mRS->mContext, mID); 52221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mRS = NULL; 53221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mID = NULL; 54221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 55221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 56221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsvoid BaseObj::updateFromNative() { 57221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams const char *name = NULL; 58221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams rsaGetName(mRS, mID, &name); 59221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams mName = name; 60221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 61221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 62221a4b17cda03916a0599628fcbb5f48605a0e5aJason Samsbool BaseObj::equals(const BaseObj *obj) { 63221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams // Early-out check to see if both BaseObjs are actually the same 64221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams if (this == obj) 65221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return true; 66221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams return mID == obj->mID; 67221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams} 68221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 69221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 70221a4b17cda03916a0599628fcbb5f48605a0e5aJason Sams 71