surface: move function of allocating for surface to tbm_bo
[platform/core/uifw/libtbm.git] / src / tbm_bufmgr_int.h
index c47067c..7972b97 100644 (file)
@@ -57,30 +57,17 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include <tbm_log.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;\
-       } \
-}
+#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,6 +173,7 @@ 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 */
@@ -204,7 +192,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 */
@@ -230,6 +217,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 */
@@ -253,6 +242,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 {
@@ -277,7 +273,6 @@ 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 +291,17 @@ 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);
+
+/* functions for mutex */
+void _tbm_bufmgr_mutex_lock(void);
+void _tbm_bufmgr_mutex_unlock(void);
+
+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);
+
 #endif                                                 /* _TBM_BUFMGR_INT_H_ */