1 #ifndef _TBM_SURFACE_QUEUE_H_
2 #define _TBM_SURFACE_QUEUE_H_
4 #include <tbm_surface.h>
7 TBM_SURFACE_QUEUE_ERROR_NONE = 0, /**< Successful */
8 TBM_SURFACE_QUEUE_ERROR_INVALID_SURFACE = -1,
9 TBM_SURFACE_QUEUE_ERROR_INVALID_QUEUE = -2,
10 TBM_SURFACE_QUEUE_ERROR_EMPTY = -3,
11 TBM_SURFACE_QUEUE_ERROR_INVALID_PARAMETER = -4,
12 TBM_SURFACE_QUEUE_ERROR_SURFACE_ALLOC_FAILED = -5,
13 } tbm_surface_queue_error_e;
15 typedef struct _tbm_surface_queue *tbm_surface_queue_h;
17 typedef void (*tbm_surface_queue_notify_cb) (tbm_surface_queue_h surface_queue,
20 typedef tbm_surface_h (*tbm_surface_alloc_cb) (tbm_surface_queue_h surface_queue,
23 typedef void (*tbm_surface_free_cb) (tbm_surface_queue_h surface_queue,
24 void *data, tbm_surface_h surface);
30 tbm_surface_queue_error_e tbm_surface_queue_enqueue(
31 tbm_surface_queue_h surface_queue, tbm_surface_h surface);
33 tbm_surface_queue_error_e tbm_surface_queue_dequeue(
34 tbm_surface_queue_h surface_queue, tbm_surface_h *surface);
36 tbm_surface_queue_error_e tbm_surface_queue_release(
37 tbm_surface_queue_h surface_queue, tbm_surface_h surface);
39 tbm_surface_queue_error_e tbm_surface_queue_acquire(
40 tbm_surface_queue_h surface_queue, tbm_surface_h *surface);
42 int tbm_surface_queue_can_dequeue(tbm_surface_queue_h surface_queue, int wait);
44 int tbm_surface_queue_can_acquire(tbm_surface_queue_h surface_queue, int wait);
46 void tbm_surface_queue_destroy(tbm_surface_queue_h surface_queue);
48 int tbm_surface_queue_get_width(tbm_surface_queue_h surface_queue);
50 int tbm_surface_queue_get_height(tbm_surface_queue_h surface_queue);
52 int tbm_surface_queue_get_format(tbm_surface_queue_h surface_queue);
54 int tbm_surface_queue_get_size(tbm_surface_queue_h surface_queue);
56 tbm_surface_queue_error_e tbm_surface_queue_reset(
57 tbm_surface_queue_h surface_queue, int width, int height, int format);
59 tbm_surface_queue_error_e tbm_surface_queue_flush(tbm_surface_queue_h surface_queue);
61 tbm_surface_queue_error_e tbm_surface_queue_add_reset_cb(
62 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb reset_cb,
65 tbm_surface_queue_error_e tbm_surface_queue_remove_reset_cb(
66 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb reset_cb,
69 tbm_surface_queue_error_e tbm_surface_queue_add_destroy_cb(
70 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb destroy_cb,
73 tbm_surface_queue_error_e tbm_surface_queue_remove_destroy_cb(
74 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb destroy_cb,
77 tbm_surface_queue_error_e tbm_surface_queue_add_dequeuable_cb(
78 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb dequeuable_cb,
81 tbm_surface_queue_error_e tbm_surface_queue_remove_dequeuable_cb(
82 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb dequeuable_cb,
85 tbm_surface_queue_error_e tbm_surface_queue_add_acquirable_cb(
86 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb acquirable_cb,
89 tbm_surface_queue_error_e tbm_surface_queue_remove_acquirable_cb(
90 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb acquirable_cb,
93 tbm_surface_queue_error_e tbm_surface_queue_set_alloc_cb(
94 tbm_surface_queue_h surface_queue,
95 tbm_surface_alloc_cb alloc_cb,
96 tbm_surface_free_cb free_cb,
99 /*The functions of queue factory*/
100 tbm_surface_queue_h tbm_surface_queue_create(int queue_size, int width,
101 int height, int format, int flags);
102 tbm_surface_queue_h tbm_surface_queue_sequence_create(int queue_size, int width,
103 int height, int format, int flags);
107 tbm_surface_queue_error_e tbm_surface_queue_set_destroy_cb(
108 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb destroy_cb,
111 tbm_surface_queue_error_e tbm_surface_queue_set_dequeuable_cb(
112 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb dequeuable_cb,
115 tbm_surface_queue_error_e tbm_surface_queue_set_acquirable_cb(
116 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb acquirable_cb,
119 tbm_surface_queue_error_e tbm_surface_queue_set_reset_cb(
120 tbm_surface_queue_h surface_queue, tbm_surface_queue_notify_cb reset_cb,
125 #endif /* _TBM_SURFACE_H_ */