diff options
author | Igor Murashkin <iam@google.com> | 2013-03-27 11:07:06 -0700 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-03-27 11:23:54 -0700 |
commit | e3e18d93d6b519145b3aa8e921a4d6fe1d67cfa8 (patch) | |
tree | 03dac0ab03bb12639fb15e5232886937b2b2e896 /camera | |
parent | 2247dd0dc60096d1b5a91ccadb5539f0b100c88f (diff) | |
download | frameworks_av-e3e18d93d6b519145b3aa8e921a4d6fe1d67cfa8.zip frameworks_av-e3e18d93d6b519145b3aa8e921a4d6fe1d67cfa8.tar.gz frameworks_av-e3e18d93d6b519145b3aa8e921a4d6fe1d67cfa8.tar.bz2 |
ProCamera: Fix memory leak in consumeFrameMetadata
Bug: 8402301
Change-Id: I975990185f45bb8552712271b9ac457af08a170c
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(); |