From: Changyeon Lee Date: Fri, 19 Sep 2014 08:39:21 +0000 (+0900) Subject: Add check for locking and mapping and unmapping fail X-Git-Tag: accepted/tizen/common/20141003.171531^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=53290a30a7dffec97e731b45216b05c5a7113257;p=platform%2Fcore%2Fuifw%2Flibtbm.git Add check for locking and mapping and unmapping fail Change-Id: I84afe480515e23fc1e76e376787da16890275f1d Signed-off-by: Changyeon Lee --- diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 733ded3..c4a17d2 100755 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -502,7 +502,7 @@ _tbm_bo_lock (tbm_bo bo, int device, int opt) DBG_LOCK ("[libtbm:%d] >> LOCK bo:%p(%d, %d->%d)\n", getpid(), bo, bo->tgl_key, old, bo->lock_cnt); - return 1; + return ret; } static void @@ -1238,9 +1238,27 @@ tbm_bo_map (tbm_bo bo, int device, int opt) bo_handle = bufmgr->backend->bo_get_handle (bo, device); - _tbm_bo_lock (bo, device, opt); + if (!_tbm_bo_lock (bo, device, opt)) + { + TBM_LOG ("[libtbm:%d] " + "error %s:%d fail to lock bo:%p)\n", + getpid(), __FUNCTION__, __LINE__, bo); + + pthread_mutex_unlock (&bufmgr->lock); + return (tbm_bo_handle)NULL; + } bo_handle = bufmgr->backend->bo_map (bo, device, opt); + if (bo_handle.ptr == NULL) + { + TBM_LOG ("[libtbm:%d] " + "error %s:%d fail to map bo:%p\n", + getpid(), __FUNCTION__, __LINE__, bo); + + _tbm_bo_unlock(bo); + pthread_mutex_unlock (&bufmgr->lock); + return (tbm_bo_handle)NULL; + } if (bufmgr->use_map_cache == 1 && bo->map_cnt == 0) _tbm_bo_set_state (bo, device, opt); @@ -1265,8 +1283,12 @@ tbm_bo_unmap (tbm_bo bo) pthread_mutex_lock (&bufmgr->lock); - ret = bufmgr->backend->bo_unmap (bo); + if (!ret) + { + pthread_mutex_unlock (&bufmgr->lock); + return ret; + } /* decrease the map_count */ bo->map_cnt--;