surface: use magic number for checking valid of surface
[platform/core/uifw/libtbm.git] / src / tbm_bufmgr_int.h
index ea58185..da0997d 100644 (file)
@@ -48,39 +48,21 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <errno.h>
 #include <assert.h>
 #include <pthread.h>
+#include <dlog.h>
 #include <tbm_bufmgr.h>
 #include <tbm_bo.h>
 #include <tbm_surface.h>
 #include <tbm_surface_internal.h>
-#include <tbm_bufmgr_backend.h>
 #include <tbm_surface_queue.h>
 #include <tbm_log.h>
-#include <dlog.h>
+#include <tbm_bufmgr_backend.h>
+#include <tbm_backend.h>
+#include <tbm_error.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;\
-       } \
-}
-
 /* check flags */
 #define RETURN_CHECK_FLAG(cond) {\
        if ((cond)) {\
@@ -189,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 */
 };
 
 /**
@@ -201,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 */
 };
 
 /**
@@ -221,6 +210,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 */
@@ -244,6 +235,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 {
@@ -287,4 +285,10 @@ 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_ */