07b36994d16cd4d883312db8b4c746afbf17bd0b
[platform/core/uifw/libds-tizen.git] / src / backend / tdm / tdm_output_hwc.h
1 #ifndef DS_TIZEN_BACKEND_TDM_OUTPUT_HWC_H
2 #define DS_TIZEN_BACKEND_TDM_OUTPUT_HWC_H
3
4 #include <tdm.h>
5 #include <libds/surface.h>
6 #include <libds/buffer.h>
7
8 #include <libds-tizen/backend/tdm.h>
9 #include <libds-tizen/backend/tdm_output_hwc.h>
10
11 struct ds_tdm_output_hwc_window {
12     struct wl_list link;
13
14     tdm_hwc *hwc;
15
16     size_t n_locks;
17     bool dropped;
18
19     tdm_hwc_window *twindow;
20     tdm_hwc_window_info tinfo;
21
22     enum ds_tdm_output_hwc_window_composition composition;
23     enum ds_tdm_output_hwc_window_composition accepted_composition;
24
25     struct ds_tdm_box src_box;
26     int x, y;
27     int dest_width, dest_height;
28     enum wl_output_transform transform;
29     struct ds_buffer *buffer;
30
31     struct ds_buffer *set_buffer;
32     struct ds_buffer *back_buffer, *front_buffer;
33 };
34
35 struct ds_tdm_output_hwc {
36     struct ds_tdm_output *tdm_output;
37
38     tdm_hwc *thwc;
39     tdm_hwc_window_info target_buffer_info;
40     bool enabled;
41
42     struct {
43         struct wl_signal destroy;
44         struct wl_signal commit_handler;
45     } events;
46
47     uint32_t validate_num_changed;
48
49     struct wl_list hwc_windows;
50 };
51
52 struct ds_tdm_output_hwc *
53 ds_tdm_output_hwc_create(tdm_hwc *thwc);
54
55 void
56 ds_tdm_output_hwc_destroy(struct ds_tdm_output_hwc *hwc);
57
58 bool
59 ds_tdm_output_hwc_set_client_target_buffer(struct ds_tdm_output_hwc *hwc,
60         tbm_surface_h tsurface);
61
62 bool
63 ds_tdm_output_hwc_commit(struct ds_tdm_output_hwc *hwc);
64
65 void
66 ds_tdm_output_hwc_add_commit_handler_listener(struct ds_tdm_output_hwc *hwc,
67         struct wl_listener *listener);
68
69 void
70 ds_tdm_output_hwc_window_set_accepted_composition(struct ds_tdm_output_hwc_window *hwc_window,
71         enum ds_tdm_output_hwc_window_composition composition);
72
73 void
74 ds_tdm_output_hwc_window_set_changed_composition(struct ds_tdm_output_hwc_window *hwc_window,
75         enum ds_tdm_output_hwc_window_composition composition);
76
77 struct ds_tdm_output_hwc_window *
78 ds_tdm_output_hwc_window_lock(struct ds_tdm_output_hwc_window *hwc_window);
79
80 void
81 ds_tdm_output_hwc_window_unlock(struct ds_tdm_output_hwc_window *hwc_window);
82
83 #endif