1 #ifndef _ECORE_EVAS_PRIVATE_H
2 #define _ECORE_EVAS_PRIVATE_H
12 #ifdef HAVE_SYS_MMAN_H
13 # include <sys/mman.h>
17 #include <ecore_private.h>
18 #include <Ecore_Input.h>
19 #include <Ecore_Input_Evas.h>
21 #define ECORE_MAGIC_EVAS 0x76543211
23 #ifndef BUILD_ECORE_DIRECTFB
24 # undef BUILD_ECORE_EVAS_DIRECTFB
27 #ifdef BUILD_ECORE_EVAS_X11
29 # ifdef HAVE_ECORE_X_XCB
31 # ifdef BUILD_ECORE_EVAS_SOFTWARE_XCB
32 # include <Evas_Engine_Software_X11.h>
34 # ifdef BUILD_ECORE_EVAS_XRENDER_XCB
35 # include <xcb/render.h>
36 # include <Evas_Engine_XRender_X11.h>
38 # ifdef BUILD_ECORE_EVAS_SOFTWARE_8_X11
39 # include <Evas_Engine_Software_8_X11.h>
42 # ifdef HAVE_ECORE_X_XLIB
43 # include <X11/Xlib.h>
44 # include <X11/Xutil.h>
45 # ifdef BUILD_ECORE_EVAS_SOFTWARE_XLIB
46 # include <Evas_Engine_Software_X11.h>
48 # ifdef BUILD_ECORE_EVAS_XRENDER_X11
49 # include <X11/extensions/Xrender.h>
50 # include <Evas_Engine_XRender_X11.h>
52 # ifdef BUILD_ECORE_EVAS_OPENGL_X11
53 # include <Evas_Engine_GL_X11.h>
55 # ifdef BUILD_ECORE_EVAS_SOFTWARE_16_X11
56 # include <Evas_Engine_Software_16_X11.h>
61 #ifdef BUILD_ECORE_EVAS_FB
62 # include <Evas_Engine_FB.h>
65 #ifdef BUILD_ECORE_EVAS_DIRECTFB
66 # include <Evas_Engine_DirectFB.h>
67 # include "Ecore_DirectFB.h"
70 #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
71 # include <Evas_Engine_Buffer.h>
74 #ifdef BUILD_ECORE_EVAS_WIN32
75 # include "Ecore_Win32.h"
76 # ifdef BUILD_ECORE_EVAS_SOFTWARE_GDI
77 # include <Evas_Engine_Software_Gdi.h>
79 # ifdef BUILD_ECORE_EVAS_SOFTWARE_DDRAW
80 # include <Evas_Engine_Software_DDraw.h>
82 # ifdef BUILD_ECORE_EVAS_DIRECT3D
83 # include <Evas_Engine_Direct3D.h>
85 # ifdef BUILD_ECORE_EVAS_OPENGL_GLEW
86 # include <Evas_Engine_GL_Glew.h>
88 # ifdef BUILD_ECORE_EVAS_SOFTWARE_16_DDRAW
89 # include <Evas_Engine_Software_16_DDraw.h>
93 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
94 # include "Ecore_WinCE.h"
95 # include <Evas_Engine_Software_16_WinCE.h>
99 Log domain macros and variable
102 extern int _ecore_evas_log_dom;
104 #ifdef ECORE_EVAS_DEFAULT_LOG_COLOR
105 # undef ECORE_EVAS_DEFAULT_LOG_COLOR
107 #define ECORE_EVAS_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
112 #define ERR(...) EINA_LOG_DOM_ERR(_ecore_evas_log_dom, __VA_ARGS__)
116 #define DBG(...) EINA_LOG_DOM_DBG(_ecore_evas_log_dom, __VA_ARGS__)
120 #define INF(...) EINA_LOG_DOM_INFO(_ecore_evas_log_dom, __VA_ARGS__)
124 #define WRN(...) EINA_LOG_DOM_WARN(_ecore_evas_log_dom, __VA_ARGS__)
128 #define CRIT(...) EINA_LOG_DOM_CRIT(_ecore_evas_log_dom, __VA_ARGS__)
131 #define IDLE_FLUSH_TIME 0.5
132 #ifndef _ECORE_EVAS_H
133 typedef struct _Ecore_Evas Ecore_Evas;
136 typedef struct _Ecore_Evas_Engine Ecore_Evas_Engine;
137 typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func;
139 struct _Ecore_Evas_Engine_Func
141 void (*fn_free) (Ecore_Evas *ee);
142 void (*fn_callback_resize_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
143 void (*fn_callback_move_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
144 void (*fn_callback_show_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
145 void (*fn_callback_hide_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
146 void (*fn_callback_delete_request_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
147 void (*fn_callback_destroy_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
148 void (*fn_callback_focus_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
149 void (*fn_callback_focus_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
150 void (*fn_callback_mouse_in_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
151 void (*fn_callback_mouse_out_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
152 void (*fn_callback_sticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
153 void (*fn_callback_unsticky_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
154 void (*fn_callback_pre_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
155 void (*fn_callback_post_render_set) (Ecore_Evas *ee, void (*func) (Ecore_Evas *ee));
156 void (*fn_move) (Ecore_Evas *ee, int x, int y);
157 void (*fn_managed_move) (Ecore_Evas *ee, int x, int y);
158 void (*fn_resize) (Ecore_Evas *ee, int w, int h);
159 void (*fn_move_resize) (Ecore_Evas *ee, int x, int y, int w, int h);
160 void (*fn_rotation_set) (Ecore_Evas *ee, int rot, int resize);
161 void (*fn_shaped_set) (Ecore_Evas *ee, int shaped);
162 void (*fn_show) (Ecore_Evas *ee);
163 void (*fn_hide) (Ecore_Evas *ee);
164 void (*fn_raise) (Ecore_Evas *ee);
165 void (*fn_lower) (Ecore_Evas *ee);
166 void (*fn_activate) (Ecore_Evas *ee);
167 void (*fn_title_set) (Ecore_Evas *ee, const char *t);
168 void (*fn_name_class_set) (Ecore_Evas *ee, const char *n, const char *c);
169 void (*fn_size_min_set) (Ecore_Evas *ee, int w, int h);
170 void (*fn_size_max_set) (Ecore_Evas *ee, int w, int h);
171 void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h);
172 void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h);
173 void (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
174 void (*fn_layer_set) (Ecore_Evas *ee, int layer);
175 void (*fn_focus_set) (Ecore_Evas *ee, int on);
176 void (*fn_iconified_set) (Ecore_Evas *ee, int on);
177 void (*fn_borderless_set) (Ecore_Evas *ee, int on);
178 void (*fn_override_set) (Ecore_Evas *ee, int on);
179 void (*fn_maximized_set) (Ecore_Evas *ee, int on);
180 void (*fn_fullscreen_set) (Ecore_Evas *ee, int on);
181 void (*fn_avoid_damage_set) (Ecore_Evas *ee, int on);
182 void (*fn_withdrawn_set) (Ecore_Evas *ee, int withdrawn);
183 void (*fn_sticky_set) (Ecore_Evas *ee, int sticky);
184 void (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
185 void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
186 void (*fn_transparent_set) (Ecore_Evas *ee, int transparent);
188 int (*fn_render) (Ecore_Evas *ee);
191 struct _Ecore_Evas_Engine
193 Ecore_Evas_Engine_Func *func;
195 #ifdef BUILD_ECORE_EVAS_X11
197 Ecore_X_Window win_root;
198 Eina_List *win_extra;
202 Ecore_X_XRegion *damages;
203 Ecore_X_Sync_Counter sync_counter;
204 Ecore_X_Window leader;
205 int sync_val; // bigger! this will screw up at 2 billion frames (414 days of continual rendering @ 60fps)
208 unsigned char direct_resize : 1;
209 unsigned char using_bg_pixmap : 1;
210 unsigned char managed : 1;
211 unsigned char sync_began : 1;
212 unsigned char sync_cancel : 1;
214 unsigned char modal : 1;
215 unsigned char sticky : 1;
216 unsigned char maximized_v : 1;
217 unsigned char maximized_h : 1;
218 unsigned char shaded : 1;
219 unsigned char skip_taskbar : 1;
220 unsigned char skip_pager : 1;
221 unsigned char fullscreen : 1;
222 unsigned char above : 1;
223 unsigned char below : 1;
227 #ifdef BUILD_ECORE_EVAS_FB
233 #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
237 void (*free_func) (void *data, void *pix);
238 void *(*alloc_func) (void *data, int size);
242 #ifdef BUILD_ECORE_EVAS_DIRECTFB
244 Ecore_DirectFB_Window *window;
247 #ifdef BUILD_ECORE_EVAS_WIN32
249 Ecore_Win32_Window *parent;
251 unsigned char region : 1;
252 unsigned char fullscreen : 1;
256 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
258 Ecore_WinCE_Window *window;
260 unsigned char fullscreen : 1;
265 Ecore_Timer *idle_flush_timer;
277 Eina_Bool shaped : 1;
278 Eina_Bool visible : 1;
279 Eina_Bool draw_ok : 1;
280 Eina_Bool should_be_visible : 1;
282 Eina_Bool transparent : 1;
317 unsigned char avoid_damage;
326 char request_pos : 1;
330 void (*fn_resize) (Ecore_Evas *ee);
331 void (*fn_move) (Ecore_Evas *ee);
332 void (*fn_show) (Ecore_Evas *ee);
333 void (*fn_hide) (Ecore_Evas *ee);
334 void (*fn_delete_request) (Ecore_Evas *ee);
335 void (*fn_destroy) (Ecore_Evas *ee);
336 void (*fn_focus_in) (Ecore_Evas *ee);
337 void (*fn_focus_out) (Ecore_Evas *ee);
338 void (*fn_sticky) (Ecore_Evas *ee);
339 void (*fn_unsticky) (Ecore_Evas *ee);
340 void (*fn_mouse_in) (Ecore_Evas *ee);
341 void (*fn_mouse_out) (Ecore_Evas *ee);
342 void (*fn_pre_render) (Ecore_Evas *ee);
343 void (*fn_post_render) (Ecore_Evas *ee);
344 void (*fn_pre_free) (Ecore_Evas *ee);
347 Ecore_Evas_Engine engine;
348 Eina_List *sub_ecore_evas;
350 unsigned char ignore_events : 1;
351 unsigned char manual_render : 1;
352 unsigned char registered : 1;
353 unsigned char no_comp_sync : 1;
356 #ifdef BUILD_ECORE_EVAS_X11
357 int _ecore_evas_x_shutdown(void);
359 #ifdef BUILD_ECORE_EVAS_FB
360 int _ecore_evas_fb_shutdown(void);
362 #ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
363 int _ecore_evas_buffer_shutdown(void);
364 int _ecore_evas_buffer_render(Ecore_Evas *ee);
366 #ifdef BUILD_ECORE_EVAS_DIRECTFB
367 int _ecore_evas_directfb_shutdown(void);
369 #ifdef BUILD_ECORE_EVAS_WIN32
370 int _ecore_evas_win32_shutdown(void);
372 #ifdef BUILD_ECORE_EVAS_SOFTWARE_16_WINCE
373 int _ecore_evas_wince_shutdown(void);
376 void _ecore_evas_fps_debug_init(void);
377 void _ecore_evas_fps_debug_shutdown(void);
378 void _ecore_evas_fps_debug_rendertime_add(double t);
379 void _ecore_evas_register(Ecore_Evas *ee);
380 void _ecore_evas_free(Ecore_Evas *ee);
381 void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);
382 void _ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp);
384 extern Eina_Bool _ecore_evas_app_comp_sync;