X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftbm_bufmgr_int.h;h=cc789dbdadc68c2a8ca00457bcb604581c78cb59;hb=84d2f6d1cb3fc8ae8b448ca164da587b5a807327;hp=3c191b84f093ca53423179906429a12bc03e76f3;hpb=b95c52828a665a525dcdac02f243afc415115787;p=platform%2Fcore%2Fuifw%2Flibtbm.git diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index 3c191b8..cc789db 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -46,133 +46,22 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include +#include #include +#include #include +#include #include #include -#include #include +#include +#include +#include +#include -#define DEBUG -#ifdef DEBUG -extern int bDebug; extern tbm_bufmgr gBufMgr; - -#define TBM_DBG(...) { if (bDebug&0x1) TBM_LOG_D(__VA_ARGS__); } -#define TBM_DBG_LOCK(...) { if (bDebug&0x2) TBM_LOG_D(__VA_ARGS__); } -#else -#define TBM_DBG(...) -#define TBM_DBG_LOCK(...) -#endif /* DEBUG */ - -#define TRACE -#ifdef TRACE -extern int bTrace; -#endif /* TRACE */ - extern int b_dump_queue; - -#ifdef HAVE_DLOG -#include - -extern int bDlog; - -#ifdef LOG_TAG -#undef LOG_TAG -#endif - -#define LOG_TAG "TBM" - -#define TBM_LOG_D(fmt, ...) {\ - if (bDlog) {\ - LOGD("[TBM:D] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - fprintf(stderr, "[TBM:D(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\ - } \ -} - -#define TBM_LOG_I(fmt, ...) {\ - if (bDlog) {\ - LOGI("[TBM:I] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - fprintf(stderr, "[TBM:I(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\ - } \ -} - -#define TBM_LOG_W(fmt, ...) {\ - if (bDlog) {\ - LOGW("[TBM:W] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - fprintf(stderr, "[TBM:W(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\ - } \ -} - -#define TBM_LOG_E(fmt, ...) {\ - if (bDlog) {\ - LOGE("[TBM:E] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - fprintf(stderr, "[TBM:E(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\ - } \ -} - -#define TBM_DEBUG(fmt, ...) {\ - if (bDlog) {\ - LOGE("[TBM_DEBUG] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - fprintf(stderr, "[TBM:DEBUG(%d)] " fmt, getpid(), ##__VA_ARGS__);\ - } \ -} - -#ifdef TRACE -#define TBM_TRACE(fmt, ...) {\ - if (bDlog) {\ - if (bTrace&0x1) LOGE("[TBM:TRACE] " fmt, ##__VA_ARGS__);\ - } \ - else {\ - if (bTrace&0x1) fprintf(stderr, "[TBM:TRACE(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__);\ - } \ -} -#else -#define TBM_TRACE(fmt, ...) -#endif /* TRACE */ - -#else -#define TBM_LOG_D(fmt, ...) fprintf(stderr, "[TBM:D(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__) -#define TBM_LOG_I(fmt, ...) fprintf(stderr, "[TBM:I(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__) -#define TBM_LOG_W(fmt, ...) fprintf(stderr, "[TBM:W(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__) -#define TBM_LOG_E(fmt, ...) fprintf(stderr, "[TBM:E(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__) -#define TBM_DEBUG(fmt, ...) fprintf(stderr, "[TBM:DEBUG(%d)] " fmt, getpid(), ##__VA_ARGS__) -#ifdef TRACE -#define TBM_TRACE(fmt, ...) { if (bTrace&0x1) fprintf(stderr, "[TBM:TRACE(%d)(%s:%d)] " fmt, getpid(), __func__, __LINE__, ##__VA_ARGS__); } -#else -#define TBM_TRACE(fmt, ...) -#endif /* TRACE */ -#endif /* HAVE_DLOG */ - -/* check condition */ -#define TBM_RETURN_IF_FAIL(cond) {\ - if (!(cond)) {\ - TBM_LOG_E("'%s' failed.\n", #cond);\ - return;\ - } \ -} -#define TBM_RETURN_VAL_IF_FAIL(cond, val) {\ - if (!(cond)) {\ - TBM_LOG_E("'%s' failed.\n", #cond);\ - return val;\ - } \ -} -#define TBM_GOTO_VAL_IF_FAIL(cond, val) {\ - if (!(cond)) {\ - TBM_LOG_E("'%s' failed.\n", #cond);\ - goto val;\ - } \ -} +extern int trace_mask; /* check flags */ #define RETURN_CHECK_FLAG(cond) {\ @@ -186,6 +75,62 @@ extern int bDlog; } \ } +#define TBM_TRACE_BO(fmt, args...) \ + do { \ + if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_BO) { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \ + (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ + (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ + } \ + } while (0) + +#define TBM_TRACE_SURFACE_INTERNAL(fmt, args...) \ + do { \ + if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE_INTERNAL) { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \ + (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ + (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ + } \ + } while (0) + +#define TBM_TRACE_SURFACE(fmt, args...) \ + do { \ + if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE) { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \ + (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ + (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ + } \ + } while (0) + +#define TBM_TRACE_SURFACE_QUEUE(fmt, args...) \ + do { \ + if (trace_mask&TBM_BUFGMR_DEBUG_TRACE_SURFACE_QUEUE) { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \ + (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ + (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ + } \ + } while (0) + +#define TBM_TRACE(fmt, args...) \ + do { \ + if (trace_mask&0x1) { \ + struct timespec ts; \ + clock_gettime(CLOCK_MONOTONIC, &ts); \ + tbm_log_print(TBM_LOG_LEVEL_INFO, "[%5d.%06d][%d][%s %d](TRACE)"fmt, \ + (int)ts.tv_sec, (int)ts.tv_nsec / 1000, \ + (int)syscall(SYS_gettid), __FUNCTION__, __LINE__, ##args); \ + } \ + } while (0) + + /* check validation */ #define TBM_BUFMGR_IS_VALID(mgr) (mgr && mgr == gBufMgr) #define TBM_BO_IS_VALID(bo) (bo && \ @@ -226,11 +171,13 @@ struct _tbm_bo { int ref_cnt; /* ref count of bo */ int flags; /* TBM_BO_FLAGS :bo memory type */ struct list_head user_data_list; /* list of the user_date in bo */ - void *priv; /* bo private */ + void *priv; /* bo private (will be DEPRECATED) */ struct list_head item_link; /* link of bo */ tbm_surface_h surface; /* tbm_surface */ int lock_cnt; /* lock count of bo */ unsigned int map_cnt; /* device map count */ + + tbm_backend_bo_data *bo_data; /* bo data of the backend module */ }; /** @@ -238,19 +185,24 @@ struct _tbm_bo { * */ struct _tbm_bufmgr { - pthread_mutex_t lock; /* mutex lock */ int ref_count; /* reference count */ int fd; /* bufmgr fd */ tbm_bufmgr_bo_lock_type bo_lock_type; /* lock_type of bufmgr */ int capabilities; /* capabilities of bufmgr */ + int display_server; /* used by display server */ unsigned int bo_cnt; /* number of bos */ struct list_head bo_list; /* list of bos belonging to bufmgr */ struct list_head surf_list; /* list of surfaces belonging to bufmgr */ struct list_head surf_queue_list; /* list of surface queues belonging to bufmgr */ struct list_head debug_key_list; /* list of debug data key list belonging to bufmgr */ - void *module_data; - tbm_bufmgr_backend backend; /* bufmgr backend */ - int display_server; /* used by display server */ + + void *module_data; /* backend module */ + tbm_bufmgr_backend backend; /* bufmgr backend (will be DEPRECATED) */ + + tbm_backend_module *backend_module_data; /* backend module data */ + tbm_backend_bufmgr_data *bufmgr_data; /* backend data of the backend module */ + tbm_backend_bufmgr_func *bufmgr_func; /* backend functions for bufmgr */ + tbm_backend_bo_func *bo_func; /* backend functions for bo */ }; /** @@ -281,6 +233,13 @@ struct _tbm_surface { struct list_head user_data_list; /* list of the user_date in surface */ struct list_head debug_data_list; /* list of debug data */ + + struct { + int x; + int y; + int width; + int height; + } damage; }; typedef struct { @@ -303,6 +262,7 @@ typedef struct { tbm_bufmgr _tbm_bufmgr_get_bufmgr(void); int _tbm_bo_set_surface(tbm_bo bo, tbm_surface_h surface); int _tbm_surface_is_valid(tbm_surface_h surface); +void _tbm_bo_free(tbm_bo bo); /* functions for mutex */ int tbm_surface_internal_get_info(tbm_surface_h surface, int opt, @@ -322,4 +282,11 @@ tbm_user_data *user_data_create(unsigned long key, void user_data_delete(tbm_user_data *user_data); int tbm_bufmgr_get_fd_limit(void); +tbm_bufmgr tbm_bufmgr_get(void); + +void _tbm_set_last_result(tbm_error_e err); + +void _tbm_bufmgr_mutex_lock(void); +void _tbm_bufmgr_mutex_unlock(void); + #endif /* _TBM_BUFMGR_INT_H_ */