From dab0b816bc7935fd46b1b24cdd279f72384b4960 Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Wed, 8 May 2013 19:39:44 +0900 Subject: [PATCH] add bo_lock2 as a backend fucntion Change-Id: I5272932d999910048a7ff7836a7bbe5458852a74 --- src/tbm_bufmgr.c | 18 ++++++++++++------ src/tbm_bufmgr_backend.h | 11 ++++++++++- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 6636cc2..9919c4b 100755 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -311,7 +311,7 @@ _user_data_delete (tbm_user_data *user_data) } static int -_bo_lock (tbm_bo bo) +_bo_lock (tbm_bo bo, int device, int opt) { tbm_bufmgr bufmgr = bo->bufmgr; int ret = 0; @@ -319,9 +319,15 @@ _bo_lock (tbm_bo bo) if (bufmgr->backend->flags&TBM_LOCK_CTRL_BACKEND && bufmgr->backend->bo_lock) { - /* use backend lock */ + /* use bo_lock2 backend lock */ ret = bufmgr->backend->bo_lock (bo); } + if (bufmgr->backend->flags&TBM_LOCK_CTRL_BACKEND && + bufmgr->backend->bo_lock2) + { + /* use bo_lock2 backend lock */ + ret = bufmgr->backend->bo_lock2 (bo, device, opt); + } else { /* use tizen global lock */ @@ -350,7 +356,7 @@ _bo_unlock (tbm_bo bo) } static int -_tbm_bo_lock (tbm_bo bo) +_tbm_bo_lock (tbm_bo bo, int device, int opt) { tbm_bufmgr bufmgr = NULL; int old; @@ -375,7 +381,7 @@ _tbm_bo_lock (tbm_bo bo) { case LOCK_TRY_ALWAYS: /* LOCK_TRY_ALWAYS */ pthread_mutex_unlock (&bufmgr->lock); - ret = _bo_lock (bo); + ret = _bo_lock (bo, device, opt); pthread_mutex_lock (&bufmgr->lock); if(ret) bo->lock_cnt++; @@ -387,7 +393,7 @@ _tbm_bo_lock (tbm_bo bo) if (bo->lock_cnt == 0) { pthread_mutex_unlock (&bufmgr->lock); - ret = _bo_lock (bo); + ret = _bo_lock (bo, device, opt); pthread_mutex_lock (&bufmgr->lock); if (ret) bo->lock_cnt++; @@ -1161,7 +1167,7 @@ tbm_bo_map (tbm_bo bo, int device, int opt) pthread_mutex_lock (&bufmgr->lock); - _tbm_bo_lock (bo); + _tbm_bo_lock (bo, device, opt); bo_handle = bufmgr->backend->bo_map (bo, device, opt); if (bufmgr->use_map_cache == 1 && bo->map_cnt == 0) diff --git a/src/tbm_bufmgr_backend.h b/src/tbm_bufmgr_backend.h index f1f5672..b0b3501 100755 --- a/src/tbm_bufmgr_backend.h +++ b/src/tbm_bufmgr_backend.h @@ -192,11 +192,20 @@ struct _tbm_bufmgr_backend */ int (*bo_unlock) (tbm_bo bo); + /** + * @brief lock the buffer object with a device and an opt. + * @param[in] bo : the buffer object + * @param[in] device : the device type to get a handle + * @param[in] option : the option to access the buffer object + * @return 1 if this function succeeds, otherwise 0. + * @remark This function pointer could be null. (default: use the tizen global lock) + */ + int (*bo_lock2) (tbm_bo bo, int device, int opt); + /* Padding for future extension */ void (*reserved1) (void); void (*reserved2) (void); void (*reserved3) (void); - void (*reserved4) (void); }; /** -- 2.7.4