a983265e72fbc17c9c16b2a0b29260ece7b80148
[platform/core/uifw/libds-tizen.git] / src / libds-tizen / backend / tdm / tdm_buffer_queue.h
1 #ifndef DS_TIZEN_BACKEND_TDM_BUFFER_QUEUE_H
2 #define DS_TIZEN_BACKEND_TDM_BUFFER_QUEUE_H
3
4 #include <tbm_surface_queue.h>
5 #include <libds/interfaces/buffer.h>
6
7 #include "tdm.h"
8
9 struct ds_tdm_buffer_queue
10 {
11     tbm_surface_queue_h tbm_surface_queue;
12     struct wl_event_source *acquirable_source;
13
14     struct wl_list buffers; // ds_tdm_queue_buffer.link
15
16     struct {
17         struct wl_signal acquirable;
18     } events;
19
20     int acquirable_efd;
21 };
22
23 struct ds_tdm_queue_buffer
24 {
25     struct ds_buffer base;
26
27     struct ds_tdm_output *output;
28     struct ds_tdm_buffer_queue *queue;
29     tbm_surface_h surface;
30
31     struct wl_list link;
32     struct wl_listener buffer_release;
33
34     bool acquired;
35 };
36
37 struct ds_tdm_buffer_queue *create_buffer_queue(struct ds_tdm_output *output);
38
39 void buffer_queue_destroy(struct ds_tdm_buffer_queue *queue);
40
41 struct ds_tdm_queue_buffer *
42 buffer_queue_find_buffer(struct ds_tdm_buffer_queue *queue,
43         struct ds_buffer *ds_buffer);
44
45 #endif