3 /* local subsystem functions */
4 static Eina_Bool _e_canvas_cb_flush(void *data);
6 /* local subsystem globals */
7 static Eina_List *_e_canvases = NULL;
8 static Ecore_Poller *_e_canvas_cache_flush_poller = NULL;
10 /* externally accessible functions */
12 e_canvas_add(Ecore_Evas *ee)
16 _e_canvases = eina_list_prepend(_e_canvases, ee);
17 e = ecore_evas_get(ee);
18 evas_image_cache_set(e, e_config->image_cache * 1024);
19 evas_font_cache_set(e, e_config->font_cache * 1024);
20 e_path_evas_append(path_fonts, e);
21 if (e_config->font_hinting == 0)
23 if (evas_font_hinting_can_hint(e, EVAS_FONT_HINTING_BYTECODE))
24 evas_font_hinting_set(e, EVAS_FONT_HINTING_BYTECODE);
25 else if (evas_font_hinting_can_hint(e, EVAS_FONT_HINTING_AUTO))
26 evas_font_hinting_set(e, EVAS_FONT_HINTING_AUTO);
28 evas_font_hinting_set(e, EVAS_FONT_HINTING_NONE);
30 else if (e_config->font_hinting == 1)
32 if (evas_font_hinting_can_hint(e, EVAS_FONT_HINTING_AUTO))
33 evas_font_hinting_set(e, EVAS_FONT_HINTING_AUTO);
35 evas_font_hinting_set(e, EVAS_FONT_HINTING_NONE);
37 else if (e_config->font_hinting == 2)
38 evas_font_hinting_set(e, EVAS_FONT_HINTING_NONE);
42 e_canvas_del(Ecore_Evas *ee)
44 _e_canvases = eina_list_remove(_e_canvases, ee);
48 e_canvas_recache(void)
53 EINA_LIST_FOREACH(_e_canvases, l, ee)
57 e = ecore_evas_get(ee);
58 evas_image_cache_set(e, e_config->image_cache * 1024);
59 evas_font_cache_set(e, e_config->font_cache * 1024);
61 edje_file_cache_set(e_config->edje_cache);
62 edje_collection_cache_set(e_config->edje_collection_cache);
63 if (_e_canvas_cache_flush_poller)
65 ecore_poller_del(_e_canvas_cache_flush_poller);
66 _e_canvas_cache_flush_poller = NULL;
68 if (e_config->cache_flush_poll_interval > 0)
70 _e_canvas_cache_flush_poller =
71 ecore_poller_add(ECORE_POLLER_CORE,
72 e_config->cache_flush_poll_interval,
73 _e_canvas_cb_flush, NULL);
78 e_canvas_cache_flush(void)
83 EINA_LIST_FOREACH(_e_canvases, l, ee)
87 e = ecore_evas_get(ee);
88 evas_image_cache_flush(e);
89 evas_font_cache_flush(e);
91 edje_file_cache_flush();
92 edje_collection_cache_flush();
96 e_canvas_cache_reload(void)
101 EINA_LIST_FOREACH(_e_canvases, l, ee)
105 e = ecore_evas_get(ee);
106 evas_image_cache_reload(e);
111 e_canvas_idle_flush(void)
116 EINA_LIST_FOREACH(_e_canvases, l, ee)
120 e = ecore_evas_get(ee);
121 evas_render_idle_flush(e);
126 e_canvas_rehint(void)
131 EINA_LIST_FOREACH(_e_canvases, l, ee)
135 e = ecore_evas_get(ee);
136 if (e_config->font_hinting == 0)
137 evas_font_hinting_set(e, EVAS_FONT_HINTING_BYTECODE);
138 else if (e_config->font_hinting == 1)
139 evas_font_hinting_set(e, EVAS_FONT_HINTING_AUTO);
140 else if (e_config->font_hinting == 2)
141 evas_font_hinting_set(e, EVAS_FONT_HINTING_NONE);
146 e_canvas_new(Ecore_X_Window win, int x, int y, int w, int h,
147 int direct_resize, int override, Ecore_X_Window *win_ret)
151 ee = ecore_evas_software_x11_new(NULL, win, x, y, w, h);
154 ecore_evas_override_set(ee, override);
155 if (direct_resize) ecore_evas_software_x11_direct_resize_set(ee, 1);
156 if (win_ret) *win_ret = ecore_evas_software_x11_window_get(ee);
159 EINA_LOG_ERR("Impossible to build any Ecore_Evas window !!");
163 /* local subsystem functions */
165 _e_canvas_cb_flush(void *data __UNUSED__)
167 e_canvas_cache_flush();
168 return ECORE_CALLBACK_RENEW;