tbm_surface_queue: pending delete queue_node until released queue
[platform/core/uifw/libtbm.git] / src / tbm_surface_internal.h
old mode 100755 (executable)
new mode 100644 (file)
index 6e9ae20..12dd3b1
@@ -65,7 +65,8 @@ extern "C" {
    tbm_surface_bufmgr_deinit (bufmgr);
    @endcode
  */
-int tbm_surface_internal_query_supported_formats (uint32_t **formats, uint32_t *num);
+int tbm_surface_internal_query_supported_formats(uint32_t **formats,
+                                                uint32_t *num);
 
 /**
  * @brief Creates the tbm_surface with memory type.
@@ -103,7 +104,8 @@ int tbm_surface_internal_query_supported_formats (uint32_t **formats, uint32_t *
    tbm_surface_bufmgr_deinit (bufmgr);
    @endcode
  */
-tbm_surface_h tbm_surface_internal_create_with_flags (int width, int height, int format, int flags);
+tbm_surface_h tbm_surface_internal_create_with_flags(int width, int height,
+                                                    int format, int flags);
 
 /**
  * @brief Creates the tbm_surface with buffer objects.
@@ -133,7 +135,7 @@ tbm_surface_h tbm_surface_internal_create_with_flags (int width, int height, int
    bufmgr = tbm_bufmgr_init (bufmgr_fd);
    bo[0] = tbm_bo_alloc (bufmgr, 128 * 128, TBM_BO_DEFAULT);
 
-   info.with = 128;
+   info.width = 128;
    info.height = 128;
    info.format = TBM_FORMAT_ARGB8888;
    info.bpp = 32;
@@ -151,32 +153,32 @@ tbm_surface_h tbm_surface_internal_create_with_flags (int width, int height, int
    tbm_surface_bufmgr_deinit (bufmgr);
    @endcode
  */
-tbm_surface_h tbm_surface_internal_create_with_bos (tbm_surface_info_s *info, tbm_bo *bos, int num);
-
+tbm_surface_h tbm_surface_internal_create_with_bos(tbm_surface_info_s *info,
+                                                  tbm_bo *bos, int num);
 
 /**
  * @brief Destroy the tbm surface
     TODO:
  */
-void tbm_surface_internal_destroy (tbm_surface_h surface);
+void tbm_surface_internal_destroy(tbm_surface_h surface);
 
 /**
  * @brief reference the tbm surface
     TODO:
  */
-void tbm_surface_internal_ref (tbm_surface_h surface);
+void tbm_surface_internal_ref(tbm_surface_h surface);
 
 /**
  * @brief unreference the tbm surface
     TODO:
  */
-void tbm_surface_internal_unref (tbm_surface_h surface);
+void tbm_surface_internal_unref(tbm_surface_h surface);
 
 /**
  * @brief Gets the number of buffer objects associated with the tbm_surface.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @param[in] surface : the tbm_surface_h
- * @return the number of buffer objects associated with the tbm_surface_h, otherwise -1.
+ * @return the number of buffer objects associated with the tbm_surface_h, otherwise 0.
  * @par Example
    @code
    #include <tbm_surface.h>
@@ -193,7 +195,7 @@ void tbm_surface_internal_unref (tbm_surface_h surface);
    tbm_surface_destroy (surface);
    @endcode
  */
-int tbm_surface_internal_get_num_bos (tbm_surface_h surface);
+int tbm_surface_internal_get_num_bos(tbm_surface_h surface);
 
 /**
  * @brief Gets the buffor object by the bo_index.
@@ -223,13 +225,13 @@ int tbm_surface_internal_get_num_bos (tbm_surface_h surface);
    tbm_surface_destroy (surface);
    @endcode
  */
-tbm_bo tbm_surface_internal_get_bo (tbm_surface_h surface, int bo_idx);
+tbm_bo tbm_surface_internal_get_bo(tbm_surface_h surface, int bo_idx);
 
 /**
  * @brief Gets the size of the surface.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @param[in] surface : the tbm_surface_h
- * @return the size of tbm_surface, otherwise -1.
+ * @return the size of tbm_surface, otherwise 0.
  * @par Example
    @code
    #include <tbm_surface.h>
@@ -244,16 +246,16 @@ tbm_bo tbm_surface_internal_get_bo (tbm_surface_h surface, int bo_idx);
    tbm_surface_destroy (surface);
    @endcode
  */
-int tbm_surface_internal_get_size (tbm_surface_h surface);
+unsigned int tbm_surface_internal_get_size(tbm_surface_h surface);
 
 /**
  * @brief Gets size, offset and pitch data of plane by the plane_index.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  * @param[in] surface : the tbm_surface_h
  * @param[in] plane_idx : the bo index in the the tbm_surface
- * @param[out] size : the size of plan in tbm_surface
- * @param[out] offset : the offset of plan in tbm_surface
- * @param[out] pitch : the pitch of plan in tbm_surface
+ * @param[out] size : the size of plane in tbm_surface
+ * @param[out] offset : the offset of plane in tbm_surface
+ * @param[out] pitch : the pitch of plane in tbm_surface
  * @return 1 if this function succeeds, otherwise 0.
  * @par Example
    @code
@@ -264,7 +266,7 @@ int tbm_surface_internal_get_size (tbm_surface_h surface);
    uint32_t size, offset, pitch;
    int ret;
 
-   surface = tbm_surfacel_create (128, 128, TBM_FORMAT_YUV420);
+   surface = tbm_surface_create (128, 128, TBM_FORMAT_YUV420);
    ret = tbm_surface_internal_get_plane_data (surface, 1, &size, &offset, &pitch);
 
    ...
@@ -272,7 +274,8 @@ int tbm_surface_internal_get_size (tbm_surface_h surface);
    tbm_surface_destroy (surface);
    @endcode
  */
-int tbm_surface_internal_get_plane_data (tbm_surface_h surface, int plane_idx, uint32_t *size, uint32_t *offset, uint32_t *pitch);
+int tbm_surface_internal_get_plane_data(tbm_surface_h surface, int plane_idx,
+                                       uint32_t *size, uint32_t *offset, uint32_t *pitch);
 
 /**
  * @brief Gets number of planes by the format.
@@ -292,7 +295,7 @@ int tbm_surface_internal_get_plane_data (tbm_surface_h surface, int plane_idx, u
 
    @endcode
  */
-int tbm_surface_internal_get_num_planes (tbm_format format);
+int tbm_surface_internal_get_num_planes(tbm_format format);
 
 /**
  * @brief Gets bpp by the format.
@@ -312,14 +315,14 @@ int tbm_surface_internal_get_num_planes (tbm_format format);
 
    @endcode
  */
-int tbm_surface_internal_get_bpp (tbm_format format);
+int tbm_surface_internal_get_bpp(tbm_format format);
 
 /**
  * @brief Gets bo index of plane.
  * @since_tizen 2.4
  * @param[in] surface : the tbm_surface_h
- * @param[in] plane_idx : the bo index in the the tbm_surface
- * @return bo index of plane, otherwise -1.
+ * @param[in] plane_idx : the bo index in the tbm_surface
+ * @return bo index of plane, otherwise 0.
  * @par Example
    @code
    #include <tbm_surface.h>
@@ -328,14 +331,14 @@ int tbm_surface_internal_get_bpp (tbm_format format);
    int bo_idx;
    tbm_surface_h surface;
 
-   surface = tbm_surfacel_create (128, 128, TBM_FORMAT_YUV420);
+   surface = tbm_surface_create (128, 128, TBM_FORMAT_YUV420);
    bo_idx = tbm_surface_internal_get_plane_bo_idx (surface, 0);
 
    ...
 
    @endcode
  */
-int tbm_surface_internal_get_plane_bo_idx (tbm_surface_h surface, int plane_idx);
+int tbm_surface_internal_get_plane_bo_idx(tbm_surface_h surface, int plane_idx);
 
 /**
  * @brief Set the pid to the tbm_surface for debugging.
@@ -343,11 +346,182 @@ int tbm_surface_internal_get_plane_bo_idx (tbm_surface_h surface, int plane_idx)
  * @param[in] surface : the tbm_surface_h
  * @param[in] pid : the pid
  */
-void tbm_surface_internal_set_debug_pid(tbm_surface_h surface, unsigned int pid);
+void tbm_surface_internal_set_debug_pid(tbm_surface_h surface,
+                                       unsigned int pid);
+
+/**
+ * @brief Set the string value to the tbm_surface for debugging.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm_surface_h
+ * @param[in] key : the key for debugging
+ * @param[in] value : the value for debugging
+ */
+int tbm_surface_internal_set_debug_data(tbm_surface_h surface,
+                                       char *key, char *value);
+
+/**
+ * @brief Adds a user_data to the tbm surface.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm surface.
+ * @param[in] key : the key associated with the user_data
+ * @param[in] data_free_func : the function pointer to free the user_data
+ * @return 1 if this function succeeds, otherwise 0.
+ * @post the tbm_surface_data_free() will be called under certain conditions, after calling tbm_surface_internal_delete_user_data().
+ * @see tbm_surface_free()
+ * @see tbm_surface_set_user_data()
+ * @see tbm_surface_get_user_data()
+ * @see tbm_surface_delete_user_data()
+ */
+int tbm_surface_internal_add_user_data(tbm_surface_h surface, unsigned long key,
+                                      tbm_data_free data_free_func);
+
+/**
+ * @brief Sets a user_date to the tbm surface.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm surface.
+ * @param[in] key : the key associated with the user_date
+ * @param[in] data : a pointer of the user_data
+ * @return 1 if this function succeeds, otherwise 0.
+ */
+int tbm_surface_internal_set_user_data(tbm_surface_h surface, unsigned long key,
+                                      void *data);
+
+/**
+ * @brief Gets a user_data from the tbm surface with the key.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm surface.
+ * @param[in] key : the key associated with the user_date
+ * @param[out] data : to get the user data
+ * @return 1 if this function succeeds, otherwise 0.
+ */
+int tbm_surface_internal_get_user_data(tbm_surface_h surface, unsigned long key,
+                                      void **data);
+
+/**
+ * @brief Deletes the user_data in the tbm surface.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm surface.
+ * @param[in] key : the key associated with the user_date
+ * @return 1 if this function succeeds, otherwise 0.
+ */
+int tbm_surface_internal_delete_user_data(tbm_surface_h surface,
+                                         unsigned long key);
+
+/**
+ * @brief Start the dump debugging.
+ * @since_tizen 3.0
+ * @param[in] path : the given dump path
+ * @param[in] w : the width of dump image
+ * @param[in] h : the height of dump image
+ * @param[in] count : the dump count number
+ * @see #tdm_helper_dump_stop()
+ */
+void tbm_surface_internal_dump_start(char *path, int w, int h, int count);
+
+/**
+ * @brief Start the dump with scale debugging.
+ * @details
+ * Dump with scale supports only if a buffer has below formats.
+ * - TBM_FORMAT_ARGB8888
+ * - TBM_FORMAT_XRGB8888
+ * @since_tizen 4.0
+ * @param[in] path : the given dump path
+ * @param[in] w : the width of dump image
+ * @param[in] h : the height of dump image
+ * @param[in] count : the dump count number
+ * @param[in] scale : the scale factor
+ * @see #tdm_helper_dump_stop()
+ */
+void tbm_surface_internal_dump_with_scale_start(char *path, int w, int h,
+                                         int count, double scale);
+
+/**
+ * @brief End the dump debugging.
+ * @since_tizen 3.0
+ * @see #tdm_helper_dump_start()
+ */
+void tbm_surface_internal_dump_end(void);
+
+/**
+ * @brief Dump a buffer
+ * @details
+ * This function supports only if a buffer has below formats.
+ * - TBM_FORMAT_ARGB8888
+ * - TBM_FORMAT_XRGB8888
+ * - TBM_FORMAT_YVU420
+ * - TBM_FORMAT_YUV420
+ * - TBM_FORMAT_NV12
+ * - TBM_FORMAT_NV21
+ * - TBM_FORMAT_YUYV
+ * - TBM_FORMAT_UYVY
+ * The filename extension should be "png" for TBM_FORMAT_ARGB8888 and TBM_FORMAT_XRGB8888
+ * or "yuv" for YUV formats.
+ * @param[in] surface : a tbm surface
+ * @param[in] name : a string used by a file name
+ */
+void tbm_surface_internal_dump_buffer(tbm_surface_h surface, const char *name);
+
+/**
+ * @brief Dump a shared memory buffer
+ * @details
+ * This function supports shared memory buffer dump.
+ * @param[in] ptr : a pointer of dump buffer
+ * @param[in] w : a width of dump buffer
+ * @param[in] h : a height of dump buffer
+ * @param[in] stride : a stride of dump buffer
+ * @param[in] name : a string used by a file name
+ */
+void tbm_surface_internal_dump_shm_buffer(void *ptr, int w, int h, int stride, const char *name);
+
+/**
+ * @brief check valid tbm surface.
+ * @since_tizen 3.0
+ * @param[in] surface : the tbm surface.
+ * @return 1 if surface is valid, otherwise 0.
+ */
+int tbm_surface_internal_is_valid(tbm_surface_h surface);
+
+/**
+ * @brief Capture a buffer
+ * @details
+ * This function supports only if a buffer has below formats.
+ * - TBM_FORMAT_ARGB8888
+ * - TBM_FORMAT_XRGB8888
+ * - TBM_FORMAT_YVU420
+ * - TBM_FORMAT_YUV420
+ * - TBM_FORMAT_NV12
+ * - TBM_FORMAT_NV21
+ * - TBM_FORMAT_YUYV
+ * - TBM_FORMAT_UYVY
+ * The type should be "png" for TBM_FORMAT_ARGB8888 and TBM_FORMAT_XRGB8888
+ * or "yuv" for YUV formats.
+ * @param[in] surface : a tbm surface
+ * @param[in] path : the given dump path
+ * @param[in] name : a string used by a file name
+ * @param[in] type : a string used by a file type ex)png, yuv
+ * @return 1 if success, otherwise 0.
+ */
+int tbm_surface_internal_capture_buffer(tbm_surface_h surface, const char *path,
+                                      const char *name, const char *type);
+
+/**
+ * @brief Capture a shared memory buffer
+ * @details
+ * This function supports shared memory buffer dump.
+ * The type should be "png".
+ * @param[in] ptr : a pointer of dump buffer
+ * @param[in] w : a width of dump buffer
+ * @param[in] h : a height of dump buffer
+ * @param[in] stride : a stride of dump buffer
+ * @param[in] path : the given dump path
+ * @param[in] name : a string used by a file name
+ * @param[in] type : a string used by a file type ex)png, yuv
+ * @return 1 if success, otherwise 0.
+ */
+int tbm_surface_internal_capture_shm_buffer(void *ptr, int w, int h, int stride,
+                                      const char *path, const char *name, const char *type);
 
 #ifdef __cplusplus
 }
 #endif
-
-#endif /* _TBM_SURFACE_INTERNAL_H_ */
-
+#endif                                                 /* _TBM_SURFACE_INTERNAL_H_ */