diff options
author | James Dong <jdong@google.com> | 2011-08-24 19:50:36 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-08-24 19:50:36 -0700 |
commit | 9197441e59be323e2f6f0c6506f7248eb6a944b2 (patch) | |
tree | 254c9d5d6510e2c25c6879af324555b26a7769d1 /media/libstagefright/CameraSource.cpp | |
parent | 3281e721c785304613c44853fc506b43cfea343c (diff) | |
download | frameworks_av-9197441e59be323e2f6f0c6506f7248eb6a944b2.zip frameworks_av-9197441e59be323e2f6f0c6506f7248eb6a944b2.tar.gz frameworks_av-9197441e59be323e2f6f0c6506f7248eb6a944b2.tar.bz2 |
When Camera is launched by media recording framework, stagefright controls the stop and release.
Change-Id: Ic79a60dad0f617a845211d3fbe146c1648a71da3
related-to-bug: 5205804
Diffstat (limited to 'media/libstagefright/CameraSource.cpp')
-rwxr-xr-x | media/libstagefright/CameraSource.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/media/libstagefright/CameraSource.cpp b/media/libstagefright/CameraSource.cpp index ac3565f..256f3ba 100755 --- a/media/libstagefright/CameraSource.cpp +++ b/media/libstagefright/CameraSource.cpp @@ -635,6 +635,12 @@ status_t CameraSource::stop() { mStarted = false; mFrameAvailableCondition.signal(); + int64_t token; + bool isTokenValid = false; + if (mCamera != 0) { + token = IPCThreadState::self()->clearCallingIdentity(); + isTokenValid = true; + } releaseQueuedFrames(); while (!mFramesBeingEncoded.empty()) { if (NO_ERROR != @@ -645,6 +651,9 @@ status_t CameraSource::stop() { } stopCameraRecording(); releaseCamera(); + if (isTokenValid) { + IPCThreadState::self()->restoreCallingIdentity(token); + } if (mCollectStats) { LOGI("Frames received/encoded/dropped: %d/%d/%d in %lld us", |