tbm_bufmgr: lock/unlock tbm_bufmgr_mutex at tbm_bufmgr function
[platform/core/uifw/libtbm.git] / src / tbm_bufmgr_int.h
index 7972b97..97ae0e5 100644 (file)
@@ -55,14 +55,15 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <tbm_surface_internal.h>
 #include <tbm_surface_queue.h>
 #include <tbm_log.h>
-#include <tbm_bufmgr_backend.h>
-#include <tbm_backend.h>
 #include <tbm_error.h>
+#include "tbm_module.h"
 
 extern tbm_bufmgr gBufMgr;
 extern int b_dump_queue;
 extern int trace_mask;
 
+#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))
@@ -178,13 +179,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  (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 */
 };
 
 /**
@@ -203,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 */
 };
 
 /**
@@ -239,16 +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 {
@@ -268,6 +267,13 @@ 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);
@@ -294,14 +300,17 @@ tbm_bufmgr tbm_bufmgr_get(void);
 
 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_bo_alloc_with_format(tbm_bufmgr bufmgr, int format, int bo_idx, int width,
-                                               int height, tbm_bo_memory_type flags, tbm_error_e *error);
-tbm_bo tbm_bo_alloc_with_tiled_format(tbm_bufmgr bufmgr, int width, int height, int bpp, int format,
-                                                       tbm_bo_memory_type flags, int bo_idx, tbm_error_e *error);
-tbm_bo tbm_bo_alloc_with_surface(tbm_bufmgr bufmgr, int width, int height, int format, int flags, int bo_idx);
+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_ */
+#endif /* _TBM_BUFMGR_INT_H_ */