BaseObj.cpp revision dfcfabfccad8a8f2f42f83081638c7e5c9bfb4b9
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