b155ad3f1adae9753b02c116c955e74914bb73fd
[platform/upstream/enlightenment.git] / src / bin / e_hwc_window_intern.h
1 #ifndef E_HWC_WINDOW_INTERN_H
2 #define E_HWC_WINDOW_INTERN_H
3
4 #include "e_intern.h"
5 #include "e_hwc_window.h"
6
7 #define E_HWC_WINDOW_TYPE (int)0xE0b11003
8 #define E_HWC_WINDOW_ZPOS_NONE -999
9
10 #define EHW_C(b,m)              (b ? ((b) >> (m)) & 0xFF : ' ')
11 #define EHW_FOURCC_STR(id)      EHW_C(id,0), EHW_C(id,8), EHW_C(id,16), EHW_C(id,24)
12
13 typedef struct _E_Hwc_Window_Commit_Data          E_Hwc_Window_Commit_Data;
14 typedef struct _E_Hwc_Window_Hook                 E_Hwc_Window_Hook;
15
16 typedef void (*E_Hwc_Window_Hook_Cb) (void *data, E_Hwc_Window *hwc_window);
17
18 typedef enum _E_Hwc_Window_Hook_Point
19 {
20    E_HWC_WINDOW_HOOK_ACCEPTED_STATE_SET,
21    E_HWC_WINDOW_HOOK_LAST
22 } E_Hwc_Window_Hook_Point;
23
24 struct _E_Hwc_Window_Hook
25 {
26    EINA_INLIST;
27    E_Hwc_Window_Hook_Point hookpoint;
28    E_Hwc_Window_Hook_Cb func;
29    void *data;
30    unsigned char delete_me : 1;
31 };
32
33 EINTERN Eina_Bool               e_hwc_window_init(void);
34 EINTERN void                    e_hwc_window_deinit(void);
35
36 EINTERN E_Hwc_Window           *e_hwc_window_get(E_Hwc *hwc, E_Client *ec);
37 EINTERN void                    e_hwc_window_ref(E_Hwc_Window *hwc_window);
38 EINTERN void                    e_hwc_window_unref(E_Hwc_Window *hwc_window);
39
40 EINTERN Eina_Bool               e_hwc_window_zpos_set(E_Hwc_Window *hwc_window, int zpos);
41 EINTERN int                     e_hwc_window_zpos_get(E_Hwc_Window *hwc_window);
42 EINTERN Eina_Bool               e_hwc_window_composition_update(E_Hwc_Window *hwc_window);
43 EINTERN Eina_Bool               e_hwc_window_info_update(E_Hwc_Window *hwc_window);
44 EINTERN Eina_Bool               e_hwc_window_buffer_fetch(E_Hwc_Window *hwc_window);
45 EINTERN Eina_Bool               e_hwc_window_prop_update(E_Hwc_Window *hwc_window);
46 EINTERN Eina_Bool               e_hwc_window_is_target(E_Hwc_Window *hwc_window);
47 EINTERN Eina_Bool               e_hwc_window_is_video(E_Hwc_Window *hwc_window);
48 EINTERN Eina_Bool               e_hwc_window_is_cursor(E_Hwc_Window *hwc_window);
49 EINTERN Eina_Bool               e_hwc_window_video_set(E_Hwc_Window *hwc_window, Eina_Bool set);
50
51 EINTERN E_Hwc_Window_Commit_Data *e_hwc_window_commit_data_acquire(E_Hwc_Window *hwc_window);
52 EINTERN Eina_Bool                 e_hwc_window_commit_data_release(E_Hwc_Window *hwc_window, E_Hwc_Window_Commit_Data *commit_data);
53
54 EINTERN Eina_Bool               e_hwc_window_activate(E_Hwc_Window *hwc_window, E_Hwc_Window_Queue *queue);
55 EINTERN Eina_Bool               e_hwc_window_deactivate(E_Hwc_Window *hwc_window);
56 EINTERN Eina_Bool               e_hwc_window_is_on_hw_overlay(E_Hwc_Window *hwc_window);
57 EINTERN tbm_surface_h           e_hwc_window_displaying_surface_get(E_Hwc_Window *hwc_window);
58
59 EINTERN Eina_Bool               e_hwc_window_state_set(E_Hwc_Window *hwc_window, E_Hwc_Window_State state, Eina_Bool composition_update);
60 EINTERN E_Hwc_Window_State      e_hwc_window_state_get(E_Hwc_Window *hwc_window);
61 EINTERN Eina_Bool               e_hwc_window_accepted_state_set(E_Hwc_Window *hwc_window, E_Hwc_Window_State state);
62 EINTERN E_Hwc_Window_State      e_hwc_window_accepted_state_get(E_Hwc_Window *hwc_window);
63 EINTERN Eina_Bool               e_hwc_window_device_state_available_update(E_Hwc_Window *hwc_window);
64 EINTERN Eina_Bool               e_hwc_window_device_state_available_get(E_Hwc_Window *hwc_window);
65 EINTERN const char*             e_hwc_window_restriction_string_get(E_Hwc_Window *hwc_window);
66
67 EINTERN Eina_Bool               e_hwc_window_constraints_update(E_Hwc_Window *hwc_window);
68 EINTERN void                    e_hwc_window_constraints_reset(E_Hwc_Window *hwc_window);
69 EINTERN Eina_Bool               e_hwc_window_rendered_window_update(E_Hwc_Window *hwc_window);
70 EINTERN void                    e_hwc_window_buffer_set(E_Hwc_Window_Buffer *window_buffer, tbm_surface_h tsurface, E_Hwc_Window_Queue *queue, int transform);
71 EINTERN const char             *e_hwc_window_state_string_get(E_Hwc_Window_State hwc_window_state);
72 EINTERN const char             *e_hwc_window_name_get(E_Hwc_Window *hwc_window);
73 EINTERN void                    e_hwc_window_name_set(E_Hwc_Window *hwc_window);
74 EINTERN Eina_Bool               e_hwc_window_set_property(E_Hwc_Window *hwc_window, unsigned int id, const char *name, tdm_value value, Eina_Bool force);
75 EINTERN Eina_Bool               e_hwc_window_get_property(E_Hwc_Window *hwc_window, unsigned int id, tdm_value *value);
76 EINTERN void                    e_hwc_window_client_type_override(E_Hwc_Window *hwc_window);
77 EINTERN Eina_Bool               e_hwc_window_display_or_commit_buffer_check(E_Hwc_Window *hwc_window, tbm_surface_h tsurface);
78
79 EINTERN E_Hwc_Window_Hook      *e_hwc_window_hook_add(E_Hwc_Window_Hook_Point hookpoint, E_Hwc_Window_Hook_Cb func, const void *data);
80 EINTERN void                    e_hwc_window_hook_del(E_Hwc_Window_Hook *ch);
81
82 EINTERN void                    e_hwc_window_trace_debug(Eina_Bool onoff);
83 EINTERN void                    e_hwc_window_commit_data_buffer_dump(E_Hwc_Window *hwc_window, E_Hwc_Window_Commit_Data *commit_data);
84 EINTERN Eina_Bool               e_hwc_window_fps_get(E_Hwc_Window *hwc_window, double *fps);
85
86 EINTERN void                    e_hwc_window_presentation_time_feedback_present(E_Hwc_Window *hwc_window, uint64_t sequence, uint64_t tv_sec, uint64_t tv_usec);
87 EINTERN void                    e_hwc_window_presentation_time_feedback_discard(E_Hwc_Window *hwc_window);
88 EINTERN void                    e_hwc_window_presentation_time_feedback_take(E_Hwc_Window *hwc_window, E_Presentation_Time_Container *container);
89
90 EINTERN Eina_Bool               e_hwc_window_present_sync(E_Hwc_Window *hwc_window);
91
92 EINTERN E_Hwc_Window_Update_Data *e_hwc_window_pending_update_data_dequeue(E_Hwc_Window *hwc_window);
93 EINTERN Eina_Bool                 e_hwc_window_pending_update_data_enqueue(E_Hwc_Window *hwc_window, E_Hwc_Window_Update_Data *update);
94 EINTERN Eina_Bool                 e_hwc_window_pending_update_data_dequeue_cancel(E_Hwc_Window *hwc_window, E_Hwc_Window_Update_Data *update);
95 EINTERN Eina_Bool                 e_hwc_window_pending_update_data_has(E_Hwc_Window *hwc_window);
96
97 EINTERN Eina_Bool                 e_hwc_window_presentation_callback_pending_set(E_Hwc_Window *hwc_window, E_Hwc_Presentation_Callback *callback);
98 EINTERN Eina_Bool                 e_hwc_window_presentation_callback_pending_take_over(E_Hwc_Window *hwc_window, E_Hwc_Presentation_Callback_List *dst_list);
99 EINTERN Eina_Bool                 e_hwc_window_presentation_callback_take(E_Hwc_Window *hwc_window, E_Hwc_Presentation_Callback_List *src_list);
100 EINTERN Eina_Bool                 e_hwc_window_presentation_callback_call(E_Hwc_Window *hwc_window);
101
102 EINTERN void                      e_hwc_window_below_transparent_obj_set(E_Hwc_Window *hwc_window, Eina_Bool set);
103
104 #endif