QCamera2: Replace Fence::wait with sync_wait.
Bug: 18643376
Change-Id: Ib7002ab8820652b7ceb4653c034b624e743b6b8c
diff --git a/camera/QCamera2/Android.mk b/camera/QCamera2/Android.mk
index 3f78cdf..8428e4a 100644
--- a/camera/QCamera2/Android.mk
+++ b/camera/QCamera2/Android.mk
@@ -77,7 +77,7 @@
LOCAL_C_INCLUDES += \
hardware/qcom/display/$(TARGET_BOARD_PLATFORM)/libqdutils
-LOCAL_SHARED_LIBRARIES := libcamera_client liblog libhardware libutils libcutils libdl
+LOCAL_SHARED_LIBRARIES := libcamera_client liblog libhardware libutils libcutils libdl libsync
LOCAL_SHARED_LIBRARIES += libmmcamera_interface libmmjpeg_interface libui libcamera_metadata
LOCAL_SHARED_LIBRARIES += libqdMetaData
diff --git a/camera/QCamera2/HAL3/QCamera3HWI.cpp b/camera/QCamera2/HAL3/QCamera3HWI.cpp
index 14ec8da..226e9af 100644
--- a/camera/QCamera2/HAL3/QCamera3HWI.cpp
+++ b/camera/QCamera2/HAL3/QCamera3HWI.cpp
@@ -42,7 +42,7 @@
#include <utils/Log.h>
#include <utils/Errors.h>
#include <utils/Trace.h>
-#include <ui/Fence.h>
+#include <sync/sync.h>
#include <gralloc_priv.h>
#include "util/QCameraFlash.h"
#include "QCamera3HWI.h"
@@ -68,6 +68,7 @@
#define MAX_RAW_STREAMS 1
#define MAX_STALLING_STREAMS 1
#define MAX_PROCESSED_STREAMS 3
+#define TIMEOUT_NEVER -1
cam_capability_t *gCamCapability[MM_CAMERA_MAX_NUM_SENSORS];
const camera_metadata_t *gStaticMetadata[MM_CAMERA_MAX_NUM_SENSORS];
@@ -1955,10 +1956,11 @@
notify_msg.message.shutter.frame_number = frame_number;
notify_msg.message.shutter.timestamp = capture_time;
- sp<Fence> releaseFence = new Fence(i->input_buffer->release_fence);
- int32_t rc = releaseFence->wait(Fence::TIMEOUT_NEVER);
- if (rc != OK) {
- ALOGE("%s: input buffer fence wait failed %d", __func__, rc);
+ if (i->input_buffer->release_fence != -1) {
+ int32_t rc = sync_wait(i->input_buffer->release_fence, TIMEOUT_NEVER);
+ if (rc != OK) {
+ ALOGE("%s: input buffer sync wait failed %d", __func__, rc);
+ }
}
for (List<PendingBufferInfo>::iterator k =
@@ -2256,7 +2258,6 @@
for (size_t i = 0; i < request->num_output_buffers; i++) {
const camera3_stream_buffer_t& output = request->output_buffers[i];
QCamera3Channel *channel = (QCamera3Channel *)output.stream->priv;
- sp<Fence> acquireFence = new Fence(output.acquire_fence);
if (output.stream->format == HAL_PIXEL_FORMAT_BLOB) {
//Call function to store local copy of jpeg data for encode params.
@@ -2264,11 +2265,13 @@
snapshotStreamId = channel->getStreamID(channel->getStreamTypeMask());
}
- rc = acquireFence->wait(Fence::TIMEOUT_NEVER);
- if (rc != OK) {
- ALOGE("%s: fence wait failed %d", __func__, rc);
- pthread_mutex_unlock(&mMutex);
- return rc;
+ if (output.acquire_fence != -1) {
+ rc = sync_wait(output.acquire_fence, TIMEOUT_NEVER);
+ if (rc != OK) {
+ ALOGE("%s: sync wait failed %d", __func__, rc);
+ pthread_mutex_unlock(&mMutex);
+ return rc;
+ }
}
streamID.streamID[streamID.num_streams] =
@@ -2293,13 +2296,14 @@
return rc;
}
} else {
- sp<Fence> acquireFence = new Fence(request->input_buffer->acquire_fence);
- rc = acquireFence->wait(Fence::TIMEOUT_NEVER);
- if (rc != OK) {
- ALOGE("%s: input buffer fence wait failed %d", __func__, rc);
- pthread_mutex_unlock(&mMutex);
- return rc;
+ if (request->input_buffer->acquire_fence != -1) {
+ rc = sync_wait(request->input_buffer->acquire_fence, TIMEOUT_NEVER);
+ if (rc != OK) {
+ ALOGE("%s: input buffer sync wait failed %d", __func__, rc);
+ pthread_mutex_unlock(&mMutex);
+ return rc;
+ }
}
}