aboutsummaryrefslogtreecommitdiff
path: root/camera/QCamera2/HAL3/QCamera3Channel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'camera/QCamera2/HAL3/QCamera3Channel.cpp')
-rw-r--r--camera/QCamera2/HAL3/QCamera3Channel.cpp48
1 files changed, 27 insertions, 21 deletions
diff --git a/camera/QCamera2/HAL3/QCamera3Channel.cpp b/camera/QCamera2/HAL3/QCamera3Channel.cpp
index e1f6b63..c13cade 100644
--- a/camera/QCamera2/HAL3/QCamera3Channel.cpp
+++ b/camera/QCamera2/HAL3/QCamera3Channel.cpp
@@ -4036,31 +4036,35 @@ QCamera3Stream * QCamera3ReprocessChannel::getSrcStreamBySrcHandle(uint32_t srcH
int32_t QCamera3ReprocessChannel::unmapOfflineBuffers(bool all)
{
int rc = NO_ERROR;
- if (!mOfflineBuffers.empty()) {
- QCamera3Stream *stream = NULL;
- List<OfflineBuffer>::iterator it = mOfflineBuffers.begin();
- for (; it != mOfflineBuffers.end(); it++) {
- stream = (*it).stream;
- if (NULL != stream) {
- rc = stream->unmapBuf((*it).type,
- (*it).index,
- -1);
- if (NO_ERROR != rc) {
- LOGE("Error during offline buffer unmap %d",
- rc);
+ {
+ Mutex::Autolock lock(mOfflineBuffersLock);
+ if (!mOfflineBuffers.empty()) {
+ QCamera3Stream *stream = NULL;
+ List<OfflineBuffer>::iterator it = mOfflineBuffers.begin();
+ for (; it != mOfflineBuffers.end(); it++) {
+ stream = (*it).stream;
+ if (NULL != stream) {
+ rc = stream->unmapBuf((*it).type,
+ (*it).index,
+ -1);
+ if (NO_ERROR != rc) {
+ LOGE("Error during offline buffer unmap %d",
+ rc);
+ }
+ LOGD("Unmapped buffer with index %d", (*it).index);
}
- LOGD("Unmapped buffer with index %d", (*it).index);
- }
- if (!all) {
- mOfflineBuffers.erase(it);
- break;
- }
- }
- if (all) {
- mOfflineBuffers.clear();
+ if (!all) {
+ mOfflineBuffers.erase(it);
+ break;
+ }
+ }
+ if (all) {
+ mOfflineBuffers.clear();
+ }
}
}
+ Mutex::Autolock lock(mOfflineMetaBuffersLock);
if (!mOfflineMetaBuffers.empty()) {
QCamera3Stream *stream = NULL;
List<OfflineBuffer>::iterator it = mOfflineMetaBuffers.begin();
@@ -4450,6 +4454,7 @@ int32_t QCamera3ReprocessChannel::overrideFwkMetadata(
mappedBuffer.index = buf_idx;
mappedBuffer.stream = pStream;
mappedBuffer.type = CAM_MAPPING_BUF_TYPE_OFFLINE_INPUT_BUF;
+ Mutex::Autolock lock(mOfflineBuffersLock);
mOfflineBuffers.push_back(mappedBuffer);
mOfflineBuffersIndex = (int32_t)buf_idx;
LOGD("Mapped buffer with index %d", mOfflineBuffersIndex);
@@ -4469,6 +4474,7 @@ int32_t QCamera3ReprocessChannel::overrideFwkMetadata(
mappedBuffer.index = meta_buf_idx;
mappedBuffer.stream = pStream;
mappedBuffer.type = CAM_MAPPING_BUF_TYPE_OFFLINE_META_BUF;
+ Mutex::Autolock lock(mOfflineMetaBuffersLock);
mOfflineMetaBuffers.push_back(mappedBuffer);
mOfflineMetaIndex = (int32_t)meta_buf_idx;
LOGD("Mapped meta buffer with index %d", mOfflineMetaIndex);