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

Commit 4ded2289 authored by Igor Murashkin's avatar Igor Murashkin Committed by Android Git Automerger
Browse files

am bdeaccfd: Merge "ProCamera: Fix memory leak in consumeFrameMetadata" into jb-mr2-dev

* commit 'bdeaccfd':
  ProCamera: Fix memory leak in consumeFrameMetadata
parents f4297f59 ac51135d
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -103,7 +103,7 @@ void ProCamera::onResultReceived(int32_t frameId, camera_metadata* result) {
    {
    {
        Mutex::Autolock al(mWaitMutex);
        Mutex::Autolock al(mWaitMutex);
        mMetadataReady = true;
        mMetadataReady = true;
        mLatestMetadata = tmp;
        mLatestMetadata = tmp; // make copy
        mWaitCondition.broadcast();
        mWaitCondition.broadcast();
    }
    }


@@ -312,8 +312,6 @@ void ProCamera::onFrameAvailable(int streamId) {
    sp<ProCameraListener> listener = mListener;
    sp<ProCameraListener> listener = mListener;
    StreamInfo& stream = getStreamInfo(streamId);
    StreamInfo& stream = getStreamInfo(streamId);


    CpuConsumer::LockedBuffer buf;

    if (listener.get() != NULL) {
    if (listener.get() != NULL) {
        listener->onFrameAvailable(streamId, stream.cpuConsumer);
        listener->onFrameAvailable(streamId, stream.cpuConsumer);
    }
    }
@@ -421,7 +419,7 @@ CameraMetadata ProCamera::consumeFrameMetadata() {


    // Destructive: Subsequent calls return empty metadatas
    // Destructive: Subsequent calls return empty metadatas
    CameraMetadata tmp = mLatestMetadata;
    CameraMetadata tmp = mLatestMetadata;
    mLatestMetadata.release();
    mLatestMetadata.clear();


    return tmp;
    return tmp;
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -1021,6 +1021,9 @@ TEST_F(ProCameraTest, WaitForDualStreamBuffer) {
    // Consume two frames simultaneously. Unsynchronized by timestamps.
    // Consume two frames simultaneously. Unsynchronized by timestamps.
    for (int i = 0; i < REQUEST_COUNT; ++i) {
    for (int i = 0; i < REQUEST_COUNT; ++i) {


        // Exhaust event queue so it doesn't keep growing
        while (mListener->ReadEvent() != UNKNOWN);

        // Get the metadata
        // Get the metadata
        EXPECT_OK(mCamera->waitForFrameMetadata());
        EXPECT_OK(mCamera->waitForFrameMetadata());
        CameraMetadata meta = mCamera->consumeFrameMetadata();
        CameraMetadata meta = mCamera->consumeFrameMetadata();