Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dd045bf3 authored by Yin-Chia Yeh's avatar Yin-Chia Yeh
Browse files

Camera NDK: don't explicit delete ACameraMetadata

To fix the warning in RefBase destructor.

Test: NDK CTS tests, and ARCore measure app.
Bug: 112775599
Change-Id: Ia448ac6d7e6c17699c16d287f65fc2826c9d7578
parent c524813b
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@

#include <camera/NdkCameraManager.h>
#include "impl/ACameraManager.h"
#include "impl/ACameraMetadata.h"

using namespace android;

@@ -107,7 +108,14 @@ camera_status_t ACameraManager_getCameraCharacteristics(
                __FUNCTION__, mgr, cameraId, chars);
        return ACAMERA_ERROR_INVALID_PARAMETER;
    }
    return mgr->getCameraCharacteristics(cameraId, chars);
    sp<ACameraMetadata> spChars;
    camera_status_t status = mgr->getCameraCharacteristics(cameraId, &spChars);
    if (status != ACAMERA_OK) {
        return status;
    }
    spChars->incStrong((void*) ACameraManager_getCameraCharacteristics);
    *chars = spChars.get();
    return ACAMERA_OK;
}

EXPORT
+4 −2
Original line number Diff line number Diff line
@@ -57,13 +57,15 @@ ACameraMetadata* ACameraMetadata_copy(const ACameraMetadata* src) {
        ALOGE("%s: src is null!", __FUNCTION__);
        return nullptr;
    }
    return new ACameraMetadata(*src);
    ACameraMetadata* copy = new ACameraMetadata(*src);
    copy->incStrong((void*) ACameraMetadata_copy);
    return copy;
}

EXPORT
void ACameraMetadata_free(ACameraMetadata* metadata) {
    ATRACE_CALL();
    if (metadata != nullptr) {
        delete metadata;
        metadata->decStrong((void*) ACameraMetadata_free);
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ void ACaptureRequest_free(ACaptureRequest* request) {
    if (request == nullptr) {
        return;
    }
    delete request->settings;
    request->settings.clear();
    delete request->targets;
    delete request;
    return;
+3 −3
Original line number Diff line number Diff line
@@ -50,11 +50,11 @@ const char* CameraDevice::kAnwKey = "Anw";
CameraDevice::CameraDevice(
        const char* id,
        ACameraDevice_StateCallbacks* cb,
        std::unique_ptr<ACameraMetadata> chars,
        sp<ACameraMetadata> chars,
        ACameraDevice* wrapper) :
        mCameraId(id),
        mAppCallbacks(*cb),
        mChars(std::move(chars)),
        mChars(chars),
        mServiceCallback(new ServiceCallback(this)),
        mWrapper(wrapper),
        mInError(false),
@@ -436,7 +436,7 @@ CameraDevice::freeACaptureRequest(ACaptureRequest* req) {
    if (req == nullptr) {
        return;
    }
    delete req->settings;
    req->settings.clear();
    delete req->targets;
    delete req;
}
+4 −4
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ struct CameraCaptureFailure : public RefBase, public ACameraCaptureFailure {};
class CameraDevice final : public RefBase {
  public:
    CameraDevice(const char* id, ACameraDevice_StateCallbacks* cb,
                  std::unique_ptr<ACameraMetadata> chars,
                  sp<ACameraMetadata> chars,
                  ACameraDevice* wrapper);
    ~CameraDevice();

@@ -156,7 +156,7 @@ class CameraDevice final : public RefBase {
    mutable Mutex mDeviceLock;
    const String8 mCameraId;                          // Camera ID
    const ACameraDevice_StateCallbacks mAppCallbacks; // Callback to app
    const std::unique_ptr<ACameraMetadata> mChars;    // Camera characteristics
    const sp<ACameraMetadata> mChars;                 // Camera characteristics
    const sp<ServiceCallback> mServiceCallback;
    ACameraDevice* mWrapper;

@@ -294,8 +294,8 @@ class CameraDevice final : public RefBase {
 */
struct ACameraDevice {
    ACameraDevice(const char* id, ACameraDevice_StateCallbacks* cb,
                  std::unique_ptr<ACameraMetadata> chars) :
            mDevice(new CameraDevice(id, cb, std::move(chars), this)) {}
                  sp<ACameraMetadata> chars) :
            mDevice(new CameraDevice(id, cb, chars, this)) {}

    ~ACameraDevice() {};

Loading