summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorZhijun He <zhijunhe@google.com>2014-01-27 19:37:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-01-27 19:37:03 +0000
commitad1763b4ae3c60eb11182d2fd4c5a79f15275a52 (patch)
tree7ade2fa12dea22f346b336bed60d20faee633f69 /services
parente24c62ed878bffead16831391458ba2816600fb2 (diff)
parent491e341211b4772c75f719158f6b397e1c40497d (diff)
downloadframeworks_av-ad1763b4ae3c60eb11182d2fd4c5a79f15275a52.zip
frameworks_av-ad1763b4ae3c60eb11182d2fd4c5a79f15275a52.tar.gz
frameworks_av-ad1763b4ae3c60eb11182d2fd4c5a79f15275a52.tar.bz2
Merge "Camera3: Flush device before ZSL reprocess"
Diffstat (limited to 'services')
-rw-r--r--services/camera/libcameraservice/api1/client2/ZslProcessor3.cpp9
-rw-r--r--services/camera/libcameraservice/device3/Camera3Device.cpp9
2 files changed, 17 insertions, 1 deletions
diff --git a/services/camera/libcameraservice/api1/client2/ZslProcessor3.cpp b/services/camera/libcameraservice/api1/client2/ZslProcessor3.cpp
index 776ebe2..e17d05d 100644
--- a/services/camera/libcameraservice/api1/client2/ZslProcessor3.cpp
+++ b/services/camera/libcameraservice/api1/client2/ZslProcessor3.cpp
@@ -273,6 +273,15 @@ status_t ZslProcessor3::pushToReprocess(int32_t requestId) {
return INVALID_OPERATION;
}
+ // Flush device to clear out all in-flight requests pending in HAL.
+ res = client->getCameraDevice()->flush();
+ if (res != OK) {
+ ALOGE("%s: Camera %d: Failed to flush device: "
+ "%s (%d)",
+ __FUNCTION__, client->getCameraId(), strerror(-res), res);
+ return res;
+ }
+
// Update JPEG settings
{
SharedParameters::Lock l(client->getParameters());
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index edb77aa..3c73e17 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -1124,7 +1124,14 @@ status_t Camera3Device::flush() {
Mutex::Autolock l(mLock);
mRequestThread->clear();
- return mHal3Device->ops->flush(mHal3Device);
+ status_t res;
+ if (mHal3Device->common.version >= CAMERA_DEVICE_API_VERSION_3_1) {
+ res = mHal3Device->ops->flush(mHal3Device);
+ } else {
+ res = waitUntilDrained();
+ }
+
+ return res;
}
/**