diff options
| author | James Dong <jdong@google.com> | 2011-08-25 08:12:11 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-25 08:12:11 -0700 |
| commit | 934d865a807e149b97d11b54c674d421b51bbe8a (patch) | |
| tree | 8c17a110e17439ec92765fc6083655414bbceae4 /media | |
| parent | 539a735a82fefb1944aa6135df73dfe9f541566c (diff) | |
| parent | 9197441e59be323e2f6f0c6506f7248eb6a944b2 (diff) | |
| download | frameworks_av-934d865a807e149b97d11b54c674d421b51bbe8a.zip frameworks_av-934d865a807e149b97d11b54c674d421b51bbe8a.tar.gz frameworks_av-934d865a807e149b97d11b54c674d421b51bbe8a.tar.bz2 | |
Merge "When Camera is launched by media recording framework, stagefright controls the stop and release."
Diffstat (limited to 'media')
| -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", |
