From 1f9f71e183946b390fff4d20900bc4a03246a882 Mon Sep 17 00:00:00 2001 From: Lajos Molnar Date: Wed, 28 Jan 2015 16:16:40 -0800 Subject: [PATCH] GraphicBufferMapper: handle devices that do not implement lock_ycbcr Bug: 19179927 Change-Id: I09ffca954fed3cd2d3466c8396627dc7dbc0052d --- libs/ui/GraphicBufferMapper.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libs/ui/GraphicBufferMapper.cpp b/libs/ui/GraphicBufferMapper.cpp index 320b6c03d..e949b0c9b 100644 --- a/libs/ui/GraphicBufferMapper.cpp +++ b/libs/ui/GraphicBufferMapper.cpp @@ -92,6 +92,10 @@ status_t GraphicBufferMapper::lockYCbCr(buffer_handle_t handle, ATRACE_CALL(); status_t err; + if (mAllocMod->lock_ycbcr == NULL) { + return -EINVAL; // do not log failure + } + err = mAllocMod->lock_ycbcr(mAllocMod, handle, usage, bounds.left, bounds.top, bounds.width(), bounds.height(), ycbcr); @@ -139,16 +143,19 @@ status_t GraphicBufferMapper::lockAsyncYCbCr(buffer_handle_t handle, ATRACE_CALL(); status_t err; - if (mAllocMod->common.module_api_version >= GRALLOC_MODULE_API_VERSION_0_3) { + if (mAllocMod->common.module_api_version >= GRALLOC_MODULE_API_VERSION_0_3 + && mAllocMod->lockAsync_ycbcr != NULL) { err = mAllocMod->lockAsync_ycbcr(mAllocMod, handle, usage, bounds.left, bounds.top, bounds.width(), bounds.height(), ycbcr, fenceFd); - } else { + } else if (mAllocMod->lock_ycbcr != NULL) { sync_wait(fenceFd, -1); close(fenceFd); err = mAllocMod->lock_ycbcr(mAllocMod, handle, usage, bounds.left, bounds.top, bounds.width(), bounds.height(), ycbcr); + } else { + return -EINVAL; // do not log failure } ALOGW_IF(err, "lock(...) failed %d (%s)", err, strerror(-err));