OSDN Git Service

When Camera is launched by media recording framework, stagefright controls the stop...
authorJames Dong <jdong@google.com>
Thu, 25 Aug 2011 02:50:36 +0000 (19:50 -0700)
committerJames Dong <jdong@google.com>
Thu, 25 Aug 2011 02:50:36 +0000 (19:50 -0700)
Change-Id: Ic79a60dad0f617a845211d3fbe146c1648a71da3
related-to-bug: 5205804

media/libstagefright/CameraSource.cpp

index ac3565f..256f3ba 100755 (executable)
@@ -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",