bufmgr: make the _tbm_bufmgr_init
[platform/core/uifw/libtbm.git] / src / tbm_bufmgr.c
index ac48c1e..5f55aef 100644 (file)
@@ -155,18 +155,22 @@ _tbm_flag_to_str(int f)
                int c = 0;
 
                if (f & TBM_BO_SCANOUT)
-                       c = snprintf(&str[c], 255, "SCANOUT");
+                       c += snprintf(&str[c], 255-c, "SCANOUT");
 
                if (f & TBM_BO_NONCACHABLE) {
-                       if (c)
-                               c = snprintf(&str[c], 255, ", ");
-                       c = snprintf(&str[c], 255, "NONCACHABLE,");
+                       if (c >= 0 && c < 255)
+                               c += snprintf(&str[c], 255-c, ", ");
+
+                       if (c >= 0 && c < 255)
+                               c += snprintf(&str[c], 255-c, "NONCACHABLE,");
                }
 
                if (f & TBM_BO_WC) {
-                       if (c)
-                               c = snprintf(&str[c], 255, ", ");
-                       c = snprintf(&str[c], 255, "WC");
+                       if (c >= 0 && c < 255)
+                               c += snprintf(&str[c], 255-c, ", ");
+
+                       if (c >= 0 && c < 255)
+                               c += snprintf(&str[c], 255-c, "WC");
                }
        }
 
@@ -616,8 +620,8 @@ _tbm_load_module(tbm_bufmgr bufmgr, int fd)
 }
 /* LCOV_EXCL_STOP */
 
-tbm_bufmgr
-tbm_bufmgr_init(int fd)
+static tbm_bufmgr
+_tbm_bufmgr_init(int fd, int server)
 {
 #ifdef TBM_BUFMGR_INIT_TIME
        struct timeval start_tv, end_tv;
@@ -745,6 +749,16 @@ tbm_bufmgr_init(int fd)
        return gBufMgr;
 }
 
+tbm_bufmgr
+tbm_bufmgr_init(int fd)
+{
+       tbm_bufmgr bufmgr;
+
+       bufmgr = _tbm_bufmgr_init(fd, 0);
+
+       return bufmgr;
+}
+
 void
 tbm_bufmgr_deinit(tbm_bufmgr bufmgr)
 {
@@ -1233,6 +1247,7 @@ tbm_bo_unmap(tbm_bo bo)
 
        TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), 0);
        TBM_BUFMGR_RETURN_VAL_IF_FAIL(_tbm_bo_is_valid(bo), 0);
+       TBM_BUFMGR_RETURN_VAL_IF_FAIL(bo->map_cnt > 0, 0);
 
        ret = bufmgr->backend->bo_unmap(bo);
        if (!ret) {
@@ -1664,6 +1679,12 @@ tbm_bufmgr_debug_dump_set_scale(double scale)
 }
 
 int
+tbm_bufmgr_debug_get_ref_count(void)
+{
+       return (gBufMgr) ? gBufMgr->ref_count : 0;
+}
+
+int
 tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff)
 {
        pthread_mutex_lock(&gLock);
@@ -1752,7 +1773,7 @@ _tbm_bo_set_surface(tbm_bo bo, tbm_surface_h surface)
 }
 
 int
-tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *NativeDisplay)
+tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *native_display)
 {
        int ret;
 
@@ -1761,21 +1782,21 @@ tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *NativeDisplay)
        TBM_BUFMGR_RETURN_VAL_IF_FAIL(TBM_BUFMGR_IS_VALID(gBufMgr), 0);
 
        if (!bufmgr->backend->bufmgr_bind_native_display) {
-               TBM_TRACE("skip: tbm_bufmgr(%p) NativeDisplay(%p)\n",
-                               bufmgr, NativeDisplay);
+               TBM_TRACE("skip: tbm_bufmgr(%p) native_display(%p)\n",
+                               bufmgr, native_display);
                _tbm_bufmgr_mutex_unlock();
                return 1;
        }
 
-       ret = bufmgr->backend->bufmgr_bind_native_display(bufmgr, NativeDisplay);
+       ret = bufmgr->backend->bufmgr_bind_native_display(bufmgr, native_display);
        if (!ret) {
-               TBM_LOG_E("error: tbm_bufmgr(%p) NativeDisplay(%p)\n",
-                               bufmgr, NativeDisplay);
+               TBM_LOG_E("error: tbm_bufmgr(%p) native_display(%p)\n",
+                               bufmgr, native_display);
                _tbm_bufmgr_mutex_unlock();
                return 0;
        }
 
-       TBM_TRACE("tbm_bufmgr(%p) NativeDisplay(%p)\n", bufmgr, NativeDisplay);
+       TBM_TRACE("tbm_bufmgr(%p) native_display(%p)\n", bufmgr, native_display);
 
        _tbm_bufmgr_mutex_unlock();