X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Ftbm_bufmgr.h;h=e386beabc14ffef28ee19e40829d38daccc0b163;hb=f9d71b32a653fc55cc71194428d4b4e97514c81f;hp=041776e9730065656244da636edef59fad8fed7a;hpb=6916f99d5c6cdb5741e1621f8a261b6c808df745;p=platform%2Fcore%2Fuifw%2Flibtbm.git diff --git a/src/tbm_bufmgr.h b/src/tbm_bufmgr.h old mode 100755 new mode 100644 index 041776e..e386bea --- a/src/tbm_bufmgr.h +++ b/src/tbm_bufmgr.h @@ -34,12 +34,10 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include -#include - -/* this define will be removed when the capi-common is the version 0.1.1 */ -#ifndef TIZEN_ERROR_TBM -#define TIZEN_ERROR_TBM -0x02830000 +/* tbm error base : this error base is same as TIZEN_ERROR_TBM in tizen_error.h */ +#ifndef TBM_ERROR_BASE +#define TBM_ERROR_BASE -0x02830000 #endif /** @@ -49,122 +47,130 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. /** * @brief Definition for the tizen buffer manager - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ -typedef struct _tbm_bufmgr * tbm_bufmgr; +typedef struct _tbm_bufmgr *tbm_bufmgr; /** * @brief Definition for the tizen buffer object - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ typedef struct _tbm_bo *tbm_bo; /** * @brief Definition for the key associated with the buffer object - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ typedef uint32_t tbm_key; /** * @brief Definition for the file descripter of the system buffer manager - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ typedef int32_t tbm_fd; - /* TBM_DEVICE_TYPE */ /** * @brief Definition for the device type to get the default handle - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_DEVICE_DEFAULT 0 /** * @brief Definition for the device type to get the virtual memory - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_DEVICE_CPU 1 /** * @brief Definition for the device type to get the 2D memory handle - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_DEVICE_2D 2 /** * @brief Definition for the device type to get the 3D memory handle - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_DEVICE_3D 3 /** * @brief Definition for the device type to get the multimedia handle - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_DEVICE_MM 4 -/** - * @brief Definition for the cache invalidate - * @since_tizen 2.3 - */ -#define TBM_CACHE_INV 0x01 -/** - * @brief Definition for the cache clean - * @since_tizen 2.3 - */ -#define TBM_CACHE_CLN 0x02 - /* TBM_OPTION */ /** * @brief Definition for the access option to read - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_OPTION_READ (1 << 0) /** * @brief Definition for the access option to write - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_OPTION_WRITE (1 << 1) /** * @brief Definition for the vendor specific option that depends on the backend - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif */ #define TBM_OPTION_VENDOR (0xffff0000) /** * @brief tbm_bo_handle abstraction of the memory handle by TBM_DEVICE_TYPE - * @since_tizen 2.3 - */ -typedef union _tbm_bo_handle -{ - void *ptr; - int32_t s32; - uint32_t u32; - int64_t s64; - uint64_t u64; + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif + */ +typedef union _tbm_bo_handle { + void *ptr; + int32_t s32; + uint32_t u32; + int64_t s64; + uint64_t u64; } tbm_bo_handle; /** * @brief Enumeration of bo memory type - * @since_tizen 2.3 - */ -enum TBM_BO_FLAGS -{ - TBM_BO_DEFAULT = 0, /**< default memory: it depends on the backend */ - TBM_BO_SCANOUT = (1<<0), /**< scanout memory */ - TBM_BO_NONCACHABLE = (1<<1), /**< non-cachable memory */ - TBM_BO_WC = (1<<2), /**< write-combine memory */ - TBM_BO_VENDOR = (0xffff0000), /**< vendor specific memory: it depends on the backend */ + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif + */ +enum TBM_BO_FLAGS { + TBM_BO_DEFAULT = 0, /**< default memory: it depends on the backend */ + TBM_BO_SCANOUT = (1 << 0), /**< scanout memory */ + TBM_BO_NONCACHABLE = (1 << 1), /**< non-cachable memory */ + TBM_BO_WC = (1 << 2), /**< write-combine memory */ + TBM_BO_VENDOR = (0xffff0000), /**< vendor specific memory: it depends on the backend */ }; - /** * @brief Enumeration for tbm error type. * @since_tizen 2.4 */ -typedef enum -{ - TBM_ERROR_NONE = TIZEN_ERROR_NONE, /**< Successful */ - TBM_ERROR_BO_LOCK_FAILED = TIZEN_ERROR_TBM|0x0101, /**< tbm_bo lock failed */ - TBM_ERROR_BO_MAP_FAILED = TIZEN_ERROR_TBM|0x0102, /**< tbm_bo map failed */ +typedef enum { + TBM_ERROR_NONE = 0, /**< Successful */ + TBM_BO_ERROR_GET_FD_FAILED = TBM_ERROR_BASE | 0x0101, /**< failed to get fd failed */ + TBM_BO_ERROR_HEAP_ALLOC_FAILED = TBM_ERROR_BASE | 0x0102, /**< failed to allocate the heap memory */ + TBM_BO_ERROR_LOAD_MODULE_FAILED = TBM_ERROR_BASE | 0x0103,/**< failed to load module*/ + TBM_BO_ERROR_THREAD_INIT_FAILED = TBM_ERROR_BASE | 0x0104,/**< failed to initialize the pthread */ + TBM_BO_ERROR_BO_ALLOC_FAILED = TBM_ERROR_BASE | 0x0105, /**< failed to allocate tbm_bo */ + TBM_BO_ERROR_INIT_STATE_FAILED = TBM_ERROR_BASE | 0x0106, /**< failed to initialize the state of tbm_bo */ + TBM_BO_ERROR_IMPORT_FAILED = TBM_ERROR_BASE | 0x0107, /**< failed to import the handle of tbm_bo */ + TBM_BO_ERROR_IMPORT_FD_FAILED = TBM_ERROR_BASE | 0x0108, /**< failed to import fd of tbm_bo */ + TBM_BO_ERROR_EXPORT_FAILED = TBM_ERROR_BASE | 0x0109, /**< failed to export the handle of the tbm_bo */ + TBM_BO_ERROR_EXPORT_FD_FAILED = TBM_ERROR_BASE | 0x01010, /**< failed to export fd of tbm_bo */ + TBM_BO_ERROR_GET_HANDLE_FAILED = TBM_ERROR_BASE | 0x0111, /**< failed to get the tbm_bo_handle */ + TBM_BO_ERROR_LOCK_FAILED = TBM_ERROR_BASE | 0x0112, /**< failed to lock the tbm_bo */ + TBM_BO_ERROR_MAP_FAILED = TBM_ERROR_BASE | 0x0113, /**< failed to map the tbm_bo to get the tbm_bo_handle */ + TBM_BO_ERROR_UNMAP_FAILED = TBM_ERROR_BASE | 0x0114, /**< failed to unmap the tbm_bo */ + TBM_BO_ERROR_SWAP_FAILED = TBM_ERROR_BASE | 0x0115, /**< failed to swap the tbm_bos */ + TBM_BO_ERROR_DUP_FD_FAILED = TBM_ERROR_BASE | 0x0116, /**< failed to duplicate fd */ } tbm_error_e; +/** + * @brief Enumeration of tbm buffer manager capability. + * @since_tizen 2.4 + */ +enum TBM_BUFMGR_CAPABILITY { + TBM_BUFMGR_CAPABILITY_NONE = 0, /**< Not Support capability*/ + TBM_BUFMGR_CAPABILITY_SHARE_KEY = (1 << 0), /**< Support sharing buffer by tbm key */ + TBM_BUFMGR_CAPABILITY_SHARE_FD = (1 << 1), /**< Support sharing buffer by tbm fd */ + TBM_BUFMGR_CAPABILITY_TBM_SYNC = (1 << 2), /**< Support tbm sync */ +}; #ifdef __cplusplus extern "C" { @@ -185,7 +191,7 @@ extern "C" { * BUFMGR_MAP_CACHE default is true\n * true : use map cache flushing\n * false : to use map cache flushing - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] fd : file descripter of the system buffer manager * @return a buffer manager * @retval #tbm_bufmgr @@ -195,7 +201,6 @@ extern "C" { #include int bufmgr_fd; - setenv("BUFMGR_LOCK_TYPE", "once", 1); setenv("BUFMGR_MAP_CACHE", "true", 1); @@ -207,11 +212,11 @@ extern "C" { tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bufmgr tbm_bufmgr_init (int fd); +tbm_bufmgr tbm_bufmgr_init(int fd); /** * @brief Deinitializes the buffer manager. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bufmgr : the buffer manager * @see tbm_bufmgr_init() * @par Example @@ -220,14 +225,20 @@ tbm_bufmgr tbm_bufmgr_init (int fd); int bufmgr_fd; tbm_bufmgr bufmgr; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); + if (!bufmgr) + { + error = tbm_get_last_error (); + ... + } .... tbm_bufmgr_deinit (bufmgr); @endcode */ -void tbm_bufmgr_deinit (tbm_bufmgr bufmgr); +void tbm_bufmgr_deinit(tbm_bufmgr bufmgr); /* Functions for bo */ @@ -240,7 +251,7 @@ void tbm_bufmgr_deinit (tbm_bufmgr bufmgr); * #TBM_BO_NONCACHABLE indecates non-cachable memory\n * #TBM_BO_WC indecates write-combine memory\n * #TBM_BO_VENDOR indecates vendor specific memory: it depends on the tbm backend - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bufmgr : the buffer manager * @param[in] size : the size of buffer object * @param[in] flags : the flags of memory type @@ -253,20 +264,26 @@ void tbm_bufmgr_deinit (tbm_bufmgr bufmgr); int bufmgr_fd; tbm_bufmgr bufmgr; tbm_bo; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); + if (!bo) + { + error = tbm_get_last_error (); + ... + } .... tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo tbm_bo_alloc (tbm_bufmgr bufmgr, int size, int flags); +tbm_bo tbm_bo_alloc(tbm_bufmgr bufmgr, int size, int flags); /** * @brief Increases the reference count of bo. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @return a buffer object * @retval #tbm_bo @@ -291,11 +308,11 @@ tbm_bo tbm_bo_alloc (tbm_bufmgr bufmgr, int size, int flags); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo tbm_bo_ref (tbm_bo bo); +tbm_bo tbm_bo_ref(tbm_bo bo); /** * @brief Decreases the reference count of bo - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @see tbm_bo_ref() * @see tbm_bo_alloc() @@ -316,7 +333,7 @@ tbm_bo tbm_bo_ref (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -void tbm_bo_unref (tbm_bo bo); +void tbm_bo_unref(tbm_bo bo); /** * @brief Maps the buffer object according to the device type and the option. @@ -333,7 +350,7 @@ void tbm_bo_unref (tbm_bo bo); * #TBM_OPTION_READ indecates the accss option to read.\n * #TBM_OPTION_WRITE indecates the access option to write.\n * #TBM_OPTION_VENDOR indecates the vendor specific option that depends on the backend. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] device : the device type to get a handle * @param[in] opt : the option to access the buffer object @@ -361,7 +378,7 @@ void tbm_bo_unref (tbm_bo bo); handle = tbm_bo_map (bo, TBM_DEVICE_2D, TBM_OPTION_READ|TBM_OPTION_WRITE); if (handle.ptr == NULL) { - error = get_last_result (); + error = tbm_get_last_error (); ... } @@ -372,11 +389,11 @@ void tbm_bo_unref (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo_handle tbm_bo_map (tbm_bo bo, int device, int opt); +tbm_bo_handle tbm_bo_map(tbm_bo bo, int device, int opt); /** * @brief Unmaps the buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @return 1 if this function succeeds, otherwise 0. * @see tbm_bo_map() @@ -403,7 +420,7 @@ tbm_bo_handle tbm_bo_map (tbm_bo bo, int device, int opt); tbm_bufmgr_deinit (bufmgr); @endcode */ -int tbm_bo_unmap (tbm_bo bo); +int tbm_bo_unmap(tbm_bo bo); /** * @brief Gets the tbm_bo_handle according to the device type. @@ -414,7 +431,7 @@ int tbm_bo_unmap (tbm_bo bo); * #TBM_DEVICE_3D indecates the 3D memory handle.\n * #TBM_DEVICE_CPU indecates the virtual memory handle.\n * #TBM_DEVICE_MM indecates the multimedia handle. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] device : the device type to get a handle * @return the handle of the buffer object @@ -427,6 +444,7 @@ int tbm_bo_unmap (tbm_bo bo); tbm_bufmgr bufmgr; tbm_bo bo; tbm_bo_handle handle; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); @@ -434,6 +452,11 @@ int tbm_bo_unmap (tbm_bo bo); ... handle = tbm_bo_get_handle (bo, TBM_DEVICE_2D); + if (handle.ptr == NULL) + { + error = tbm_get_last_error (); + ... + } ... @@ -441,12 +464,12 @@ int tbm_bo_unmap (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo_handle tbm_bo_get_handle (tbm_bo bo, int device); +tbm_bo_handle tbm_bo_get_handle(tbm_bo bo, int device); /** * @brief Exports the buffer object by key. * @details The tbm_bo can be exported to the anther process with the unique key associated with the the tbm_bo. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @return key associated with the buffer object * @retval #tbm_key @@ -459,10 +482,16 @@ tbm_bo_handle tbm_bo_get_handle (tbm_bo bo, int device); tbm_bufmgr bufmgr; tbm_bo; tbm_key key; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); key = tbm_bo_export (bo); + if (key == 0) + { + error = tbm_get_last_error (); + ... + } ... @@ -470,12 +499,13 @@ tbm_bo_handle tbm_bo_get_handle (tbm_bo bo, int device); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_key tbm_bo_export (tbm_bo bo); +tbm_key tbm_bo_export(tbm_bo bo); /** * @brief Exports the buffer object by fd. * @details The tbm_bo can be exported to the anther process with the unique fd associated with the the tbm_bo. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif + * @remarks You must release the fd using close(). * @param[in] bo : the buffer object * @return fd associated with the buffer object * @retval #tbm_fd @@ -488,10 +518,16 @@ tbm_key tbm_bo_export (tbm_bo bo); tbm_fd bo_fd; tbm_bufmgr bufmgr; tbm_bo; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); bo_fd = tbm_bo_export (bo); + if (bo_fd == 0) + { + error = tbm_get_last_error (); + ... + } ... @@ -499,12 +535,12 @@ tbm_key tbm_bo_export (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_fd tbm_bo_export_fd (tbm_bo bo); +tbm_fd tbm_bo_export_fd(tbm_bo bo); /** * @brief Imports the buffer object associated with the key. * @details The reference count of the tbm_bo is 1. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bufmgr : the buffer manager * @param[in] key : the key associated with the buffer object * @return a buffer object @@ -518,11 +554,17 @@ tbm_fd tbm_bo_export_fd (tbm_bo bo); int bo_key; tbm_bufmgr bufmgr; tbm_bo; + tbm_error_e error; ... bufmgr = tbm_bufmgr_init (bufmgr_fd); - bo = tbm_bo_import (key); + bo = tbm_bo_import (bufmgr, key); + if (bo == NULL) + { + error = tbm_get_last_error (); + ... + } ... @@ -530,12 +572,13 @@ tbm_fd tbm_bo_export_fd (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo tbm_bo_import (tbm_bufmgr bufmgr, tbm_key key); +tbm_bo tbm_bo_import(tbm_bufmgr bufmgr, tbm_key key); /** * @brief Imports the buffer object associated with the fd. * @details The reference count of the tbm_bo is 1. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif + * @remarks You must release the fd using close(). * @param[in] bufmgr : the buffer manager * @param[in] fd : the fd associated with the buffer object * @return a buffer object @@ -549,11 +592,17 @@ tbm_bo tbm_bo_import (tbm_bufmgr bufmgr, tbm_key key); tbm_fd bo_fd; tbm_bufmgr bufmgr; tbm_bo bo; + tbm_error_e error; ... bufmgr = tbm_bufmgr_init (bufmgr_fd); bo = tbm_bo_import_fd (bo_fd); + if (bo == 0) + { + error = tbm_get_last_error (); + ... + } ... @@ -561,11 +610,11 @@ tbm_bo tbm_bo_import (tbm_bufmgr bufmgr, tbm_key key); tbm_bufmgr_deinit (bufmgr); @endcode */ -tbm_bo tbm_bo_import_fd (tbm_bufmgr bufmgr, tbm_fd fd); +tbm_bo tbm_bo_import_fd(tbm_bufmgr bufmgr, tbm_fd fd); /** * @brief Gets the size of a bo. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @return 1 if this function succeeds, otherwise 0. * @see tbm_bo_alloc() @@ -588,11 +637,11 @@ tbm_bo tbm_bo_import_fd (tbm_bufmgr bufmgr, tbm_fd fd); tbm_bufmgr_deinit (bufmgr); @endcode */ -int tbm_bo_size (tbm_bo bo); +int tbm_bo_size(tbm_bo bo); /** * @brief Gets the state where the buffer object is locked. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @return 1 if this bo is locked, otherwise 0. * @see tbm_bo_map() @@ -619,11 +668,11 @@ int tbm_bo_size (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -int tbm_bo_locked (tbm_bo bo); +int tbm_bo_locked(tbm_bo bo); /** * @brief Swaps the buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo1 : the buffer object * @param[in] bo2 : the buffer object * @return 1 if this function succeeds, otherwise 0. @@ -636,6 +685,7 @@ int tbm_bo_locked (tbm_bo bo); tbm_bo bo1; tbm_bo bo2; int ret; + tbm_error_e error; bufmgr = tbm_bufmgr_init (bufmgr_fd); bo1 = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); @@ -644,6 +694,11 @@ int tbm_bo_locked (tbm_bo bo); ... ret = tbm_bo_swap (bo1, bo2); + if (ret == 0) + { + error = tbm_get_last_error (); + ... + } ... @@ -652,23 +707,22 @@ int tbm_bo_locked (tbm_bo bo); tbm_bufmgr_deinit (bufmgr); @endcode */ -int tbm_bo_swap (tbm_bo bo1, tbm_bo bo2); - +int tbm_bo_swap(tbm_bo bo1, tbm_bo bo2); /** * @brief Called when the user data is deleted in buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] user_data User_data to be passed to callback function * @pre The callback must be registered using tbm_bo_add_user_data().\n * tbm_bo_delete_user_data() must be called to invoke this callback. * @see tbm_bo_add_user_data() * @see tbm_bo_delete_user_data() */ -typedef void (*tbm_data_free)(void *user_data); +typedef void (*tbm_data_free) (void *user_data); /** * @brief Adds a user_data to the buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] key : the key associated with the user_data * @param[in] data_free_func : the function pointer to free the user_data @@ -719,11 +773,12 @@ typedef void (*tbm_data_free)(void *user_data); @endcode */ -int tbm_bo_add_user_data (tbm_bo bo, unsigned long key, tbm_data_free data_free_func); +int tbm_bo_add_user_data(tbm_bo bo, unsigned long key, + tbm_data_free data_free_func); /** * @brief Deletes the user_data in the buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] key : the key associated with the user_date * @return 1 if this function succeeds, otherwise 0. @@ -770,11 +825,11 @@ int tbm_bo_add_user_data (tbm_bo bo, unsigned long key, tbm_data_free data_fr } @endcode */ -int tbm_bo_delete_user_data (tbm_bo bo, unsigned long key); +int tbm_bo_delete_user_data(tbm_bo bo, unsigned long key); /** * @brief Sets a user_date to the buffer object. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] key : the key associated with the user_date * @param[in] data : a pointer of the user_data @@ -822,11 +877,11 @@ int tbm_bo_delete_user_data (tbm_bo bo, unsigned long key); } @endcode */ -int tbm_bo_set_user_data (tbm_bo bo, unsigned long key, void* data); +int tbm_bo_set_user_data(tbm_bo bo, unsigned long key, void *data); /** * @brief Gets a user_data from the buffer object with the key. - * @since_tizen 2.3 + * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif * @param[in] bo : the buffer object * @param[in] key : the key associated with the user_date * @param[out] data : to get the user data @@ -874,11 +929,161 @@ int tbm_bo_set_user_data (tbm_bo bo, unsigned long key, void* data); } @endcode */ -int tbm_bo_get_user_data (tbm_bo bo, unsigned long key, void** data); +int tbm_bo_get_user_data(tbm_bo bo, unsigned long key, void **data); + +/** + * @brief Gets the latest tbm_error. + * @since_tizen 2.4 + * @return the latest tbm_error + * @par Example + @code + #include + + int bufmgr_fd; + tbm_bufmgr bufmgr; + tbm_bo bo; + tbm_bo_handle handle; + tbm_error_e error; + + bufmgr = tbm_bufmgr_init (bufmgr_fd); + bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); + if (!bo) + { + error = tbm_get_last_error (); + ... + } + + ... + + handle = tbm_bo_map (bo, TBM_DEVICE_2D, TBM_OPTION_READ|TBM_OPTION_WRITE); + if (handle.ptr == NULL) + { + error = tbm_get_last_error (); + ... + } + + ... + + tbm_bo_unmap (bo); + tbm_bo_unref (bo); + tbm_bufmgr_deinit (bufmgr); + @endcode + */ +tbm_error_e tbm_get_last_error(void); + +/** + * @brief Gets the tbm buffer capability. + * @since_tizen 2.4 + * @param[in] bufmgr : the buffer manager + * @return the tbm bufmgr capability + * @par Example + @code + #include + + int bufmgr_fd; + tbm_bufmgr bufmgr; + unsigned int capability; + + bufmgr = tbm_bufmgr_init (bufmgr_fd); + + capability = tbm_bufmgr_get_capability (bufmgr); + + tbm_bufmgr_deinit (bufmgr); + @endcode + */ +unsigned int tbm_bufmgr_get_capability(tbm_bufmgr bufmgr); + +/** + * @brief Gets the tbm bo flags. + * @since_tizen 2.4 + * @param[in] bo : the buffer object + * @return the tbm bo flags + * @see TBM_BO_FLAGS + * @par Example + @code + #include + + int bufmgr_fd; + tbm_bufmgr bufmgr; + tbm_bo; + int flags; + + bufmgr = tbm_bufmgr_init (bufmgr_fd); + bo = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT); + flags = tbm_bo_get_flags (bo); + + ... + + tbm_bo_unref (bo); + tbm_bufmgr_deinit (bufmgr); + + @endcode + */ +int tbm_bo_get_flags(tbm_bo bo); + +/** + * @brief Print out the information of tbm_bos. + * @since_tizen 3.0 + * @param[in] bufmgr : the buffer manager + */ +void tbm_bufmgr_debug_show(tbm_bufmgr bufmgr); + +/** + * @brief Get string with the information of tbm_bos. + * @since_tizen 3.0 + * @param[in] bufmgr : the buffer manager + * @return sting with info if this function succeeds, otherwise NULL. It has to be free by user. + */ +char * tbm_bufmgr_debug_tbm_info_get(tbm_bufmgr bufmgr); + +/** + * @brief Print out the trace of tbm_bos. + * @since_tizen 3.0 + * @param[in] bufmgr : the buffer manager + * @param[in] onoff : 1 is on, and 0 is off + */ +void tbm_bufmgr_debug_trace(tbm_bufmgr bufmgr, int onoff); + +/** + * @brief Dump all tbm surfaces + * @param[in] path : the given dump path + * @return 1 if this function succeeds, otherwise 0. + */ +int tbm_bufmgr_debug_dump_all(char *path); + +/** + * @brief Start the dump debugging for queue. + * @since_tizen 3.0 + * @param[in] path : the given dump path + * @param[in] count : the dump count number + * @param[in] onoff : 1 is on, and 0 is off, if onoff==0 path and count are ignored + * @return 1 if this function succeeds, otherwise 0. + */ +int tbm_bufmgr_debug_queue_dump(char *path, int count, int onoff); + +/** + * @brief Set scale factor for the nearest calling tbm_bufmgr_debug_dump_all() or tbm_bufmgr_debug_queue_dump() + * @since_tizen 3.0 + * @param[in] scale : the scale factor, 0 - disable scaling + * @par Example + @code + #include + + // Dump all surface with scale factor 0.5 + tbm_bufmgr_debug_dump_set_scale(0.5); + tbm_bufmgr_debug_dump_all("/tmp/"); + + // Start the dump debugging for queue with scale factor 0.5 + tbm_bufmgr_debug_dump_set_scale(0.2); + tbm_bufmgr_debug_queue_dump("/tmp/", 10, 1); + + @endcode + */ +void tbm_bufmgr_debug_dump_set_scale(double scale); + +int tbm_bufmgr_bind_native_display(tbm_bufmgr bufmgr, void *NativeDisplay); #ifdef __cplusplus } #endif - -#endif /* _TBM_BUFMGR_H_ */ - +#endif /* _TBM_BUFMGR_H_ */