remove libds stuffs
[platform/core/uifw/libds-tizen.git] / src / backend / tdm / tdm.h
1 #ifndef DS_TIZEN_BACKEND_TDM_H
2 #define DS_TIZEN_BACKEND_TDM_H
3
4 #include <time.h>
5
6 #include <tdm.h>
7
8 #include <libds/interfaces/backend.h>
9 #include <libds/interfaces/output.h>
10
11 enum ds_tdm_output_status {
12     DS_TDM_OUTPUT_DISCONNECTED,
13     DS_TDM_OUTPUT_CONNECTED,
14 };
15
16 struct ds_tdm_output_mode {
17     struct ds_output_mode base;
18     const tdm_output_mode *tdm_mode;
19 };
20
21 struct ds_tdm_backend
22 {
23     struct ds_backend base;
24
25     tdm_display *tdm_display;
26     struct wl_display *wl_display;
27     struct wl_event_source *tdm_event;
28
29     struct wl_list outputs; // ds_tdm_output.link
30     struct wl_list buffers; // ds_tdm_buffer.link
31
32     struct wl_listener display_destroy;
33
34     clockid_t clock;
35     int fd;
36 };
37
38 struct ds_tdm_output
39 {
40     struct ds_output base;
41
42     struct ds_tdm_backend *backend;
43     struct ds_tdm_buffer_queue *queue;
44     struct ds_buffer *front_buffer, *back_buffer;
45
46     struct {
47         tdm_output *output;
48         tdm_hwc *hwc;
49     } tdm;
50
51     struct wl_list link;
52
53     enum ds_tdm_output_status status;
54 };
55
56 struct ds_tdm_buffer
57 {
58     struct ds_buffer *buffer;
59     tbm_surface_h surface;
60     struct wl_list link; // ds_wl_backend.buffers
61
62     struct wl_listener buffer_release;
63     struct wl_listener buffer_destroy;
64
65     bool released;
66 };
67
68 struct ds_tdm_backend *tdm_backend_from_backend(struct ds_backend *backend);
69
70 struct ds_tdm_output *create_tdm_output(struct ds_tdm_backend *tdm,
71         tdm_output *tdm_output);
72
73 void destroy_tdm_buffer(struct ds_tdm_buffer *buffer);
74
75
76 #endif