From: SooChan Lim Date: Wed, 8 May 2013 10:19:34 +0000 (+0900) Subject: control the unlock accoding to the lock_type X-Git-Tag: 2.2_release~11 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9406c90072fa27c3c170416fd8b88684fa4d622;p=framework%2Fuifw%2Flibtbm.git control the unlock accoding to the lock_type Change-Id: I80d616e705c22ba388f0555ad8739c87c227881b --- diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index 338fb05..6636cc2 100755 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -121,9 +121,9 @@ static int bDebug = 0; #define MODULE_VERSION_NUMERIC(maj, min, patch) \ ((((maj) & 0xFF) << 24) | (((min) & 0xFF) << 16) | (patch & 0xFFFF)) -#define GET_MODULE_MAJOR_VERSION(vers) (((vers) >> 24) & 0xFF) -#define GET_MODULE_MINOR_VERSION(vers) (((vers) >> 16) & 0xFF) -#define GET_MODULE_PATCHLEVEL(vers) ((vers) & 0xFFFF) +#define GET_MODULE_MAJOR_VERSION(vers) (((vers) >> 24) & 0xFF) +#define GET_MODULE_MINOR_VERSION(vers) (((vers) >> 16) & 0xFF) +#define GET_MODULE_PATCHLEVEL(vers) ((vers) & 0xFFFF) enum { LOCK_TRY_ONCE, @@ -416,16 +416,30 @@ _tbm_bo_unlock (tbm_bo bo) RETURN_CHECK_FLAG (CTRL_BACKEND_VALID(bufmgr->backend->flags)); old = bo->lock_cnt; - if (bo->lock_cnt > 0) + switch (bufmgr->lock_type) { - bo->lock_cnt--; - if (bo->lock_cnt == 0) - _bo_unlock (bo); + case LOCK_TRY_ALWAYS: /* LOCK_TRY_ALWAYS */ + if (bo->lock_cnt > 0) + { + bo->lock_cnt--; + _bo_unlock (bo); + } + break; + case LOCK_TRY_NEVER: /* LOCK_TRY_NEVER */ + return; + break; + default: + if (bo->lock_cnt > 0) + { + bo->lock_cnt--; + if (bo->lock_cnt == 0) + _bo_unlock (bo); + } + break; } - else if (bo->lock_cnt < 0) - { + + if (bo->lock_cnt < 0) bo->lock_cnt = 0; - } DBG_LOCK ("[libtbm:%d] << unlock bo:%p(%d, %d->%d)\n", getpid(), bo, bo->tgl_key, old, bo->lock_cnt);