summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/CameraSource.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-08-24 19:50:36 -0700
committerJames Dong <jdong@google.com>2011-08-24 19:50:36 -0700
commit9197441e59be323e2f6f0c6506f7248eb6a944b2 (patch)
tree254c9d5d6510e2c25c6879af324555b26a7769d1 /media/libstagefright/CameraSource.cpp
parent3281e721c785304613c44853fc506b43cfea343c (diff)
downloadframeworks_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-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",