X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftbm_bufmgr_int.h;h=97ae0e59c18feb19192b7785997c548275aa2ac9;hb=cd39ed65ab55fdfba12d94cc8838eb5e96aa1890;hp=c47067ccbd8bc8b1bf20affce89570510c9f5907;hpb=00f565769857c185aad5914ada791b81096e58c0;p=platform%2Fcore%2Fuifw%2Flibtbm.git diff --git a/src/tbm_bufmgr_int.h b/src/tbm_bufmgr_int.h index c47067c..97ae0e5 100644 --- a/src/tbm_bufmgr_int.h +++ b/src/tbm_bufmgr_int.h @@ -55,32 +55,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include -#include -#include +#include +#include "tbm_module.h" extern tbm_bufmgr gBufMgr; extern int b_dump_queue; extern int trace_mask; -/* check condition */ -#define TBM_RETURN_IF_FAIL(cond) {\ - if (!(cond)) {\ - TBM_ERR("'%s' failed.\n", #cond);\ - return;\ - } \ -} -#define TBM_RETURN_VAL_IF_FAIL(cond, val) {\ - if (!(cond)) {\ - TBM_ERR("'%s' failed.\n", #cond);\ - return val;\ - } \ -} -#define TBM_GOTO_VAL_IF_FAIL(cond, val) {\ - if (!(cond)) {\ - TBM_ERR("'%s' failed.\n", #cond);\ - goto val;\ - } \ -} +#define TBM_BO_MAGIC 0xBF011234 + +#define C(b, m) (((b) >> (m)) & 0xFF) +#define B(c, s) ((((unsigned int)(c)) & 0xff) << (s)) +#define FOURCC(a, b, c, d) (B(d, 24) | B(c, 16) | B(b, 8) | B(a, 0)) +#define FOURCC_STR(id) C(id, 0), C(id, 8), C(id, 16), C(id, 24) +#define FOURCC_ID(str) FOURCC(((char*)str)[0], ((char*)str)[1], ((char*)str)[2], ((char*)str)[3]) /* check flags */ #define RETURN_CHECK_FLAG(cond) {\ @@ -186,17 +174,18 @@ struct list_head { * @brief tbm_bo : buffer object of Tizen Buffer Manager */ struct _tbm_bo { + unsigned int magic; /* tbm bo magic number */ tbm_bufmgr bufmgr; /* tbm buffer manager */ 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 (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 */ + tbm_bo_data *bo_data; /* bo data of the module */ + int get_from_surface_data; /* bo_data has be detroyed by surface_data */ }; /** @@ -204,7 +193,6 @@ 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 */ @@ -216,13 +204,7 @@ struct _tbm_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; /* 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 */ + tbm_module *module; /* tbm module information */ }; /** @@ -230,6 +212,8 @@ struct _tbm_bufmgr { * */ struct _tbm_surface { + unsigned int magic; /* tbm surface magic number */ + tbm_bufmgr bufmgr; /* tbm buffer manager */ tbm_surface_info_s info; /* tbm surface information */ @@ -250,9 +234,20 @@ struct _tbm_surface { struct list_head item_link; /* link of surface */ - struct list_head user_data_list; /* list of the user_date in surface */ + struct list_head user_data_list; /* list of the user_data in surface */ struct list_head debug_data_list; /* list of debug data */ + + struct list_head destroy_funcs; /* list of destory callback function */ + + struct { + int x; + int y; + int width; + int height; + } damage; + + tbm_surface_data *surface_data; /* surface data of the module */ }; typedef struct { @@ -272,12 +267,18 @@ typedef struct { struct list_head item_link; } tbm_surface_debug_data; +typedef struct _tbm_surface_destroy_func_info { + tbm_surface_internal_destroy_handler destroy_func; + void *user_data; + + struct list_head item_link; +} tbm_surface_destroy_func_info; + 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, tbm_surface_info_s *info, int map); void tbm_surface_internal_unmap(tbm_surface_h surface); @@ -296,4 +297,20 @@ void user_data_delete(tbm_user_data *user_data); int tbm_bufmgr_get_fd_limit(void); tbm_bufmgr tbm_bufmgr_get(void); -#endif /* _TBM_BUFMGR_INT_H_ */ + +void _tbm_set_last_result(tbm_error_e err); + +char *_tbm_flag_to_str(int f); + +/* functions for mutex */ +void _tbm_bufmgr_mutex_lock(void); +void _tbm_bufmgr_mutex_unlock(void); +tbm_bo tbm_bufmgr_internal_find_bo(tbm_bufmgr bufmgr, tbm_bo bo); + +tbm_bo tbm_bufmgr_internal_alloc_bo(tbm_bufmgr bufmgr, int size, int flags); +tbm_bo tbm_bufmgr_internal_alloc_bo_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width, int bpp, int height, tbm_bo_memory_type flags, tbm_error_e *error); +tbm_bo tbm_bufmgr_internal_alloc_bo_with_bo_data(tbm_bufmgr bufmgr, tbm_bo_data *bo_data, int flags, tbm_error_e *error); +tbm_bo tbm_bufmgr_internal_import_bo_with_key(tbm_bufmgr bufmgr, tbm_key key); +tbm_bo tbm_bufmgr_internal_import_bo_with_fd(tbm_bufmgr bufmgr, tbm_fd fd); + +#endif /* _TBM_BUFMGR_INT_H_ */