summaryrefslogtreecommitdiffstats
path: root/services/camera/libcameraservice/Camera2Client.cpp
diff options
context:
space:
mode:
authorEino-Ville Talvala <etalvala@google.com>2013-06-04 16:34:35 -0700
committerEino-Ville Talvala <etalvala@google.com>2013-06-04 17:23:08 -0700
commit254446a80cb13d5beb606bfc3e60a17473869478 (patch)
tree104a205908ae2633db26fceef230f94238448135 /services/camera/libcameraservice/Camera2Client.cpp
parent8f908c0c211f8051f339bc85b01a6450f0dfd7d0 (diff)
downloadframeworks_av-254446a80cb13d5beb606bfc3e60a17473869478.zip
frameworks_av-254446a80cb13d5beb606bfc3e60a17473869478.tar.gz
frameworks_av-254446a80cb13d5beb606bfc3e60a17473869478.tar.bz2
Camera2/3: Move recording frame processing to its own thread.
Due to new deadlock opportunities from HAL3 integration, recording frame processing needs to move out of the new frame handler into its own thread in StreamingProcessor. Bug: 9282913 Change-Id: I8d2926f2de9d0d395eef3c328c65caebbdbd2827
Diffstat (limited to 'services/camera/libcameraservice/Camera2Client.cpp')
-rw-r--r--services/camera/libcameraservice/Camera2Client.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/Camera2Client.cpp b/services/camera/libcameraservice/Camera2Client.cpp
index 5fdec34..081fdec 100644
--- a/services/camera/libcameraservice/Camera2Client.cpp
+++ b/services/camera/libcameraservice/Camera2Client.cpp
@@ -102,6 +102,9 @@ status_t Camera2Client::initialize(camera_module_t *module)
String8 threadName;
mStreamingProcessor = new StreamingProcessor(this);
+ threadName = String8::format("C2-%d-StreamProc",
+ mCameraId);
+ mStreamingProcessor->run(threadName.string());
mFrameProcessor = new FrameProcessor(mDevice, this);
threadName = String8::format("C2-%d-FrameProc",
@@ -411,6 +414,7 @@ void Camera2Client::disconnect() {
mCallbackProcessor->deleteStream();
mZslProcessor->deleteStream();
+ mStreamingProcessor->requestExit();
mFrameProcessor->requestExit();
mCaptureSequencer->requestExit();
mJpegProcessor->requestExit();
@@ -419,6 +423,7 @@ void Camera2Client::disconnect() {
ALOGV("Camera %d: Waiting for threads", mCameraId);
+ mStreamingProcessor->join();
mFrameProcessor->join();
mCaptureSequencer->join();
mJpegProcessor->join();