1 #ifndef DS_TIZEN_BACKEND_TDM_OUTPUT_HWC_H
2 #define DS_TIZEN_BACKEND_TDM_OUTPUT_HWC_H
5 #include <libds/surface.h>
6 #include <libds/buffer.h>
8 #include <libds-tizen/backend/tdm.h>
9 #include <libds-tizen/backend/tdm_output_hwc.h>
11 struct ds_tdm_output_hwc_window {
19 tdm_hwc_window *twindow;
20 tdm_hwc_window_info tinfo;
22 enum ds_tdm_output_hwc_window_composition composition;
23 enum ds_tdm_output_hwc_window_composition accepted_composition;
25 struct ds_tdm_box src_box;
27 int dest_width, dest_height;
28 enum wl_output_transform transform;
29 struct ds_buffer *buffer;
31 struct ds_buffer *set_buffer;
32 struct ds_buffer *back_buffer, *front_buffer;
35 struct ds_tdm_output_hwc {
36 struct ds_tdm_output *tdm_output;
39 tdm_hwc_window_info target_buffer_info;
43 struct wl_signal destroy;
44 struct wl_signal commit_handler;
47 uint32_t validate_num_changed;
49 struct wl_list hwc_windows;
52 struct ds_tdm_output_hwc *
53 ds_tdm_output_hwc_create(tdm_hwc *thwc);
56 ds_tdm_output_hwc_destroy(struct ds_tdm_output_hwc *hwc);
59 ds_tdm_output_hwc_set_client_target_buffer(struct ds_tdm_output_hwc *hwc,
60 tbm_surface_h tsurface);
63 ds_tdm_output_hwc_commit(struct ds_tdm_output_hwc *hwc);
66 ds_tdm_output_hwc_add_commit_handler_listener(struct ds_tdm_output_hwc *hwc,
67 struct wl_listener *listener);
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);
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);
77 struct ds_tdm_output_hwc_window *
78 ds_tdm_output_hwc_window_lock(struct ds_tdm_output_hwc_window *hwc_window);
81 ds_tdm_output_hwc_window_unlock(struct ds_tdm_output_hwc_window *hwc_window);