summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-08-25 08:12:11 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-08-25 08:12:11 -0700
commit934d865a807e149b97d11b54c674d421b51bbe8a (patch)
tree8c17a110e17439ec92765fc6083655414bbceae4 /media
parent539a735a82fefb1944aa6135df73dfe9f541566c (diff)
parent9197441e59be323e2f6f0c6506f7248eb6a944b2 (diff)
downloadframeworks_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-xmedia/libstagefright/CameraSource.cpp9
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",