From 94c154c010655172805569e5b94e867744f1822e Mon Sep 17 00:00:00 2001 From: SooChan Lim Date: Mon, 23 Apr 2018 11:27:19 +0900 Subject: [PATCH] bufmgr: add _tbm_set_last_result() Change-Id: Ib74dfdef126e090f263163101465490ed1eff591 --- src/tbm_bufmgr.c | 39 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/src/tbm_bufmgr.c b/src/tbm_bufmgr.c index eaddfc0..d8978e6 100644 --- a/src/tbm_bufmgr.c +++ b/src/tbm_bufmgr.c @@ -76,6 +76,7 @@ static void _tbm_bufmgr_mutex_unlock(void); #define TBM_BUFMGR_RETURN_IF_FAIL(cond) {\ if (!(cond)) {\ TBM_ERR("'%s' failed.\n", #cond);\ + _tbm_set_last_result(TBM_ERROR_INVALID_PARAMETER);\ _tbm_bufmgr_mutex_unlock();\ return;\ } \ @@ -84,6 +85,7 @@ static void _tbm_bufmgr_mutex_unlock(void); #define TBM_BUFMGR_RETURN_VAL_IF_FAIL(cond, val) {\ if (!(cond)) {\ TBM_ERR("'%s' failed.\n", #cond);\ + _tbm_set_last_result(TBM_ERROR_INVALID_PARAMETER);\ _tbm_bufmgr_mutex_unlock();\ return val;\ } \ @@ -517,6 +519,8 @@ _tbm_bufmgr_init(int fd, int server) pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); + if (fd >= 0) { TBM_WRN("!!!!!WARNING:: The tbm_bufmgr_init DOSE NOT use argument fd ANYMORE.\n"); TBM_WRN("!!!!!WARNING:: IT WILL BE CHANGED like tbm_bufmgr_init(int fd) --> tbm_bufmgr_init(void).\n"); @@ -537,6 +541,7 @@ _tbm_bufmgr_init(int fd, int server) gBufMgr = calloc(1, sizeof(struct _tbm_bufmgr)); if (!gBufMgr) { TBM_ERR("error: fail to alloc bufmgr fd(%d)\n", fd); + _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY); pthread_mutex_unlock(&gLock); return NULL; } @@ -552,6 +557,7 @@ _tbm_bufmgr_init(int fd, int server) /* load bufmgr priv from env */ if (!_tbm_load_module(gBufMgr, gBufMgr->fd)) { TBM_ERR("error : Fail to load bufmgr backend\n"); + _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION); free(gBufMgr); gBufMgr = NULL; pthread_mutex_unlock(&gLock); @@ -618,6 +624,7 @@ tbm_bufmgr_deinit(tbm_bufmgr bufmgr) _tbm_bufmgr_mutex_lock(); pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); if (!gBufMgr) { TBM_ERR("gBufmgr already destroy: bufmgr:%p\n", bufmgr); @@ -691,6 +698,7 @@ tbm_bufmgr_get_capability(tbm_bufmgr bufmgr) unsigned int capabilities = TBM_BUFMGR_CAPABILITY_NONE; _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr), TBM_BUFMGR_CAPABILITY_NONE); TBM_BUFMGR_RETURN_VAL_IF_FAIL(bufmgr == gBufMgr, TBM_BUFMGR_CAPABILITY_NONE); @@ -715,9 +723,11 @@ tbm_bufmgr_debug_tbm_info_get(tbm_bufmgr bufmgr) tbm_error_e error; pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); if (!TBM_BUFMGR_IS_VALID(bufmgr) || (bufmgr != gBufMgr)) { TBM_ERR("invalid bufmgr\n"); + _tbm_set_last_result(TBM_ERROR_INVALID_PARAMETER); pthread_mutex_unlock(&gLock); return NULL; } @@ -725,6 +735,7 @@ tbm_bufmgr_debug_tbm_info_get(tbm_bufmgr bufmgr) str = malloc(len); if (!str) { TBM_ERR("Fail to allocate the string.\n"); + _tbm_set_last_result(TBM_ERROR_OUT_OF_MEMORY); pthread_mutex_unlock(&gLock); return NULL; } @@ -871,6 +882,7 @@ void tbm_bufmgr_debug_trace(tbm_bufmgr bufmgr, int onoff) { _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); TBM_BUFMGR_RETURN_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr)); TBM_BUFMGR_RETURN_IF_FAIL(bufmgr == gBufMgr); @@ -887,6 +899,7 @@ void tbm_bufmgr_debug_set_trace_mask(tbm_bufmgr bufmgr, tbm_bufmgr_debug_trace_mask mask, int set) { _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); TBM_BUFMGR_RETURN_IF_FAIL(TBM_BUFMGR_IS_VALID(bufmgr)); TBM_BUFMGR_RETURN_IF_FAIL(bufmgr == gBufMgr); @@ -926,6 +939,7 @@ void tbm_bufmgr_debug_dump_set_scale(double scale) { pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); scale_factor = scale; pthread_mutex_unlock(&gLock); } @@ -933,13 +947,24 @@ tbm_bufmgr_debug_dump_set_scale(double scale) int tbm_bufmgr_debug_get_ref_count(void) { - return (gBufMgr) ? gBufMgr->ref_count : 0; + int refcnt; + + pthread_mutex_lock(&gLock); + + _tbm_set_last_result(TBM_ERROR_NONE); + + refcnt = (gBufMgr) ? gBufMgr->ref_count : 0; + + pthread_mutex_unlock(&gLock); + + return refcnt; } int tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff) { pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); if (onoff == 0) { TBM_DBG("count=%d onoff=%d\n", count, onoff); @@ -968,6 +993,7 @@ tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff) } pthread_mutex_unlock(&gLock); + return 1; } @@ -977,11 +1003,12 @@ tbm_bufmgr_debug_dump_all(char *path) int w, h, count = 0; tbm_surface_h surface = NULL; + pthread_mutex_lock(&gLock); + _tbm_set_last_result(TBM_ERROR_NONE); + TBM_RETURN_VAL_IF_FAIL(path != NULL, 0); TBM_DBG("path=%s\n", path); - pthread_mutex_lock(&gLock); - count = _tbm_util_get_max_surface_size(&w, &h); if (count == 0) { TBM_ERR("No tbm_surface.\n"); @@ -1016,6 +1043,7 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display) tbm_error_e error; _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), 0); @@ -1023,6 +1051,7 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display) if (!bufmgr->bufmgr_func->bufmgr_bind_native_display) { TBM_WRN("skip: tbm_bufmgr(%p) native_display(%p)\n", bufmgr, native_display); + _tbm_set_last_result(TBM_ERROR_NOT_SUPPORTED); _tbm_bufmgr_mutex_unlock(); return 1; } @@ -1031,6 +1060,7 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display) if (error != TBM_ERROR_NONE) { TBM_ERR("error: tbm_bufmgr(%p) native_display(%p) error(%d)\n", bufmgr, native_display, error); + _tbm_set_last_result(error); _tbm_bufmgr_mutex_unlock(); return 0; } @@ -1039,6 +1069,7 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display) if (!bufmgr->backend->bufmgr_bind_native_display) { TBM_WRN("skip: tbm_bufmgr(%p) native_display(%p)\n", bufmgr, native_display); + _tbm_set_last_result(TBM_ERROR_NOT_SUPPORTED); _tbm_bufmgr_mutex_unlock(); return 1; } @@ -1047,6 +1078,7 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display) if (!ret) { TBM_ERR("error: tbm_bufmgr(%p) native_display(%p)\n", bufmgr, native_display); + _tbm_set_last_result(TBM_ERROR_INVALID_OPERATION); _tbm_bufmgr_mutex_unlock(); return 0; } @@ -1073,6 +1105,7 @@ int tbm_bufmgr_set_bo_lock_type(tbm_bufmgr bufmgr, tbm_bufmgr_bo_lock_type bo_lock_type) { _tbm_bufmgr_mutex_lock(); + _tbm_set_last_result(TBM_ERROR_NONE); TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), 0); TBM_BUFMGR_RETURN_VAL_IF_FAIL(bufmgr == gBufMgr, 0); -- 2.7.4