9 #include <e_presentation_time.h>
11 #include <e_egl_sync.h>
13 #include <tbm_surface.h>
14 #include <wayland-server.h>
17 typedef enum _E_Hwc_Window_State
19 E_HWC_WINDOW_STATE_NONE,
20 E_HWC_WINDOW_STATE_CLIENT,
21 E_HWC_WINDOW_STATE_DEVICE,
22 E_HWC_WINDOW_STATE_VIDEO,
23 E_HWC_WINDOW_STATE_CURSOR,
26 typedef enum _E_Hwc_Window_Activation_State
28 E_HWC_WINDOW_ACTIVATION_STATE_DEACTIVATED = 0,
29 E_HWC_WINDOW_ACTIVATION_STATE_ACTIVATED,
30 } E_Hwc_Window_Activation_State;
34 E_Object e_obj_inherit;
37 E_Object_Delfn *ec_delfn;
39 tdm_hwc_window *thwc_window;
42 Eina_Bool is_root_target;
47 Eina_Bool device_state_available;
49 E_Hwc_Window_Activation_State activation_state; /* hwc_window has occupied the hw layer or not */
51 E_Hwc_Window_State state;
52 E_Hwc_Window_State accepted_state;
54 E_Hwc_Window_Update_Data current;
55 Eina_List *pending_update_list;
59 E_Hwc_Window_Update_Data commit;
60 Eina_List *commit_data_list;
62 /* current display information */
63 E_Hwc_Window_Update_Data display;
68 E_Comp_Wl_Buffer *buffer;
74 struct wl_listener cursor_buffer_destroy_listener;
81 double frametimes[122];
90 E_Hwc_Window_Queue *queue;
91 struct wl_listener queue_destroy_listener;
93 Eina_Bool render_target;
94 Eina_Bool on_rendered_target;
96 unsigned int restriction;
97 Eina_Bool obscured_by_target;
99 E_Presentation_Time_Container presentation_container;
101 Eina_Bool present_sync;
103 E_Hwc_Presentation_Callback_List pending_presentation_callbacks;
104 E_Hwc_Presentation_Callback_List presentation_callbacks;
106 struct wayland_tbm_client_queue *cqueue;
109 E_Object_Delfn *zone_delfn;
111 Evas_Object *below_transparent_obj;
113 Eina_Bool queue_unset_waiting;
115 Eina_Bool comp_override;
118 struct _E_Hwc_Window_Target
120 E_Hwc_Window hwc_window; /* don't move this field */
126 Ecore_Fd_Handler *event_hdlr;
128 /* a surface the rendering is currently performing at */
129 tbm_surface_h dequeued_tsurface;
130 Eina_List *rendering_tsurfaces;
131 Eina_List *rendered_windows;
132 Eina_Bool is_rendering;
134 E_Hwc_Window_Queue *pp_queue;
135 struct wl_listener pp_queue_destroy_listener;
137 E_Egl_Sync *end_render_sync;
139 Eina_List *present_sync_windows;
140 Eina_List *pending_presentation_cb_wins;
143 struct _E_Hwc_Window_Commit_Data {
144 E_Hwc_Window *hwc_window;
145 E_Comp_Wl_Buffer_Ref buffer_ref;
146 E_Hwc_Window_Queue_Buffer_Ref queue_buffer_ref;
147 E_Hwc_Window_Buffer buffer;
148 tdm_hwc_window_info info;
151 #endif // E_HWC_WINDOW_H