typedef void (*tbm_surface_queue_notify_cb)(tbm_surface_queue_h surface_queue,
void *data);
-typedef tbm_surface_h (*tbm_surface_alloc_cb)(tbm_surface_queue_h surface_queue,
- void *data);
-
-typedef tbm_surface_h (*tbm_surface_alloc_cb2)(tbm_surface_queue_h surface_queue,
- int width, int height, int format, int flags, void *data);
-
-typedef void (*tbm_surface_free_cb)(tbm_surface_queue_h surface_queue,
- void *data, tbm_surface_h surface);
-
typedef void (*tbm_surface_queue_trace_cb)(tbm_surface_queue_h surface_queue,
tbm_surface_h surface, tbm_surface_queue_trace trace, void *data);
*/
void tbm_surface_queue_destroy(tbm_surface_queue_h surface_queue);
-/**
- * @brief Sets allocate callback to the tbm_surface_queue.
- * alloc_cb is called when the tbm_surface_queue try to allocate the tbm_surface and
- * the tbm_surface_queue dequeue the tbm_surface returned in alloc_cb
- * free_cb is called when the tbm_surface_queue unreference the tbm_surface.
- *
- * @remarks You must use either tbm_surface_queue_set_alloc_cb or tbm_surface_queue_set_alloc_cb2
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] alloc_cb The callback of allocate
- * @param[in] free_cb The callback of free
- * @param[in] data The user data
- *
- * @return #TBM_SURFACE_QUEUE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb(
- tbm_surface_queue_h surface_queue,
- tbm_surface_alloc_cb alloc_cb,
- tbm_surface_free_cb free_cb,
- void *data);
-
-/**
- * @brief Sets allocate callback to the tbm_surface_queue.
- * alloc_cb2 is called when the tbm_surface_queue try to allocate the tbm_surface and
- * the tbm_surface_queue dequeue the tbm_surface returned in alloc_cb2
- * free_cb is called when the tbm_surface_queue unreference the tbm_surface.
- *
- * @remarks You must use either tbm_surface_queue_set_alloc_cb or tbm_surface_queue_set_alloc_cb2
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] alloc_cb2 The callback of allocate
- * @param[in] free_cb The callback of free
- * @param[in] data The user data
- *
- * @return #TBM_SURFACE_QUEUE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb2(
- tbm_surface_queue_h surface_queue,
- tbm_surface_alloc_cb2 alloc_cb2,
- tbm_surface_free_cb free_cb,
- void *data);
-
/**
* @brief Gets the width of the tbm_surface_queue.
*
tbm_surface_queue_h surface_queue,
tbm_surface_h *surfaces, int *num);
-tbm_surface_queue_error_e tbm_surface_queue_get_acquirable_surfaces(
- tbm_surface_queue_h surface_queue,
- tbm_surface_h *surfaces, int *num);
-
/**
- * @brief Gets number of the tbm_surfaces by tbm_surface_queue_trace.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] trace The #tbm_surface_queue_trace
- * @param[out] num The number of the surfaces
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- *
- *
- * @par Example
- @code
- #include <tbm_surface_queue.h>
-
- tbm_surface_queue_h surface_queue;
- int num;
- tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
-
- ...
-
- tsq_err = tbm_surface_queue_get_trace_surface_num(surface_queue, TBM_SURFACE_QUEUE_TRACE_DEQUEUE, &num);
- if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
- ...
- }
-
- ...
-
- @endcode
- */
-tbm_surface_queue_error_e tbm_surface_queue_get_trace_surface_num(
- tbm_surface_queue_h surface_queue, tbm_surface_queue_trace trace, int *num);
-
-/**
- * @brief Sets size of the tbm_surface_queue.
+ * @brief Sets modes of the tbm_surface_queue.
*
* @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] queue_size The size of the tbm_surface_queue
- * @param[in] flush flush the tbm_surface_queue
+ * @param[in] modes modes of The #tbm_surface_queue_mode
*
* @return #TBM_SURFACE_ERROR_NONE on success,
* otherwise an error status value
tbm_surface_queue_h surface_queue;
tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
+ surface_queue = tbm_surface_queue_create(3, 128, 128, TBM_FORMAT_ARGB888, TBM_BO_DEFAULT);
+
...
- tsq_err = tbm_surface_queue_set_size(surface_queue, 2, 1);
+ tsq_err = tbm_surface_queue_set_modes(surface_queue, TBM_SURFACE_QUEUE_MODE_GUARANTEE_CYCLE);
if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
...
}
@endcode
*/
-tbm_surface_queue_error_e tbm_surface_queue_set_size(
- tbm_surface_queue_h surface_queue, int queue_size, int flush);
+tbm_surface_queue_error_e tbm_surface_queue_set_modes(
+ tbm_surface_queue_h surface_queue, int modes);
/**
- * @brief Sets modes of the tbm_surface_queue.
+ * @brief Check the tbm_surface_queue can dequeue the tbm_surface.
+ * if wait is 1, this function isn't return until another thread release
+ * the tbm_surface to the tbm_surface_queue
*
* @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] modes modes of The #tbm_surface_queue_mode
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
+ * @param[in] wait wait releasing the tbm_surface
+ *
+ * @return 1 if it can it, otherwise 0.
*
*
* @par Example
#include <tbm_surface_queue.h>
tbm_surface_queue_h surface_queue;
- tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
-
- surface_queue = tbm_surface_queue_create(3, 128, 128, TBM_FORMAT_ARGB888, TBM_BO_DEFAULT);
...
- tsq_err = tbm_surface_queue_set_modes(surface_queue, TBM_SURFACE_QUEUE_MODE_GUARANTEE_CYCLE);
- if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
- ...
+ if (tbm_surface_queue_can_dequeue(surface_queue, 0)) {
+
}
...
@endcode
*/
-tbm_surface_queue_error_e tbm_surface_queue_set_modes(
- tbm_surface_queue_h surface_queue, int modes);
-
-/**
- * @brief Sets sync count of the tbm_surface_queue.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] sync_count The sync count
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_set_sync_count(
- tbm_surface_queue_h surface_queue, unsigned int sync_count);
+int tbm_surface_queue_can_dequeue(tbm_surface_queue_h surface_queue, int wait);
/**
* @brief Check the tbm_surface_queue can dequeue the tbm_surface.
- * if wait is 1, this function isn't return until another thread release
+ * this function wait for ms_timeout untill another thread release
* the tbm_surface to the tbm_surface_queue
*
* @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] wait wait releasing the tbm_surface
- *
- * @return 1 if it can it, otherwise 0.
+ * @param[in] ms_timeout milisecond time for waiting releasing the tbm_surface
*
+ * @return #TBM_SURFACE_QUEUE_ERROR_NONE if it can it,
+ * otherwise an error status value
*
* @par Example
@code
#include <tbm_surface_queue.h>
tbm_surface_queue_h surface_queue;
+ tbm_surface_queue_error_e err;
...
- if (tbm_surface_queue_can_dequeue(surface_queue, 0)) {
+ err = tbm_surface_queue_can_dequeue_wait_timeout(surface_queue, 10000);
+ if (err == TBM_SURFACE_QUEUE_ERROR_NONE) {
}
@endcode
*/
-int tbm_surface_queue_can_dequeue(tbm_surface_queue_h surface_queue, int wait);
+tbm_surface_queue_error_e tbm_surface_queue_can_dequeue_wait_timeout(
+ tbm_surface_queue_h surface_queue, int ms_timeout);
/**
* @brief Check the tbm_surface_queue can acquire the tbm_surface.
*/
tbm_surface_queue_error_e tbm_surface_queue_free_flush(tbm_surface_queue_h surface_queue);
-/**
- * @brief Notify reset of the tbm_surface_queue.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_notify_reset(tbm_surface_queue_h surface_queue);
-
-/**
- * @brief Notify dequeuable of the tbm_surface_queue.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_notify_dequeuable(tbm_surface_queue_h surface_queue);
-
/**
* @brief Add callback of destroy to the tbm_surface_queue.
*
tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb dequeue_cb,
void *data);
-/**
- * @brief Add callback of can_dequeue to the tbm_surface_queue.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] can_dequeue_cb The callback of can_dequeue
- * @param[in] data The user data
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_add_can_dequeue_cb(
- tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb can_dequeue_cb,
- void *data);
-
-/**
- * @brief Remove callback of can_dequeue from the tbm_surface_queue.
- *
- * @param[in] surface_queue The #tbm_surface_queue_h
- * @param[in] can_dequeue_cb The callback of can_dequeue
- * @param[in] data The user data
- *
- * @return #TBM_SURFACE_ERROR_NONE on success,
- * otherwise an error status value
- */
-tbm_surface_queue_error_e tbm_surface_queue_remove_can_dequeue_cb(
- tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb can_dequeue_cb,
- void *data);
-
/**
* @brief Add callback of acquirable to the tbm_surface_queue.
*
tbm_surface_queue_h surface_queue, tbm_surface_queue_trace_cb trace_cb,
void *data);
-tbm_surface_queue_error_e
-tbm_surface_queue_can_dequeue_wait_timeout(
- tbm_surface_queue_h surface_queue, int ms_timeout);
-
#ifdef __cplusplus
}
#endif
--- /dev/null
+/**************************************************************************
+
+libtbm
+
+Copyright 2014 Samsung Electronics co., Ltd. All Rights Reserved.
+
+Contact: SooChan Lim <sc1.lim@samsung.com>, Sangjin Lee <lsj119@samsung.com>
+Boram Park <boram1288.park@samsung.com>, Changyeon Lee <cyeon.lee@samsung.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+#ifndef _TBM_SURFACE_QUEUE_INTERNAL_H_
+#define _TBM_SURFACE_QUEUE_INTERNAL_H_
+
+#include <tbm_surface.h>
+#include <tbm_surface_queue.h>
+#include <tbm_type_common.h>
+#include <tbm_error.h>
+
+typedef tbm_surface_h (*tbm_surface_alloc_cb)(tbm_surface_queue_h surface_queue,
+ void *data);
+
+typedef tbm_surface_h (*tbm_surface_alloc_cb2)(tbm_surface_queue_h surface_queue,
+ int width, int height, int format, int flags, void *data);
+
+typedef void (*tbm_surface_free_cb)(tbm_surface_queue_h surface_queue,
+ void *data, tbm_surface_h surface);
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @brief Sets allocate callback to the tbm_surface_queue.
+ * alloc_cb is called when the tbm_surface_queue try to allocate the tbm_surface and
+ * the tbm_surface_queue dequeue the tbm_surface returned in alloc_cb
+ * free_cb is called when the tbm_surface_queue unreference the tbm_surface.
+ *
+ * @remarks You must use either tbm_surface_queue_set_alloc_cb or tbm_surface_queue_set_alloc_cb2
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] alloc_cb The callback of allocate
+ * @param[in] free_cb The callback of free
+ * @param[in] data The user data
+ *
+ * @return #TBM_SURFACE_QUEUE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb(
+ tbm_surface_queue_h surface_queue,
+ tbm_surface_alloc_cb alloc_cb,
+ tbm_surface_free_cb free_cb,
+ void *data);
+
+/**
+ * @brief Sets allocate callback to the tbm_surface_queue.
+ * alloc_cb2 is called when the tbm_surface_queue try to allocate the tbm_surface and
+ * the tbm_surface_queue dequeue the tbm_surface returned in alloc_cb2
+ * free_cb is called when the tbm_surface_queue unreference the tbm_surface.
+ *
+ * @remarks You must use either tbm_surface_queue_set_alloc_cb or tbm_surface_queue_set_alloc_cb2
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] alloc_cb2 The callback of allocate
+ * @param[in] free_cb The callback of free
+ * @param[in] data The user data
+ *
+ * @return #TBM_SURFACE_QUEUE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb2(
+ tbm_surface_queue_h surface_queue,
+ tbm_surface_alloc_cb2 alloc_cb2,
+ tbm_surface_free_cb free_cb,
+ void *data);
+
+tbm_surface_queue_error_e tbm_surface_queue_get_acquirable_surfaces(
+ tbm_surface_queue_h surface_queue,
+ tbm_surface_h *surfaces, int *num);
+
+/**
+ * @brief Gets number of the tbm_surfaces by tbm_surface_queue_trace.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] trace The #tbm_surface_queue_trace
+ * @param[out] num The number of the surfaces
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ *
+ *
+ * @par Example
+ @code
+ #include <tbm_surface_queue.h>
+
+ tbm_surface_queue_h surface_queue;
+ int num;
+ tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
+
+ ...
+
+ tsq_err = tbm_surface_queue_get_trace_surface_num(surface_queue, TBM_SURFACE_QUEUE_TRACE_DEQUEUE, &num);
+ if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
+ ...
+ }
+
+ ...
+
+ @endcode
+ */
+tbm_surface_queue_error_e tbm_surface_queue_get_trace_surface_num(
+ tbm_surface_queue_h surface_queue, tbm_surface_queue_trace trace, int *num);
+
+/**
+ * @brief Sets size of the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] queue_size The size of the tbm_surface_queue
+ * @param[in] flush flush the tbm_surface_queue
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ *
+ *
+ * @par Example
+ @code
+ #include <tbm_surface_queue.h>
+
+ tbm_surface_queue_h surface_queue;
+ tbm_surface_queue_error_e tsq_err = TBM_SURFACE_QUEUE_ERROR_NONE;
+
+ ...
+
+ tsq_err = tbm_surface_queue_set_size(surface_queue, 2, 1);
+ if (tsq_err != TBM_SURFACE_QUEUE_ERROR_NONE) {
+ ...
+ }
+
+ ...
+
+ @endcode
+ */
+tbm_surface_queue_error_e tbm_surface_queue_set_size(
+ tbm_surface_queue_h surface_queue, int queue_size, int flush);
+
+/**
+ * @brief Sets sync count of the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] sync_count The sync count
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_set_sync_count(
+ tbm_surface_queue_h surface_queue, unsigned int sync_count);
+
+/**
+ * @brief Notify reset of the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_notify_reset(tbm_surface_queue_h surface_queue);
+
+/**
+ * @brief Notify dequeuable of the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_notify_dequeuable(tbm_surface_queue_h surface_queue);
+
+/**
+ * @brief Add callback of can_dequeue to the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] can_dequeue_cb The callback of can_dequeue
+ * @param[in] data The user data
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_add_can_dequeue_cb(
+ tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb can_dequeue_cb,
+ void *data);
+
+/**
+ * @brief Remove callback of can_dequeue from the tbm_surface_queue.
+ *
+ * @param[in] surface_queue The #tbm_surface_queue_h
+ * @param[in] can_dequeue_cb The callback of can_dequeue
+ * @param[in] data The user data
+ *
+ * @return #TBM_SURFACE_ERROR_NONE on success,
+ * otherwise an error status value
+ */
+tbm_surface_queue_error_e tbm_surface_queue_remove_can_dequeue_cb(
+ tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb can_dequeue_cb,
+ void *data);
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _TBM_SURFACE_INTERNAL_H_ */