diff options
author | Igor Murashkin <iam@google.com> | 2013-03-27 18:24:37 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-03-27 18:24:38 +0000 |
commit | bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5 (patch) | |
tree | 245db06e6631e54475adba627ddca262947a2f6d /camera | |
parent | 4b6ed7f255b696d1555ce71633ea08c961ec51dd (diff) | |
parent | 65d7986ceac6e35426749ac7e05bbd2a38949db4 (diff) | |
download | frameworks_av-bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5.zip frameworks_av-bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5.tar.gz frameworks_av-bdeaccfdfc26f9257d2d8036381cb5e8982fa6f5.tar.bz2 |
Merge "ProCamera: Fix memory leak in consumeFrameMetadata" into jb-mr2-dev
Diffstat (limited to 'camera')
-rw-r--r-- | camera/ProCamera.cpp | 6 | ||||
-rw-r--r-- | camera/tests/ProCameraTests.cpp | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/camera/ProCamera.cpp b/camera/ProCamera.cpp index 396b009..fec5461 100644 --- a/camera/ProCamera.cpp +++ b/camera/ProCamera.cpp @@ -103,7 +103,7 @@ void ProCamera::onResultReceived(int32_t frameId, camera_metadata* result) { { Mutex::Autolock al(mWaitMutex); mMetadataReady = true; - mLatestMetadata = tmp; + mLatestMetadata = tmp; // make copy mWaitCondition.broadcast(); } @@ -312,8 +312,6 @@ void ProCamera::onFrameAvailable(int streamId) { sp<ProCameraListener> listener = mListener; StreamInfo& stream = getStreamInfo(streamId); - CpuConsumer::LockedBuffer buf; - if (listener.get() != NULL) { listener->onFrameAvailable(streamId, stream.cpuConsumer); } @@ -421,7 +419,7 @@ CameraMetadata ProCamera::consumeFrameMetadata() { // Destructive: Subsequent calls return empty metadatas CameraMetadata tmp = mLatestMetadata; - mLatestMetadata.release(); + mLatestMetadata.clear(); return tmp; } diff --git a/camera/tests/ProCameraTests.cpp b/camera/tests/ProCameraTests.cpp index ecc0854..87f817a 100644 --- a/camera/tests/ProCameraTests.cpp +++ b/camera/tests/ProCameraTests.cpp @@ -1021,6 +1021,9 @@ TEST_F(ProCameraTest, WaitForDualStreamBuffer) { // Consume two frames simultaneously. Unsynchronized by timestamps. for (int i = 0; i < REQUEST_COUNT; ++i) { + // Exhaust event queue so it doesn't keep growing + while (mListener->ReadEvent() != UNKNOWN); + // Get the metadata EXPECT_OK(mCamera->waitForFrameMetadata()); CameraMetadata meta = mCamera->consumeFrameMetadata(); |