diff --git a/src/examples/ecore/ecore_evas_ews_example.c b/src/examples/ecore/ecore_evas_ews_example.c deleted file mode 100644 index b4415cb5e9..0000000000 --- a/src/examples/ecore/ecore_evas_ews_example.c +++ /dev/null @@ -1,269 +0,0 @@ -/** - * Ecore example illustrating the ews of ecore evas usage. - * - * You'll need at least one Evas engine built for it (excluding the - * buffer one). See stdout/stderr for output. - * - * @verbatim - * gcc -o ecore_evas_ews_example ecore_evas_ews_example.c `pkg-config --libs --cflags ecore evas ecore-evas` - * @endverbatim - */ - -#include -#include -#include -#include -#include - -static Eina_Bool -_wm_win_add(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - printf("WM: new window=%p\n", ee); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_move(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - printf("WM: window=%p moved to %d,%d\n", ee, x, y); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_resize(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - printf("WM: window=%p resized to %dx%d\n", ee, w, h); - return EINA_TRUE; -} - -static Eina_Bool -_wm_win_show(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - printf("WM: show window=%p\n", ee); - return EINA_TRUE; -} - -static void -optional_ews_window_manager_setup(void) -{ - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_ADD, _wm_win_add, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_MOVE, _wm_win_move, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_RESIZE, _wm_win_resize, NULL); - ecore_event_handler_add(ECORE_EVAS_EWS_EVENT_SHOW, _wm_win_show, NULL); - - /* one may use any known unique identifier, like an app function pointer */ - ecore_evas_ews_manager_set(optional_ews_window_manager_setup); -} - -static void -optional_ews_setup(void) -{ - Evas_Object *bg; - Evas *e; - - ecore_evas_ews_setup(0, 0, 800, 600); /* "screen" size */ - e = ecore_evas_ews_evas_get(); /* forces "screen" to be allocated */ - - bg = evas_object_rectangle_add(e); - evas_object_color_set(bg, 128, 32, 32, 255); - ecore_evas_ews_background_set(bg); -} - -static Eina_Bool -_stdin_cb(void *data EINA_UNUSED, Ecore_Fd_Handler *handler EINA_UNUSED) -{ - const Eina_List *l; - Ecore_Evas *ee; - int c = getchar(); - - if (c == EOF) - { - ecore_main_loop_quit(); - return EINA_FALSE; - } - - switch (c) { - case 'h': - printf("hide all windows\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_hide(ee); - break; - - case 's': - printf("show all windows\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_show(ee); - break; - - case 'l': - printf("move all windows left\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x - 10, y); - } - break; - - case 'r': - printf("move all windows right\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x + 10, y); - } - break; - - case 't': - printf("move all windows top\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x, y - 10); - } - break; - - case 'b': - printf("move all windows bottom\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int x, y; - ecore_evas_geometry_get(ee, &x, &y, NULL, NULL); - ecore_evas_move(ee, x, y + 10); - } - break; - - case 'S': - printf("make all windows smaller\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - ecore_evas_resize(ee, w - 10, h - 10); - } - break; - - case 'B': - printf("make all windows bigger\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - { - int w, h; - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - ecore_evas_resize(ee, w + 10, h + 10); - } - break; - - case 'm': - printf("make all windows unmaximized\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_maximized_set(ee, EINA_FALSE); - break; - - case 'M': - printf("make all windows maximized\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_maximized_set(ee, EINA_TRUE); - break; - - case 'i': - printf("make all windows uniconified\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_iconified_set(ee, EINA_FALSE); - break; - - case 'I': - printf("make all windows iconified\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_iconified_set(ee, EINA_TRUE); - break; - - case 'f': - printf("make all windows unfullscreen\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_fullscreen_set(ee, EINA_FALSE); - break; - - case 'F': - printf("make all windows fullscreen\n"); - EINA_LIST_FOREACH(ecore_evas_ews_children_get(), l, ee) - ecore_evas_fullscreen_set(ee, EINA_TRUE); - break; - - case 'q': - printf("quit\n"); - ecore_main_loop_quit(); - break; - - default: - if (!isspace(c)) - printf("Unknown command: %c\n", c); - } - return ECORE_CALLBACK_RENEW; -} - -static void -_on_delete(Ecore_Evas *ee) -{ - free(ecore_evas_data_get(ee, "key")); - ecore_main_loop_quit(); -} - -int -main(void) -{ - Ecore_Evas *ee; - Evas *canvas; - Evas_Object *bg; - - if (ecore_evas_init() <= 0) - return 1; - - optional_ews_setup(); - optional_ews_window_manager_setup(); - - /* everything should look similar to ecore_evas_basic_example */ - ee = ecore_evas_ews_new(0, 0, 200, 200); - ecore_evas_title_set(ee, "Ecore Evas EWS Example"); - ecore_evas_show(ee); - - ecore_evas_data_set(ee, "key", strdup("hello")); - ecore_evas_callback_delete_request_set(ee, _on_delete); - - printf("Using %s engine!\n", ecore_evas_engine_name_get(ee)); - - canvas = ecore_evas_get(ee); - if (ecore_evas_ecore_evas_get(canvas) == ee) - printf("Everything is sane!\n"); - - bg = evas_object_rectangle_add(canvas); - evas_object_color_set(bg, 0, 0, 255, 255); - evas_object_resize(bg, 200, 200); - evas_object_show(bg); - ecore_evas_object_associate(ee, bg, ECORE_EVAS_OBJECT_ASSOCIATE_BASE); - - /* moving the window should move it in the screen */ - ecore_evas_move(ee, 50, 50); - - ecore_main_fd_handler_add(STDIN_FILENO, - ECORE_FD_READ | ECORE_FD_ERROR, - _stdin_cb, - NULL, NULL, NULL); - - ecore_main_loop_begin(); - - ecore_evas_free(ee); - ecore_evas_shutdown(); - - return 0; -} - diff --git a/src/examples/ecore/meson.build b/src/examples/ecore/meson.build index 197d88f083..2a7af4717a 100644 --- a/src/examples/ecore/meson.build +++ b/src/examples/ecore/meson.build @@ -73,7 +73,6 @@ examples = [ 'ecore_evas_buffer_example_01', 'ecore_evas_buffer_example_02', 'ecore_evas_callbacks', - 'ecore_evas_ews_example', 'ecore_evas_object_example', 'ecore_evas_window_sizes_example', ] diff --git a/src/lib/ecore_evas/Ecore_Evas.h b/src/lib/ecore_evas/Ecore_Evas.h index 89a9ff843f..dfbd7a749f 100644 --- a/src/lib/ecore_evas/Ecore_Evas.h +++ b/src/lib/ecore_evas/Ecore_Evas.h @@ -97,7 +97,7 @@ extern "C" { #define HAVE_ECORE_EVAS_COCOA 1 #define HAVE_ECORE_EVAS_SDL 1 //#define HAVE_ECORE_EVAS_WINCE 1 -#define HAVE_ECORE_EVAS_EWS 1 +//#define HAVE_ECORE_EVAS_EWS 1 /* @deprecated */ #define HAVE_ECORE_EVAS_PSL1GHT 1 #define HAVE_ECORE_EVAS_WAYLAND_SHM 1 #define HAVE_ECORE_EVAS_WAYLAND_EGL 1 @@ -125,7 +125,7 @@ typedef enum _Ecore_Evas_Engine_Type ECORE_EVAS_ENGINE_SOFTWARE_16_DDRAW, ECORE_EVAS_ENGINE_SOFTWARE_16_WINCE, ECORE_EVAS_ENGINE_OPENGL_SDL, - ECORE_EVAS_ENGINE_EWS, + ECORE_EVAS_ENGINE_EWS, /* @deprecated */ ECORE_EVAS_ENGINE_PSL1GHT, ECORE_EVAS_ENGINE_WAYLAND_SHM, ECORE_EVAS_ENGINE_WAYLAND_EGL, @@ -1788,6 +1788,7 @@ EAPI Ecore_Evas *ecore_evas_buffer_ecore_evas_parent_get(Ecore_Evas *ee); * @see ecore_evas_ews_ecore_evas_get() * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h); @@ -1806,6 +1807,7 @@ EAPI Ecore_Evas *ecore_evas_ews_new(int x, int y, int w, int h); * @see ecore_evas_ews_manager_set() * @see ecore_evas_ews_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee); @@ -1816,6 +1818,7 @@ EAPI Evas_Object *ecore_evas_ews_backing_store_get(const Ecore_Evas *ee); * @param ee The Ecore_Evas for which window will be deleted. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_delete_request(Ecore_Evas *ee); @@ -3216,6 +3219,7 @@ EAPI void ecore_evas_callback_new_set(Evas *(*func)(int w, int h)); * ecore_evas_ews_new(). * * @since 1.1 + * @deprecated - @since 1.26 * @{ */ @@ -3227,6 +3231,7 @@ EAPI void ecore_evas_callback_new_set(Evas *(*func)(int w, int h)); * @return @c EINA_TRUE on success, @c EINA_FALSE if ews is already in use. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options); @@ -3240,6 +3245,7 @@ EAPI Eina_Bool ecore_evas_ews_engine_set(const char *engine, const char *options * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h); @@ -3253,6 +3259,7 @@ EAPI Eina_Bool ecore_evas_ews_setup(int x, int y, int w, int h); * * @see ecore_evas_ews_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void); @@ -3266,11 +3273,13 @@ EAPI Ecore_Evas *ecore_evas_ews_ecore_evas_get(void); * * @see ecore_evas_ews_ecore_evas_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI Evas *ecore_evas_ews_evas_get(void); /** * @brief Gets the current background. + * @deprecated - @since 1.26 */ EAPI Evas_Object *ecore_evas_ews_background_get(void); @@ -3284,6 +3293,7 @@ EAPI Evas_Object *ecore_evas_ews_background_get(void); * rectangle. * * @note previous object will be deleted! + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_background_set(Evas_Object *o); @@ -3295,6 +3305,7 @@ EAPI void ecore_evas_ews_background_set(Evas_Object *o); * @note Do not change the returned list or its contents. * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI const Eina_List *ecore_evas_ews_children_get(void); @@ -3309,6 +3320,7 @@ EAPI const Eina_List *ecore_evas_ews_children_get(void); * * @see ecore_evas_ews_manager_get() * @since 1.1 + * @deprecated - @since 1.26 */ EAPI void ecore_evas_ews_manager_set(const void *manager); @@ -3318,6 +3330,7 @@ EAPI void ecore_evas_ews_manager_set(const void *manager); * @return the value set by ecore_evas_ews_manager_set() * * @since 1.1 + * @deprecated - @since 1.26 */ EAPI const void *ecore_evas_ews_manager_get(void); diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index a579abff97..080a2f3894 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -565,11 +565,7 @@ ecore_evas_engine_type_supported_get(Ecore_Evas_Engine_Type engine) return EINA_FALSE; #endif case ECORE_EVAS_ENGINE_EWS: -#ifdef BUILD_ECORE_EVAS_EWS - return EINA_TRUE; -#else return EINA_FALSE; -#endif case ECORE_EVAS_ENGINE_PSL1GHT: return EINA_FALSE; case ECORE_EVAS_ENGINE_WAYLAND_SHM: @@ -632,10 +628,6 @@ ecore_evas_init(void) if (getenv("ECORE_EVAS_RENDER_NOSYNC")) _ecore_evas_render_sync = 0; if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init(); -#ifdef BUILD_ECORE_EVAS_EWS - _ecore_evas_ews_events_init(); -#endif - _ecore_evas_extn_init(); _ecore_evas_engine_init(); @@ -680,10 +672,6 @@ ecore_evas_shutdown(void) EINA_LOG_STATE_START, EINA_LOG_STATE_SHUTDOWN); -#ifdef BUILD_ECORE_EVAS_EWS - _ecore_evas_ews_events_flush(); -#endif - while (ecore_evases) _ecore_evas_free(ecore_evases); if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown(); @@ -694,9 +682,6 @@ ecore_evas_shutdown(void) _ecore_evas_extn_shutdown(); -#ifdef BUILD_ECORE_EVAS_EWS - while (_ecore_evas_ews_shutdown()); -#endif _ecore_evas_engine_shutdown(); eina_log_domain_unregister(_ecore_evas_log_dom); @@ -995,14 +980,6 @@ _ecore_evas_constructor_buffer(int x EINA_UNUSED, int y EINA_UNUSED, int w, int return ecore_evas_buffer_new(w, h); } -#ifdef BUILD_ECORE_EVAS_EWS -static Ecore_Evas * -_ecore_evas_constructor_ews(int x, int y, int w, int h, const char *extra_options EINA_UNUSED) -{ - return ecore_evas_ews_new(x, y, w, h); -} -#endif - /* note: keep sorted by priority, highest first */ static const struct ecore_evas_engine _engines[] = { /* unix */ @@ -1022,9 +999,6 @@ static const struct ecore_evas_engine _engines[] = { {"opengl_sdl", _ecore_evas_constructor_opengl_sdl}, {"sdl", _ecore_evas_constructor_sdl}, {"buffer", _ecore_evas_constructor_buffer}, -#ifdef BUILD_ECORE_EVAS_EWS - {"ews", _ecore_evas_constructor_ews}, -#endif {NULL, NULL} }; diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c index 2f3f2ff72b..569fe0a077 100644 --- a/src/lib/ecore_evas/ecore_evas_buffer.c +++ b/src/lib/ecore_evas/ecore_evas_buffer.c @@ -219,7 +219,6 @@ ecore_evas_buffer_render(Ecore_Evas *ee) return r; } -// NOTE: if you fix this, consider fixing ecore_evas_ews.c as it is similar! static void _ecore_evas_buffer_coord_translate(Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y) { diff --git a/src/lib/ecore_evas/ecore_evas_ews.c b/src/lib/ecore_evas/ecore_evas_ews.c index 86e939f765..a30617f571 100644 --- a/src/lib/ecore_evas/ecore_evas_ews.c +++ b/src/lib/ecore_evas/ecore_evas_ews.c @@ -34,1459 +34,73 @@ EAPI int ECORE_EVAS_EWS_EVENT_LAYER_CHANGE = 0; EAPI int ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE = 0; EAPI int ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE = 0; -#ifdef BUILD_ECORE_EVAS_EWS -static int _ecore_evas_init_count = 0; - -static Ecore_Evas *_ews_ee = NULL; -static Evas_Object *_ews_bg = NULL; -static Eina_List *_ews_children = NULL; -static const void *_ews_manager = NULL; -static char *_ews_engine = NULL; -static char *_ews_options = NULL; -static int _ews_x = 0; -static int _ews_y = 0; -static int _ews_w = 1024; -static int _ews_h = 768; -static Eina_Bool _ews_defaults_engine = EINA_TRUE; -static Eina_Bool _ews_defaults_geo = EINA_TRUE; - -static const char EWS_ENGINE_NAME[] = "ews"; - -static void -_ecore_evas_ews_pre_free(Ecore_Evas *ee EINA_UNUSED) -{ - DBG("EWS backing store free'd"); - _ews_children = eina_list_free(_ews_children); - _ews_ee = NULL; - _ews_bg = NULL; -} - -static void -_ecore_evas_ews_del_request(Ecore_Evas *ee EINA_UNUSED) -{ - INF("EWS backing store deletion is forbidden!"); -} - -static Ecore_Evas * -_ecore_evas_ews_ee_new(void) -{ - Ecore_Evas *ee = ecore_evas_new(_ews_engine, _ews_x, _ews_y, _ews_w, _ews_h, - _ews_options); - if (!ee) - ERR("Failed: ecore_evas_new(%s, %d, %d, %d, %d, %s)", - _ews_engine, _ews_x, _ews_y, _ews_w, _ews_h, _ews_options); - else - { - ecore_evas_size_min_set(ee, _ews_w, _ews_h); - ecore_evas_size_max_set(ee, _ews_w, _ews_h); - ecore_evas_callback_pre_free_set(ee, _ecore_evas_ews_pre_free); - ecore_evas_callback_delete_request_set(ee, _ecore_evas_ews_del_request); - ecore_evas_name_class_set(ee, "ecore_evas_ews", "ews"); - ecore_evas_title_set - (ee, "EWS: Ecore + Evas Single Process Windowing System"); - ecore_evas_show(ee); - } - - return ee; -} - -static void -_ecore_evas_ews_env_setup(void) -{ - const char *env = getenv("ECORE_EVAS_EWS"); - char *p, *n, *tmp; - - if (_ews_defaults_engine) - { - free(_ews_engine); - _ews_engine = NULL; - free(_ews_options); - _ews_options = NULL; - } - if (_ews_defaults_geo) - { - _ews_x = 0; - _ews_y = 0; - _ews_w = 1024; - _ews_h = 768; - } - - if ((!env) || (!*env)) return; - - p = tmp = strdup(env); - if (!tmp) return; - - n = strchr(p, ':'); - if (n) *n = '\0'; - if (_ews_defaults_engine) _ews_engine = strdup(p); - if (!n) goto end; - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_x = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_y = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (!n) goto end; - *n = '\0'; - if (_ews_defaults_geo) _ews_w = atoi(p); - - p = n + 1; - n = strchr(p, ':'); - if (n) *n = '\0'; - if (_ews_defaults_geo) _ews_h = atoi(p); - if (!n) goto end; - - p = n + 1; - if (_ews_defaults_engine) _ews_options = strdup(p); - - end: - free(tmp); -} - -static void -_ecore_evas_ews_event_free(void *data EINA_UNUSED, void *ev) -{ - Ecore_Evas *ee = ev; - _ecore_evas_unref(ee); -} - -static void -_ecore_evas_ews_event(Ecore_Evas *ee, int event) -{ - _ecore_evas_ref(ee); - ecore_event_add(event, ee, _ecore_evas_ews_event_free, NULL); -} - -static void -_ecore_evas_ews_event_free_del(void *data EINA_UNUSED, void *ev EINA_UNUSED) -{ - _ecore_evas_ews_shutdown(); -} - -static void -_ecore_evas_ews_free(Ecore_Evas *ee) -{ - evas_object_del(ee->engine.ews.image); - _ews_ee->sub_ecore_evas = eina_list_remove(_ews_ee->sub_ecore_evas, ee); - - ecore_event_add(ECORE_EVAS_EWS_EVENT_DEL, ee, _ecore_evas_ews_event_free_del, NULL); -} - -static void -_ecore_evas_ews_move(Ecore_Evas *ee, int x, int y) -{ - ee->req.x = x; - ee->req.y = y; - - if ((x == ee->x) && (y == ee->y)) return; - ee->x = x; - ee->y = y; - evas_object_move(ee->engine.ews.image, x, y); - if (ee->func.fn_move) ee->func.fn_move(ee); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MOVE); -} - -static void -_ecore_evas_ews_managed_move(Ecore_Evas *ee, int x, int y) -{ - ee->req.x = x; - ee->req.y = y; - - if ((x == ee->x) && (y == ee->y)) return; - ee->x = x; - ee->y = y; - if (ee->func.fn_move) ee->func.fn_move(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MOVE); -} - -static void -_ecore_evas_ews_resize_internal(Ecore_Evas *ee, int w, int h) -{ - Evas_Engine_Info_Buffer *einfo; - void *pixels; - int stride; - - evas_output_size_set(ee->evas, w, h); - evas_output_viewport_set(ee->evas, 0, 0, w, h); - evas_damage_rectangle_add(ee->evas, 0, 0, w, h); - - evas_object_image_size_set(ee->engine.ews.image, w, h); - evas_object_image_fill_set(ee->engine.ews.image, 0, 0, w, h); - evas_object_resize(ee->engine.ews.image, w, h); - - pixels = evas_object_image_data_get(ee->engine.ews.image, 1); - evas_object_image_data_set(ee->engine.ews.image, pixels); // refcount - stride = evas_object_image_stride_get(ee->engine.ews.image); - - einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas); - EINA_SAFETY_ON_NULL_RETURN(einfo); - - einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; - einfo->info.dest_buffer = pixels; - einfo->info.dest_buffer_row_bytes = stride; - einfo->info.use_color_key = 0; - einfo->info.alpha_threshold = 0; - einfo->info.func.new_update_region = NULL; - einfo->info.func.free_update_region = NULL; - evas_object_image_data_set(ee->engine.ews.image, pixels); - if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - } -} - -static void -_ecore_evas_ews_resize(Ecore_Evas *ee, int w, int h) -{ - if (w < 1) w = 1; - if (h < 1) h = 1; - - ee->req.w = w; - ee->req.h = h; - - if ((w == ee->w) && (h == ee->h)) return; - ee->w = w; - ee->h = h; - _ecore_evas_ews_resize_internal(ee, w, h); - if (ee->func.fn_resize) ee->func.fn_resize(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_RESIZE); -} - -static void -_ecore_evas_ews_move_resize(Ecore_Evas *ee, int x, int y, int w, int h) -{ - _ecore_evas_ews_move(ee, x, y); - _ecore_evas_ews_resize(ee, w, h); -} - -static void -_ecore_evas_ews_rotation_set(Ecore_Evas *ee, int rot, int resize EINA_UNUSED) -{ - if (ee->rotation == rot) return; - ee->rotation = rot; - - ERR("TODO: rot=%d, resize=%d", rot, resize); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_shaped_set(Ecore_Evas *ee, int val) -{ - if (ee->shaped == val) return; - ee->shaped = val; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_show(Ecore_Evas *ee) -{ - ee->should_be_visible = EINA_TRUE; - evas_object_show(ee->engine.ews.image); - if (ee->prop.fullscreen) - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - - if (ee->func.fn_show) ee->func.fn_show(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_SHOW); -} - -static void -_ecore_evas_ews_hide(Ecore_Evas *ee) -{ - ee->should_be_visible = EINA_FALSE; - evas_object_hide(ee->engine.ews.image); - - if (ee->func.fn_hide) ee->func.fn_hide(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_HIDE); -} - -static void -_ecore_evas_ews_raise(Ecore_Evas *ee) -{ - evas_object_raise(ee->engine.ews.image); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_RAISE); -} - -static void -_ecore_evas_ews_lower(Ecore_Evas *ee) -{ - evas_object_lower(ee->engine.ews.image); - evas_object_lower(_ews_bg); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_LOWER); -} - -static void -_ecore_evas_ews_activate(Ecore_Evas *ee) -{ - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ACTIVATE); -} - -static void -_ecore_evas_ews_title_set(Ecore_Evas *ee, const char *t) -{ - if (ee->prop.title) free(ee->prop.title); - ee->prop.title = NULL; - if (t) ee->prop.title = strdup(t); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_name_class_set(Ecore_Evas *ee, const char *n, const char *c) -{ - if (ee->prop.name) free(ee->prop.name); - if (ee->prop.clas) free(ee->prop.clas); - ee->prop.name = NULL; - ee->prop.clas = NULL; - if (n) ee->prop.name = strdup(n); - if (c) ee->prop.clas = strdup(c); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_min_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.min.w == w) && (ee->prop.min.h == h)) return; - ee->prop.min.w = w; - ee->prop.min.h = h; - evas_object_size_hint_min_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_max_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.max.w == w) && (ee->prop.max.h == h)) return; - ee->prop.max.w = w; - ee->prop.max.h = h; - evas_object_size_hint_max_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_base_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 0) w = 0; - if (h < 0) h = 0; - if ((ee->prop.base.w == w) && (ee->prop.base.h == h)) return; - ee->prop.base.w = w; - ee->prop.base.h = h; - evas_object_size_hint_request_set(ee->engine.ews.image, w, h); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_size_step_set(Ecore_Evas *ee, int w, int h) -{ - if (w < 1) w = 1; - if (h < 1) h = 1; - if ((ee->prop.step.w == w) && (ee->prop.step.h == h)) return; - ee->prop.step.w = w; - ee->prop.step.h = h; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj EINA_UNUSED, - int layer EINA_UNUSED, int hot_x EINA_UNUSED, - int hot_y EINA_UNUSED) -{ - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_layer_set(Ecore_Evas *ee, int layer) -{ - if (layer < EVAS_LAYER_MIN + 2) - layer = EVAS_LAYER_MIN + 2; - else if (layer > EVAS_LAYER_MAX) - layer = EVAS_LAYER_MAX; - - if (ee->prop.layer == layer) return; - ee->prop.layer = layer; - evas_object_layer_set(ee->engine.ews.image, layer); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_LAYER_CHANGE); -} - -static void -_ecore_evas_ews_focus_set(Ecore_Evas *ee, Eina_Bool on) -{ - evas_object_focus_set(ee->engine.ews.image, on); - _ecore_evas_focus_device_set(ee, NULL, on); - if (on) - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_FOCUS); - else - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_UNFOCUS); -} - -static void -_ecore_evas_ews_iconified_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.iconified == on) return; - ee->prop.iconified = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE); -} - -static void -_ecore_evas_ews_borderless_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.borderless == on) return; - ee->prop.borderless = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_override_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.override == on) return; - if (ee->visible) evas_object_show(ee->engine.ews.image); - if (ecore_evas_focus_device_get(ee, NULL)) - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - ee->prop.override = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_maximized_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.maximized == on) return; - ee->prop.maximized = on; - if (on) evas_object_show(ee->engine.ews.image); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE); -} - -static void -_ecore_evas_ews_fullscreen_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.fullscreen == on) return; - ee->prop.fullscreen = on; - - if (!on) - { - evas_object_move(ee->engine.ews.image, ee->x, ee->y); - evas_object_resize(ee->engine.ews.image, ee->w, ee->h); - } - else - { - Evas_Coord w, h; - ecore_evas_geometry_get(_ews_ee, NULL, NULL, &w, &h); - evas_object_move(ee->engine.ews.image, 0, 0); - evas_object_resize(ee->engine.ews.image, w, h); - evas_object_focus_set(ee->engine.ews.image, EINA_TRUE); - } - - if (ee->should_be_visible) - evas_object_show(ee->engine.ews.image); - else - evas_object_hide(ee->engine.ews.image); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE); -} - -static void -_ecore_evas_ews_avoid_damage_set(Ecore_Evas *ee, int val) -{ - if (ee->prop.avoid_damage == val) return; - ee->prop.avoid_damage = val; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_withdrawn_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.withdrawn == on) return; - ee->prop.withdrawn = on; - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_sticky_set(Ecore_Evas *ee, Eina_Bool on) -{ - if (ee->prop.sticky == on) return; - ee->prop.sticky = on; - if ((on) && (ee->func.fn_sticky)) ee->func.fn_sticky(ee); - else if ((!on) && (ee->func.fn_unsticky)) ee->func.fn_unsticky(ee); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_ignore_events_set(Ecore_Evas *ee, int val) -{ - if (ee->ignore_events == val) return; - ee->ignore_events = val; - evas_object_pass_events_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_alpha_set(Ecore_Evas *ee, int val) -{ - if (ee->alpha == val) return; - ee->alpha = val; - evas_object_image_alpha_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static void -_ecore_evas_ews_transparent_set(Ecore_Evas *ee, int val) -{ - if (ee->transparent == val) return; - ee->transparent = val; - evas_object_image_alpha_set(ee->engine.ews.image, val); - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static Eina_Bool -_ecore_evas_ews_prepare(Ecore_Evas *ee) -{ - Evas_Coord w, h; - void *pixels; - - evas_object_image_size_get(ee->engine.ews.image, &w, &h); - if ((w != ee->w) || (h != ee->h)) - ecore_evas_resize(ee, w, h); - - pixels = evas_object_image_data_get(ee->engine.ews.image, 1); - if (!pixels) return EINA_FALSE; - - evas_object_data_set(ee->engine.ews.image, "_ews.pixels", pixels); - - return EINA_TRUE; -} - -static void -_ecore_evas_ews_update_image(void *data, Evas *e EINA_UNUSED, void *event_info) -{ - Evas_Event_Render_Post *post = event_info; - Ecore_Evas *ee = data; - Eina_Rectangle *r; - Eina_List *l; - void *pixels; - - pixels = evas_object_data_get(ee->engine.ews.image, "_ews.pixels"); - if (!pixels) return ; - - evas_object_image_data_set(ee->engine.ews.image, pixels); - EINA_LIST_FOREACH(post->updated_area, l, r) - evas_object_image_data_update_add(ee->engine.ews.image, - r->x, r->y, r->w, r->h); - - evas_object_data_set(ee->engine.ews.image, "_ews.pixels", NULL); -} - -static void -_ecore_evas_ews_screen_geometry_get(const Ecore_Evas *ee EINA_UNUSED, int *x, int *y, int *w, int *h) -{ - ecore_evas_geometry_get(_ews_ee, x, y, w, h); -} - -static const Ecore_Evas_Engine_Func _ecore_ews_engine_func = -{ - _ecore_evas_ews_free, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - _ecore_evas_ews_move, - _ecore_evas_ews_managed_move, - _ecore_evas_ews_resize, - _ecore_evas_ews_move_resize, - _ecore_evas_ews_rotation_set, - _ecore_evas_ews_shaped_set, - _ecore_evas_ews_show, - _ecore_evas_ews_hide, - _ecore_evas_ews_raise, - _ecore_evas_ews_lower, - _ecore_evas_ews_activate, - _ecore_evas_ews_title_set, - _ecore_evas_ews_name_class_set, - _ecore_evas_ews_size_min_set, - _ecore_evas_ews_size_max_set, - _ecore_evas_ews_size_base_set, - _ecore_evas_ews_size_step_set, - _ecore_evas_ews_object_cursor_set, - NULL, - _ecore_evas_ews_layer_set, - _ecore_evas_ews_focus_set, - _ecore_evas_ews_iconified_set, - _ecore_evas_ews_borderless_set, - _ecore_evas_ews_override_set, - _ecore_evas_ews_maximized_set, - _ecore_evas_ews_fullscreen_set, - _ecore_evas_ews_avoid_damage_set, - _ecore_evas_ews_withdrawn_set, - _ecore_evas_ews_sticky_set, - _ecore_evas_ews_ignore_events_set, - _ecore_evas_ews_alpha_set, - _ecore_evas_ews_transparent_set, - NULL, // profiles_set - NULL, // profile_set - - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - - NULL, - _ecore_evas_ews_screen_geometry_get, - NULL, // screen_dpi_get - NULL, - NULL, // msg_send - - NULL, // pointer_xy_get - NULL, // pointer_warp - - NULL, // wm_rot_preferred_rotation_set - NULL, // wm_rot_available_rotations_set - NULL, // wm_rot_manual_rotation_done_set - NULL, // wm_rot_manual_rotation_done - - NULL, // aux_hints_set - - NULL, // fn_animator_register - NULL, // fn_animator_unregister - - NULL, // fn_evas_changed - NULL, //fn_focus_device_set - NULL, //fn_callback_focus_device_in_set - NULL, //fn_callback_focus_device_out_set - NULL, //fn_callback_device_mouse_in_set - NULL, //fn_callback_device_mouse_out_set - NULL, //fn_pointer_device_xy_get - _ecore_evas_ews_prepare, -}; - -void -_ecore_evas_ews_events_init(void) -{ - ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ADD = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_DEL = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_RESIZE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_MOVE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_SHOW = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_HIDE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_FOCUS = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_UNFOCUS = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_RAISE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_LOWER = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ACTIVATE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_LAYER_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE = ecore_event_type_new(); - ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE = ecore_event_type_new(); -} - -void -_ecore_evas_ews_events_flush(void) -{ - ecore_event_type_flush(ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE, - ECORE_EVAS_EWS_EVENT_ADD, - ECORE_EVAS_EWS_EVENT_DEL, - ECORE_EVAS_EWS_EVENT_RESIZE, - ECORE_EVAS_EWS_EVENT_MOVE, - ECORE_EVAS_EWS_EVENT_SHOW, - ECORE_EVAS_EWS_EVENT_HIDE, - ECORE_EVAS_EWS_EVENT_FOCUS, - ECORE_EVAS_EWS_EVENT_UNFOCUS, - ECORE_EVAS_EWS_EVENT_RAISE, - ECORE_EVAS_EWS_EVENT_LOWER, - ECORE_EVAS_EWS_EVENT_ACTIVATE, - ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE, - ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE, - ECORE_EVAS_EWS_EVENT_LAYER_CHANGE, - ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE, - ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE); -} - -static int -_ecore_evas_ews_init(void) -{ - _ecore_evas_init_count++; - if (_ecore_evas_init_count > 1) return _ecore_evas_init_count; - - _ecore_evas_ews_env_setup(); - - return _ecore_evas_init_count; -} - -int -_ecore_evas_ews_shutdown(void) -{ - _ecore_evas_init_count--; - if (_ecore_evas_init_count == 0) - { - if (_ews_ee) - { - ecore_evas_free(_ews_ee); - _ews_ee = NULL; - } - if (_ews_children) - { - eina_list_free(_ews_children); - _ews_children = NULL; - } - - free(_ews_engine); - _ews_engine = NULL; - free(_ews_options); - _ews_options = NULL; - _ews_defaults_engine = EINA_TRUE; - _ews_defaults_geo = EINA_TRUE; - - } - if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0; - return _ecore_evas_init_count; -} - -static void -_ecore_evas_ews_coord_translate(Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y) -{ - Evas_Coord xx, yy, ww, hh, fx, fy, fw, fh; - - evas_object_geometry_get(ee->engine.ews.image, &xx, &yy, &ww, &hh); - evas_object_image_fill_get(ee->engine.ews.image, &fx, &fy, &fw, &fh); - - if (fw < 1) fw = 1; - if (fh < 1) fh = 1; - - if ((fx == 0) && (fy == 0) && (fw == ww) && (fh == hh)) - { - *x = (ee->w * (*x - xx)) / fw; - *y = (ee->h * (*y - yy)) / fh; - } - else - { - xx = (*x - xx) - fx; - while (xx < 0) xx += fw; - while (xx > fw) xx -= fw; - *x = (ee->w * xx) / fw; - - yy = (*y - yy) - fy; - while (yy < 0) yy += fh; - while (yy > fh) yy -= fh; - *y = (ee->h * yy) / fh; - } -} - -static void -_ecore_evas_ews_modifiers_apply(Ecore_Evas *ee, const Evas_Modifier *modifier) -{ - Evas *e = ee->evas; - - if (evas_key_modifier_is_set(modifier, "Shift")) - evas_key_modifier_on(e, "Shift"); - else evas_key_modifier_off(e, "Shift"); - - if (evas_key_modifier_is_set(modifier, "Control")) - evas_key_modifier_on(e, "Control"); - else evas_key_modifier_off(e, "Control"); - - if (evas_key_modifier_is_set(modifier, "Alt")) - evas_key_modifier_on(e, "Alt"); - else evas_key_modifier_off(e, "Alt"); - - if (evas_key_modifier_is_set(modifier, "Super")) - evas_key_modifier_on(e, "Super"); - else evas_key_modifier_off(e, "Super"); - - if (evas_key_modifier_is_set(modifier, "Hyper")) - evas_key_modifier_on(e, "Hyper"); - else evas_key_modifier_off(e, "Hyper"); - - if (evas_key_modifier_is_set(modifier, "Scroll_Lock")) - evas_key_lock_on(e, "Scroll_Lock"); - else evas_key_lock_off(e, "Scroll_Lock"); - - if (evas_key_modifier_is_set(modifier, "Num_Lock")) - evas_key_lock_on(e, "Num_Lock"); - else evas_key_lock_off(e, "Num_Lock"); - - if (evas_key_modifier_is_set(modifier, "Caps_Lock")) - evas_key_lock_on(e, "Caps_Lock"); - else evas_key_lock_off(e, "Caps_Lock"); - - if (evas_key_modifier_is_set(modifier, "Shift_Lock")) - evas_key_lock_on(e, "Shift_Lock"); - else evas_key_lock_off(e, "Shift_Lock"); -} - -static void -_ecore_evas_ews_cb_mouse_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_In *ev = event_info; - Evas_Coord x = ev->canvas.x; - Evas_Coord y = ev->canvas.y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - if (ee->func.fn_mouse_in) ee->func.fn_mouse_in(ee); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_in(ee->evas, ev->timestamp, NULL); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Out *ev = event_info; - Evas_Coord x = ev->canvas.x; - Evas_Coord y = ev->canvas.y; - // TODO: consider grab mode in EWS - _ecore_evas_ews_coord_translate(ee, &x, &y); - if (ee->func.fn_mouse_out) ee->func.fn_mouse_out(ee); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_out(ee->evas, ev->timestamp, NULL); - _ecore_evas_default_cursor_hide(ee); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Down *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_down(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_mouse_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Up *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_up(ee->evas, ev->button, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_mouse_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Move *ev = event_info; - Evas_Coord x = ev->cur.canvas.x; - Evas_Coord y = ev->cur.canvas.y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - _ecore_evas_mouse_move_process(ee, x, y, ev->timestamp); -} - -static void -_ecore_evas_ews_cb_mouse_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Mouse_Wheel *ev = event_info; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_mouse_wheel(ee->evas, ev->direction, ev->z, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Down *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->canvas.x; - y = ev->canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->canvas.xsub - (double)xx) + (double)x; - yf = (ev->canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_down(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_up(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Up *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->canvas.x; - y = ev->canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->canvas.xsub - (double)xx) + (double)x; - yf = (ev->canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_up(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->flags, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_multi_move(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Multi_Move *ev = event_info; - Evas_Coord x, y, xx, yy; - double xf, yf; - - x = ev->cur.canvas.x; - y = ev->cur.canvas.y; - xx = x; - yy = y; - _ecore_evas_ews_coord_translate(ee, &x, &y); - xf = (ev->cur.canvas.xsub - (double)xx) + (double)x; - yf = (ev->cur.canvas.ysub - (double)yy) + (double)y; - _ecore_evas_ews_modifiers_apply(ee, ev->modifiers); - evas_event_feed_multi_move(ee->evas, ev->device, x, y, ev->radius, ev->radius_x, ev->radius_y, ev->pressure, ev->angle, xf, yf, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_free(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->driver) _ecore_evas_free(ee); -} - -static void -_ecore_evas_ews_cb_key_down(void *data, Evas *e, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Key_Down *ev = event_info; - - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift")) - evas_key_modifier_on(ee->evas, "Shift"); - else - evas_key_modifier_off(ee->evas, "Shift"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control")) - evas_key_modifier_on(ee->evas, "Control"); - else - evas_key_modifier_off(ee->evas, "Control"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt")) - evas_key_modifier_on(ee->evas, "Alt"); - else - evas_key_modifier_off(ee->evas, "Alt"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta")) - evas_key_modifier_on(ee->evas, "Meta"); - else - evas_key_modifier_off(ee->evas, "Meta"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper")) - evas_key_modifier_on(ee->evas, "Hyper"); - else - evas_key_modifier_off(ee->evas, "Hyper"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super")) - evas_key_modifier_on(ee->evas, "Super"); - else - evas_key_modifier_off(ee->evas, "Super"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock")) - evas_key_lock_on(ee->evas, "Scroll_Lock"); - else - evas_key_lock_off(ee->evas, "Scroll_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock")) - evas_key_lock_on(ee->evas, "Num_Lock"); - else - evas_key_lock_off(ee->evas, "Num_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock")) - evas_key_lock_on(ee->evas, "Caps_Lock"); - else - evas_key_lock_off(ee->evas, "Caps_Lock"); - evas_event_feed_key_down(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_key_up(void *data, Evas *e, Evas_Object *obj EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = data; - Evas_Event_Key_Up *ev = event_info; - - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Shift")) - evas_key_modifier_on(ee->evas, "Shift"); - else - evas_key_modifier_off(ee->evas, "Shift"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Control")) - evas_key_modifier_on(ee->evas, "Control"); - else - evas_key_modifier_off(ee->evas, "Control"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Alt")) - evas_key_modifier_on(ee->evas, "Alt"); - else - evas_key_modifier_off(ee->evas, "Alt"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Meta")) - evas_key_modifier_on(ee->evas, "Meta"); - else - evas_key_modifier_off(ee->evas, "Meta"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Hyper")) - evas_key_modifier_on(ee->evas, "Hyper"); - else - evas_key_modifier_off(ee->evas, "Hyper"); - if (evas_key_modifier_is_set(evas_key_modifier_get(e), "Super")) - evas_key_modifier_on(ee->evas, "Super"); - else - evas_key_modifier_off(ee->evas, "Super"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Scroll_Lock")) - evas_key_lock_on(ee->evas, "Scroll_Lock"); - else - evas_key_lock_off(ee->evas, "Scroll_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Num_Lock")) - evas_key_lock_on(ee->evas, "Num_Lock"); - else - evas_key_lock_off(ee->evas, "Num_Lock"); - if (evas_key_lock_is_set(evas_key_lock_get(e), "Caps_Lock")) - evas_key_lock_on(ee->evas, "Caps_Lock"); - else - evas_key_lock_off(ee->evas, "Caps_Lock"); - evas_event_feed_key_up(ee->evas, ev->keyname, ev->key, ev->string, ev->compose, ev->timestamp, NULL); -} - -static void -_ecore_evas_ews_cb_focus_in(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_focus_set(ee, EINA_TRUE); -} - -static void -_ecore_evas_ews_cb_focus_out(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->deleted) return; - ecore_evas_focus_set(ee, EINA_FALSE); -} - -static void -_ecore_evas_ews_cb_show(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_show(ee); -} - -static void -_ecore_evas_ews_cb_hide(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Ecore_Evas *ee = data; - if (ee->deleted) return; - ecore_evas_hide(ee); -} -#endif - EAPI Ecore_Evas * -ecore_evas_ews_new(int x, int y, int w, int h) +ecore_evas_ews_new(int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) { -// basically a copy of ecore_evas_buffer_new() keep in sync... -#ifdef BUILD_ECORE_EVAS_EWS - Evas_Object *o; - Evas_Engine_Info_Buffer *einfo; - Ecore_Evas *ee; - int rmethod; - static Eina_Bool creating = EINA_FALSE; - - if (_ecore_evas_ews_init() < 1) return NULL; - - if (creating) return NULL; /* avoid recursive ecore_evas_new() with ews */ - creating = EINA_TRUE; - if (!_ews_ee) _ews_ee = _ecore_evas_ews_ee_new(); - creating = EINA_FALSE; - if (!_ews_ee) - { - ERR("Could not create EWS backing store"); - _ecore_evas_ews_shutdown(); - return NULL; - } - - rmethod = evas_render_method_lookup("buffer"); - if (!rmethod) return NULL; - ee = calloc(1, sizeof(Ecore_Evas)); - if (!ee) return NULL; - - if (w < 1) w = 1; - if (h < 1) h = 1; - - o = evas_object_image_add(_ews_ee->evas); - evas_object_image_content_hint_set(o, EVAS_IMAGE_CONTENT_HINT_DYNAMIC); - evas_object_image_colorspace_set(o, EVAS_COLORSPACE_ARGB8888); - evas_object_image_size_set(o, w, h); - evas_object_image_alpha_set(o, 1); - - ECORE_MAGIC_SET(ee, ECORE_MAGIC_EVAS); - - ee->engine.func = (Ecore_Evas_Engine_Func *)&_ecore_ews_engine_func; - - ee->driver = EWS_ENGINE_NAME; - - ee->x = 0; - ee->y = 0; - ee->w = w; - ee->h = h; - ee->req.x = ee->x; - ee->req.y = ee->y; - ee->req.w = ee->w; - ee->req.h = ee->h; - - /* init evas here */ - ee->evas = evas_new(); - evas_data_attach_set(ee->evas, ee); - evas_output_method_set(ee->evas, rmethod); - evas_output_size_set(ee->evas, w, h); - evas_output_viewport_set(ee->evas, 0, 0, w, h); - - evas_object_move(o, x, y); - evas_object_resize(o, w, h); - evas_object_image_fill_set(o, 0, 0, w, h); - - ee->engine.ews.image = o; - evas_object_data_set(ee->engine.ews.image, "Ecore_Evas", ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_ews_update_image, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_IN, - _ecore_evas_ews_cb_mouse_in, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_OUT, - _ecore_evas_ews_cb_mouse_out, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_DOWN, - _ecore_evas_ews_cb_mouse_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_UP, - _ecore_evas_ews_cb_mouse_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_MOVE, - _ecore_evas_ews_cb_mouse_move, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MOUSE_WHEEL, - _ecore_evas_ews_cb_mouse_wheel, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_DOWN, - _ecore_evas_ews_cb_multi_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_UP, - _ecore_evas_ews_cb_multi_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_MULTI_MOVE, - _ecore_evas_ews_cb_multi_move, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FREE, - _ecore_evas_ews_cb_free, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_KEY_DOWN, - _ecore_evas_ews_cb_key_down, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_KEY_UP, - _ecore_evas_ews_cb_key_up, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FOCUS_IN, - _ecore_evas_ews_cb_focus_in, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_FOCUS_OUT, - _ecore_evas_ews_cb_focus_out, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_SHOW, - _ecore_evas_ews_cb_show, ee); - evas_object_event_callback_add(ee->engine.ews.image, - EVAS_CALLBACK_HIDE, - _ecore_evas_ews_cb_hide, ee); - einfo = (Evas_Engine_Info_Buffer *)evas_engine_info_get(ee->evas); - if (einfo) - { - void *pixels = evas_object_image_data_get(o, 1); - evas_object_image_data_set(o, pixels); // refcount - einfo->info.depth_type = EVAS_ENGINE_BUFFER_DEPTH_ARGB32; - einfo->info.dest_buffer = pixels; - einfo->info.dest_buffer_row_bytes = evas_object_image_stride_get(o); - einfo->info.use_color_key = 0; - einfo->info.alpha_threshold = 0; - einfo->info.func.new_update_region = NULL; - einfo->info.func.free_update_region = NULL; - evas_object_image_data_set(o, pixels); - if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - ecore_evas_free(ee); - return NULL; - } - } - else - { - ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver); - ecore_evas_free(ee); - return NULL; - } - evas_key_modifier_add(ee->evas, "Shift"); - evas_key_modifier_add(ee->evas, "Control"); - evas_key_modifier_add(ee->evas, "Alt"); - evas_key_modifier_add(ee->evas, "Meta"); - evas_key_modifier_add(ee->evas, "Hyper"); - evas_key_modifier_add(ee->evas, "Super"); - evas_key_lock_add(ee->evas, "Caps_Lock"); - evas_key_lock_add(ee->evas, "Num_Lock"); - evas_key_lock_add(ee->evas, "Scroll_Lock"); - - if (!_ecore_evas_cursors_init(ee)) - { - ERR("Could not init the Ecore Evas cursors"); - ecore_evas_free(ee); - } - - _ecore_evas_subregister(_ews_ee, ee); - _ews_children = eina_list_append(_ews_children, ee); - - _ecore_evas_ews_event(ee, ECORE_EVAS_EWS_EVENT_ADD); - - return ee; -#else return NULL; - (void)x; - (void)y; - (void)w; - (void)h; -#endif } EAPI Evas_Object * -ecore_evas_ews_backing_store_get(const Ecore_Evas *ee) +ecore_evas_ews_backing_store_get(const Ecore_Evas *ee EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) - { - ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, - "ecore_evas_ews_backing_store_get"); - return NULL; - } - return ee->engine.ews.image; -#else return NULL; - (void)ee; -#endif } EAPI void -ecore_evas_ews_delete_request(Ecore_Evas *ee) +ecore_evas_ews_delete_request(Ecore_Evas *ee EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS)) - { - ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS, - "ecore_evas_ews_delete_request"); - return; - } - if (ee->func.fn_delete_request) ee->func.fn_delete_request(ee); - else ecore_evas_free(ee); -#else - (void)ee; -#endif } EAPI Eina_Bool -ecore_evas_ews_engine_set(const char *engine, const char *options) +ecore_evas_ews_engine_set(const char *engine EINA_UNUSED, const char *options EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (_ews_ee) return EINA_FALSE; - - free(_ews_engine); - free(_ews_options); - - _ews_engine = engine ? strdup(engine) : NULL; - _ews_options = options ? strdup(options) : NULL; - - if ((engine) && (!_ews_engine)) return EINA_FALSE; - if ((options) && (!_ews_options)) - { - free(_ews_engine); - _ews_engine = NULL; - _ews_defaults_engine = EINA_TRUE; - return EINA_FALSE; - } - - _ews_defaults_engine = EINA_FALSE; - return EINA_TRUE; -#else return EINA_FALSE; - (void)engine; - (void)options; -#endif } EAPI Eina_Bool -ecore_evas_ews_setup(int x, int y, int w, int h) +ecore_evas_ews_setup(int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - Eina_Bool ret = EINA_TRUE; - - _ews_defaults_geo = EINA_FALSE; - _ews_x = x; - _ews_y = y; - _ews_w = w; - _ews_h = h; - - if (!_ews_ee) return EINA_TRUE; - - /* move-resize is not as implemented as move + resize */ - ecore_evas_move(_ews_ee, x, y); - ecore_evas_size_min_set(_ews_ee, w, h); - ecore_evas_size_max_set(_ews_ee, w, h); - ecore_evas_resize(_ews_ee, w, h); - - ecore_evas_geometry_get(_ews_ee, &x, &y, &w, &h); - -#define TST(n) if ((n != _ews_##n)) \ - { \ - WRN("Asked %d, got %d for "#n, _ews_##n, n); \ - ret = EINA_FALSE; \ - } - TST(x); - TST(y); - TST(w); - TST(h); -#undef TST - return ret; -#else return EINA_FALSE; - (void)x; - (void)y; - (void)w; - (void)h; -#endif } EAPI Ecore_Evas * ecore_evas_ews_ecore_evas_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - if (!_ews_ee) _ews_ee = _ecore_evas_ews_ee_new(); - return _ews_ee; -#else return NULL; -#endif } EAPI Evas * ecore_evas_ews_evas_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return ecore_evas_get(ecore_evas_ews_ecore_evas_get()); -#else return NULL; -#endif } EAPI Evas_Object * ecore_evas_ews_background_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_bg; -#else return NULL; -#endif } -#ifdef BUILD_ECORE_EVAS_EWS -static void -_ecore_evas_ews_background_free(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *o EINA_UNUSED, void *event_info EINA_UNUSED) -{ - _ews_bg = NULL; - ecore_evas_ews_background_set(NULL); -} -#endif - EAPI void -ecore_evas_ews_background_set(Evas_Object *o) +ecore_evas_ews_background_set(Evas_Object *o EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if ((o) && (o == _ews_bg)) return; - - if (_ews_bg) - { - evas_object_del(_ews_bg); - _ews_bg = NULL; - } - - if ((!o) && (_ews_ee)) - { - o = evas_object_rectangle_add(ecore_evas_get(_ews_ee)); - evas_object_color_set(o, 0, 0, 0, 255); - } - - if (_ews_ee) - { - Evas_Coord w, h, fw, fh; - Evas *e = ecore_evas_get(_ews_ee); - - if (e != evas_object_evas_get(o)) - { - ERR("background not in ecore_evas_ews_evas_get() canvas!"); - return; - } - - evas_output_viewport_get(e, NULL, NULL, &w, &h); - evas_output_framespace_get(e, NULL, NULL, &fw, &fh); - evas_object_move(o, 0, 0); - evas_object_resize(o, w - fw, h - fh); - evas_object_layer_set(o, EVAS_LAYER_MIN + 1); - evas_object_lower(o); - evas_object_show(o); - - evas_object_event_callback_add - (o, EVAS_CALLBACK_FREE, _ecore_evas_ews_background_free, NULL); - } - - _ews_bg = o; -#else - return; - (void)o; -#endif } EAPI const Eina_List * ecore_evas_ews_children_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_children; -#else return NULL; -#endif } EAPI void -ecore_evas_ews_manager_set(const void *manager) +ecore_evas_ews_manager_set(const void *manager EINA_UNUSED) { -#ifdef BUILD_ECORE_EVAS_EWS - if (_ews_manager == manager) return; - _ews_manager = manager; - ecore_event_add(ECORE_EVAS_EWS_EVENT_MANAGER_CHANGE, NULL, NULL, NULL); -#else - (void)manager; -#endif } EAPI const void * ecore_evas_ews_manager_get(void) { -#ifdef BUILD_ECORE_EVAS_EWS - return _ews_manager; -#else return NULL; -#endif } diff --git a/src/lib/ecore_evas/ecore_evas_module.c b/src/lib/ecore_evas/ecore_evas_module.c index 2b5394b06f..4fdd8f70b0 100644 --- a/src/lib/ecore_evas/ecore_evas_module.c +++ b/src/lib/ecore_evas/ecore_evas_module.c @@ -250,9 +250,6 @@ _ecore_evas_available_engines_get(void) { #ifdef BUILD_ECORE_EVAS_BUFFER ADDENG("buffer"); -#endif -#ifdef BUILD_ECORE_EVAS_EWS - ADDENG("ews"); #endif } else if (!strcmp(name, "cocoa")) diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index 4ce4c0e809..4dfbbe2d1c 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -5268,11 +5268,7 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U default: disp = getenv("ELM_DISPLAY"); - if ((disp) && (!strcmp(disp, "ews"))) - { - enginelist[p++] = ELM_EWS; - } - else if ((disp) && (!strcmp(disp, "buffer"))) + if ((disp) && (!strcmp(disp, "buffer"))) { enginelist[p++] = ELM_BUFFER; } @@ -5534,8 +5530,6 @@ _elm_win_finalize_internal(Eo *obj, Efl_Ui_Win_Data *sd, const char *name, Efl_U tmp_sd.ee = ecore_evas_gl_sdl_new(NULL, 1, 1, 0, 0); else if (!strcmp(enginelist[i], ELM_OPENGL_COCOA)) tmp_sd.ee = ecore_evas_cocoa_new(NULL, 1, 1, 0, 0); - else if (!strcmp(enginelist[i], ELM_EWS)) - tmp_sd.ee = ecore_evas_ews_new(0, 0, 1, 1); else if (!strcmp(enginelist[i], ELM_SOFTWARE_FB)) tmp_sd.ee = ecore_evas_fb_new(NULL, 0, 1, 1); else if (!strcmp(enginelist[i], ELM_BUFFER)) diff --git a/src/lib/elementary/elm_config.c b/src/lib/elementary/elm_config.c index 79e0f9a998..3c8537d8b0 100644 --- a/src/lib/elementary/elm_config.c +++ b/src/lib/elementary/elm_config.c @@ -50,7 +50,6 @@ const char *_elm_engines[] = { "sdl", "opengl_sdl", "buffer", - "ews", "opengl_cocoa", "wayland_shm", "wayland_egl", @@ -2546,8 +2545,6 @@ _env_get(void) eina_stringshare_replace(&_elm_config->engine, ELM_BUFFER); else if ((!strncmp(s, "shot:", 5))) eina_stringshare_replace(&_elm_config->engine, s); - else if ((!strcasecmp(s, "ews"))) - eina_stringshare_replace(&_elm_config->engine, ELM_EWS); else if ((!strcasecmp(s, "wayland_shm")) || (!strcasecmp(s, "wayland-shm"))) eina_stringshare_replace(&_elm_config->engine, ELM_WAYLAND_SHM); diff --git a/src/lib/elementary/elm_config.h b/src/lib/elementary/elm_config.h index 429e6aa01f..f3c6c6b5df 100644 --- a/src/lib/elementary/elm_config.h +++ b/src/lib/elementary/elm_config.h @@ -1190,7 +1190,6 @@ EAPI void elm_config_password_show_last_timeout_set(double password_show_la * The following are the available engines: * @li "fb" (Framebuffer) * @li "buffer" (Pixel Memory Buffer) - * @li "ews" (Ecore + Evas Single Process Windowing System) * @li NULL - no engine config * * @deprecated Please use elm_config_accel_preference_override_set() instead diff --git a/src/lib/elementary/elm_main.c b/src/lib/elementary/elm_main.c index d6a4b5dac4..bb2ec1d084 100644 --- a/src/lib/elementary/elm_main.c +++ b/src/lib/elementary/elm_main.c @@ -144,7 +144,6 @@ _elm_rescale(void) { edje_scale_set(_elm_config->scale); _elm_win_rescale(NULL, EINA_FALSE); - _elm_ews_wm_rescale(NULL, EINA_FALSE); } static void *app_mainfunc = NULL; @@ -869,12 +868,8 @@ elm_quicklaunch_sub_init(int argc, EINA_SAFETY_ON_FALSE_GOTO(ecore_con_init(), ql_sub_ecore_con); EINA_SAFETY_ON_FALSE_GOTO(ecore_con_url_init(), ql_sub_ecore_con_url); _elm_prefs_initted = _elm_prefs_init(); - EINA_SAFETY_ON_FALSE_GOTO(_elm_ews_wm_init(), ql_sub_ews);; } return _elm_sub_init_count; -ql_sub_ews: - if (_elm_prefs_initted) _elm_prefs_shutdown(); - ecore_con_url_shutdown(); ql_sub_ecore_con_url: ecore_con_shutdown(); ql_sub_ecore_con: @@ -900,7 +895,6 @@ elm_quicklaunch_sub_shutdown(void) ecore_shutdown_ex(); _elm_win_shutdown(); - _elm_ews_wm_shutdown(); ecore_con_url_shutdown(); ecore_con_shutdown(); ecore_imf_shutdown(); diff --git a/src/lib/elementary/elm_priv.h b/src/lib/elementary/elm_priv.h index aee4b4d8d6..52aee0fd26 100644 --- a/src/lib/elementary/elm_priv.h +++ b/src/lib/elementary/elm_priv.h @@ -288,13 +288,12 @@ extern const char *_elm_engines[]; # define ELM_SOFTWARE_SDL (_elm_engines[4]) # define ELM_OPENGL_SDL (_elm_engines[5]) # define ELM_BUFFER (_elm_engines[6]) -# define ELM_EWS (_elm_engines[7]) -# define ELM_OPENGL_COCOA (_elm_engines[8]) -# define ELM_WAYLAND_SHM (_elm_engines[9]) -# define ELM_WAYLAND_EGL (_elm_engines[10]) -# define ELM_DRM (_elm_engines[11]) -# define ELM_SOFTWARE_DDRAW (_elm_engines[12]) -# define ELM_GL_DRM (_elm_engines[13]) +# define ELM_OPENGL_COCOA (_elm_engines[7]) +# define ELM_WAYLAND_SHM (_elm_engines[8]) +# define ELM_WAYLAND_EGL (_elm_engines[9]) +# define ELM_DRM (_elm_engines[10]) +# define ELM_SOFTWARE_DDRAW (_elm_engines[11]) +# define ELM_GL_DRM (_elm_engines[12]) # define ELM_FONT_TOKEN_STYLE ":style=" @@ -667,11 +666,6 @@ void _elm_prefs_data_init(void); void _elm_prefs_data_shutdown(void); /* init functions for dnd and cnp */ -int _elm_ews_wm_init(void); -void _elm_ews_wm_shutdown(void); -void _elm_ews_wm_rescale(Elm_Theme *th, - Eina_Bool use_theme); - void _elm_win_shutdown(void); void _elm_win_rescale(Elm_Theme *th, Eina_Bool use_theme); diff --git a/src/lib/elementary/elm_theme.c b/src/lib/elementary/elm_theme.c index 8625cb6147..7a40a4d7e9 100644 --- a/src/lib/elementary/elm_theme.c +++ b/src/lib/elementary/elm_theme.c @@ -867,7 +867,6 @@ elm_theme_flush(Elm_Theme *th) if (th->cache_style_load_failed) eina_hash_free(th->cache_style_load_failed); th->cache_style_load_failed = eina_hash_string_superfast_new(NULL); _elm_win_rescale(th, EINA_TRUE); - _elm_ews_wm_rescale(th, EINA_TRUE); if (th->referrers) { Eina_List *l; diff --git a/src/lib/elementary/elm_win.h b/src/lib/elementary/elm_win.h index 5e272edebc..16d6403b0c 100644 --- a/src/lib/elementary/elm_win.h +++ b/src/lib/elementary/elm_win.h @@ -39,7 +39,6 @@ * GDI with software) * @li "ddraw", "software-ddraw", "software_ddraw" (Windows WIN32 rendering via * DirectDraw with software) - * @li "ews" (rendering to EWS - Ecore + Evas Single Process Windowing System) * @li "gl-cocoa", "gl_cocoa", "opengl-cocoa", "opengl_cocoa" (OpenGL rendering in Cocoa) * @li "wayland_shm" (Wayland client SHM rendering) * @li "wayland_egl" (Wayland client OpenGL/EGL rendering) diff --git a/src/lib/elementary/elu_ews_wm.c b/src/lib/elementary/elu_ews_wm.c deleted file mode 100644 index 0120aea6ea..0000000000 --- a/src/lib/elementary/elu_ews_wm.c +++ /dev/null @@ -1,531 +0,0 @@ -#ifdef HAVE_CONFIG_H -# include "elementary_config.h" -#endif - -#include - -#include "elm_priv.h" - -static Eina_Bool _ews_used = EINA_FALSE; -static Eina_List *_ews_ev_handlers = NULL; -static Eina_Hash *_ews_borders = NULL; -static Eina_Hash *_ews_borders_geo = NULL; -static Evas_Object *_ews_bg = NULL; -static Ecore_Animator *_ews_border_mover = NULL; -static Evas_Object *_ews_border_mover_obj = NULL; -static Evas_Point _ews_border_mover_off = {0, 0}; - -static void -_elm_ews_border_usable_screen_geometry_get(int *x, int *y, int *w, int *h) -{ - Ecore_Evas *ee = ecore_evas_ews_ecore_evas_get(); - ecore_evas_geometry_get(ee, NULL, NULL, w, h); - if (x) *x = 0; - if (y) *y = 0; - // TODO: when add a shelf for iconified, subtract its area here. -} - -static void -_elm_ews_wm_border_del(void *data) -{ - Evas_Object *deco = data; - evas_object_del(deco); - - if (_ews_border_mover_obj == deco) - { - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; - } -} - -static Evas_Object * -_elm_ews_wm_border_find(const Ecore_Evas *ee) -{ - return eina_hash_find(_ews_borders, &ee); -} - -static Eina_Rectangle * -_elm_ews_wm_border_geo_find(const Ecore_Evas *ee) -{ - return eina_hash_find(_ews_borders_geo, &ee); -} - -static void -_elm_ews_border_geo_apply(Ecore_Evas *ee, Evas_Object *o) -{ - int x, y, w, h; - ecore_evas_geometry_get(ee, &x, &y, &w, &h); - evas_object_geometry_set(o, x, y, w, h); -} - -static void -_elm_ews_border_focus_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_focus_get(ee)) - sig = "elm,state,focus,on"; - else - sig = "elm,state,focus,off"; - edje_object_signal_emit(o, sig, "elm"); -} - -static void -_elm_ews_border_stack_apply(Ecore_Evas *ee, Evas_Object *o) -{ - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - evas_object_stack_below(o, bs_o); -} - -static void -_elm_ews_border_iconified_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_iconified_get(ee)) - sig = "elm,state,iconified,on"; - else - sig = "elm,state,iconified,off"; - edje_object_signal_emit(o, sig, "elm"); - - // TODO: add to some taskbar? and actually hide it? - DBG("EWS does not implement iconified yet"); -} - -static void -_elm_ews_border_maximized_apply(Ecore_Evas *ee, Evas_Object *o) -{ - int x, y, w, h; - if (ecore_evas_maximized_get(ee)) - { - Eina_Rectangle *r; - int ex, ey, ew, eh; - - edje_object_signal_emit(o, "elm,state,maximized,on", "elm"); - edje_object_message_signal_process(o); - ecore_evas_geometry_get(ee, &x, &y, &w, &h); - - r = _elm_ews_wm_border_geo_find(ee); - if (!r) - { - r = malloc(sizeof(Eina_Rectangle)); - eina_hash_add(_ews_borders_geo, &ee, r); - } - - r->x = x; - r->y = y; - r->w = w; - r->h = h; - _elm_ews_border_usable_screen_geometry_get(&x, &y, &w, &h); - edje_object_parts_extends_calc(o, &ex, &ey, &ew, &eh); - x -= ex; - y -= ey; - w -= ew - r->w; - h -= eh - r->h; - } - else - { - Eina_Rectangle *r = _elm_ews_wm_border_geo_find(ee); - edje_object_signal_emit(o, "elm,state,maximized,off", "elm"); - - if (!r) ecore_evas_geometry_get(ee, &x, &y, &w, &h); - else - { - x = r->x; - y = r->y; - w = r->w; - h = r->h; - } - } - - ecore_evas_move_resize(ee, x, y, w, h); - _elm_ews_border_geo_apply(ee, o); -} - -static void -_elm_ews_border_layer_apply(Ecore_Evas *ee, Evas_Object *o) -{ - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - evas_object_layer_set(o, evas_object_layer_get(bs_o)); - _elm_ews_border_stack_apply(ee, o); -} - -static void -_elm_ews_border_fullscreen_apply(Ecore_Evas *ee, Evas_Object *o) -{ - const char *sig; - if (ecore_evas_fullscreen_get(ee)) - sig = "elm,state,fullscreen,on"; - else - sig = "elm,state,fullscreen,off"; - edje_object_signal_emit(o, sig, "elm"); - _elm_ews_border_geo_apply(ee, o); -} - -static void -_elm_ews_border_config_apply(Ecore_Evas *ee, Evas_Object *o, Elm_Theme *th) -{ - const char *title, *name = NULL, *class = NULL, *style = NULL; - const char *sig; - - if (ecore_evas_borderless_get(ee)) - style = "borderless"; - - _elm_theme_set(th, o, "ews", "decoration", style ? style : "default", EINA_TRUE); - - if (ecore_evas_shaped_get(ee) || ecore_evas_alpha_get(ee) || - ecore_evas_transparent_get(ee)) - sig = "elm,state,alpha,on"; - else - sig = "elm,state,alpha,off"; - edje_object_signal_emit(o, sig, "elm"); - - title = ecore_evas_title_get(ee); - ecore_evas_name_class_get(ee, &name, &class); - edje_object_part_text_escaped_set(o, "elm.text.title", title); - edje_object_part_text_escaped_set(o, "elm.text.name", name); - edje_object_part_text_escaped_set(o, "elm.text.class", class); - - _elm_ews_border_geo_apply(ee, o); - _elm_ews_border_focus_apply(ee, o); - _elm_ews_border_stack_apply(ee, o); - _elm_ews_border_iconified_apply(ee, o); - _elm_ews_border_maximized_apply(ee, o); - _elm_ews_border_layer_apply(ee, o); - _elm_ews_border_fullscreen_apply(ee, o); -} - -static Eina_Bool -_elm_ews_wm_border_theme_set(Ecore_Evas *ee, Evas_Object *o, Elm_Theme *th) -{ - _elm_ews_border_config_apply(ee, o, th); - return EINA_TRUE; -} - -static void -_elm_ews_border_sig_focus(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_focus_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_iconify(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_iconified_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_maximize(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_maximized_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_fullscreen(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_fullscreen_set(ee, EINA_TRUE); -} - -static void -_elm_ews_border_sig_restore(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_iconified_set(ee, EINA_FALSE); - ecore_evas_maximized_set(ee, EINA_FALSE); - ecore_evas_fullscreen_set(ee, EINA_FALSE); -} - -static void -_elm_ews_border_sig_close(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - ecore_evas_ews_delete_request(ee); -} - -static void -_elm_ews_border_sig_menu(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - // TODO: show some menu? - ERR("EWS does not implement menu yet"); - (void)data; -} - -static Eina_Bool -_elm_ews_border_mover(void *data) -{ - Ecore_Evas *ee = data; - Evas_Object *o = _elm_ews_wm_border_find(ee); - int x, y; - - evas_pointer_output_xy_get(ecore_evas_ews_evas_get(), &x, &y); - x -= _ews_border_mover_off.x; - y -= _ews_border_mover_off.y; - ecore_evas_move(ee, x, y); - evas_object_move(o, x, y); - - return EINA_TRUE; -} - -static void -_elm_ews_border_sig_move_start(void *data, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Evas_Object *bs_o = ecore_evas_ews_backing_store_get(ee); - int x, y, ox, oy; - - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - - evas_pointer_output_xy_get(evas_object_evas_get(bs_o), &x, &y); - evas_object_geometry_get(bs_o, &ox, &oy, NULL, NULL); - _ews_border_mover_off.x = x - ox; - _ews_border_mover_off.y = y - oy; - _ews_border_mover_obj = bs_o; - _ews_border_mover = ecore_evas_animator_add(bs_o, _elm_ews_border_mover, ee); -} - -static void -_elm_ews_border_sig_move_stop(void *data EINA_UNUSED, Evas_Object *o EINA_UNUSED, const char *sig EINA_UNUSED, const char *source EINA_UNUSED) -{ - if (!_ews_border_mover) return; - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; -} - -static Eina_Bool -_elm_ews_wm_add_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = edje_object_add(ecore_evas_ews_evas_get()); - Evas_Coord x, y, w, h, sw, sh; - - edje_object_signal_callback_add - (o, "elm,action,focus", "elm", _elm_ews_border_sig_focus, ee); - edje_object_signal_callback_add - (o, "elm,action,iconify", "elm", _elm_ews_border_sig_iconify, ee); - edje_object_signal_callback_add - (o, "elm,action,maximize", "elm", _elm_ews_border_sig_maximize, ee); - edje_object_signal_callback_add - (o, "elm,action,fullscreen", "elm", _elm_ews_border_sig_fullscreen, ee); - edje_object_signal_callback_add - (o, "elm,action,restore", "elm", _elm_ews_border_sig_restore, ee); - edje_object_signal_callback_add - (o, "elm,action,close", "elm", _elm_ews_border_sig_close, ee); - edje_object_signal_callback_add - (o, "elm,action,menu", "elm", _elm_ews_border_sig_menu, ee); - edje_object_signal_callback_add - (o, "elm,action,move,start", "elm", _elm_ews_border_sig_move_start, ee); - edje_object_signal_callback_add - (o, "elm,action,move,stop", "elm", _elm_ews_border_sig_move_stop, ee); - - eina_hash_add(_ews_borders, &ee, o); - _elm_ews_wm_border_theme_set(ee, o, NULL); - - ecore_evas_screen_geometry_get(ee, NULL, NULL, &sw, &sh); - ecore_evas_geometry_get(ee, NULL, NULL, &w, &h); - x = (sw - w) / 2; - y = (sh - h) / 2; - ecore_evas_move(ee, x, y); - ecore_evas_focus_set(ee, EINA_TRUE); - - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_del_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - eina_hash_del(_ews_borders, &ee, NULL); - eina_hash_del(_ews_borders_geo, &ee, NULL); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_geo_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_geo_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_show_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - evas_object_show(o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_hide_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - evas_object_hide(o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_focus_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_focus_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_stack_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_stack_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_iconified_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_iconified_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_maximized_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_maximized_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_layer_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_layer_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_fullscreen_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_fullscreen_apply(ee, o); - return EINA_TRUE; -} - -static Eina_Bool -_elm_ews_wm_config_change_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event_info) -{ - Ecore_Evas *ee = event_info; - Evas_Object *o = _elm_ews_wm_border_find(ee); - _elm_ews_border_config_apply(ee, o, NULL); - return EINA_TRUE; -} - -void -_elm_ews_wm_rescale(Elm_Theme *th, Eina_Bool use_theme) -{ - Eina_Iterator *it; - Eina_Hash_Tuple *tp = NULL; - - if (!_ews_borders) return; - it = eina_hash_iterator_tuple_new(_ews_borders); - if (!use_theme) - { - EINA_ITERATOR_FOREACH(it, tp) - _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, NULL); - - if (_ews_bg) - _elm_theme_set(NULL, _ews_bg, "ews", "background", "default", EINA_TRUE); - } - else - { - EINA_ITERATOR_FOREACH(it, tp) - _elm_ews_wm_border_theme_set(*(void**)tp->key, tp->data, th); - - if (_ews_bg) - _elm_theme_set(th, _ews_bg, "ews", "background", "default", EINA_TRUE); - } - - eina_iterator_free(it); -} - -int -_elm_ews_wm_init(void) -{ - Evas *e; - Evas_Object *o; - - if ((!_elm_config->engine) || (!(!strcmp(_elm_config->engine, ELM_EWS)))) - { - _ews_used = EINA_FALSE; - return EINA_TRUE; - } - - e = ecore_evas_ews_evas_get(); - if (!e) return EINA_FALSE; - o = edje_object_add(e); - if (!o) return EINA_FALSE; - - if (_elm_theme_set(NULL, o, "ews", "background", "default", EINA_TRUE) == EFL_UI_THEME_APPLY_ERROR_GENERIC) - { - ERR("Could not set background theme, fallback to rectangle"); - evas_object_del(o); - _ews_bg = o = NULL; - } - else - _ews_bg = o; - ecore_evas_ews_background_set(o); - -#define ADD_EH(ev, cb) \ - _ews_ev_handlers = eina_list_append \ - (_ews_ev_handlers, ecore_event_handler_add(ev, cb, NULL)) - ADD_EH(ECORE_EVAS_EWS_EVENT_ADD, _elm_ews_wm_add_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_DEL, _elm_ews_wm_del_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_RESIZE, _elm_ews_wm_geo_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_MOVE, _elm_ews_wm_geo_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_SHOW, _elm_ews_wm_show_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_HIDE, _elm_ews_wm_hide_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_FOCUS, _elm_ews_wm_focus_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_UNFOCUS, _elm_ews_wm_focus_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_RAISE, _elm_ews_wm_stack_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_LOWER, _elm_ews_wm_stack_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_ICONIFIED_CHANGE, _elm_ews_wm_iconified_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_MAXIMIZED_CHANGE, _elm_ews_wm_maximized_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_LAYER_CHANGE, _elm_ews_wm_layer_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_FULLSCREEN_CHANGE, _elm_ews_wm_fullscreen_change_cb); - ADD_EH(ECORE_EVAS_EWS_EVENT_CONFIG_CHANGE, _elm_ews_wm_config_change_cb); -#undef ADD_EH - - if (!_ews_borders) - _ews_borders = eina_hash_pointer_new(_elm_ews_wm_border_del); - - if (!_ews_borders_geo) - _ews_borders_geo = eina_hash_pointer_new(free); - - _ews_used = EINA_TRUE; - return EINA_TRUE; -} - -void -_elm_ews_wm_shutdown(void) -{ - Ecore_Event_Handler *eh; - - ELM_SAFE_FREE(_ews_border_mover, ecore_animator_del); - _ews_border_mover_obj = NULL; - - EINA_LIST_FREE(_ews_ev_handlers, eh) ecore_event_handler_del(eh); - ELM_SAFE_FREE(_ews_borders, eina_hash_free); - ELM_SAFE_FREE(_ews_borders_geo, ecore_animator_del); - _ews_bg = NULL; -} diff --git a/src/lib/elementary/meson.build b/src/lib/elementary/meson.build index 06e07e3a71..09e5596e3a 100644 --- a/src/lib/elementary/meson.build +++ b/src/lib/elementary/meson.build @@ -858,7 +858,6 @@ elementary_src = files([ 'els_box.c', 'els_cursor.c', 'els_tooltip.c', - 'elu_ews_wm.c', 'efl_ui_container_layout.c', 'efl_ui_container_layout.h', 'efl_ui_box.c', diff --git a/src/modules/ecore_evas/meson.build b/src/modules/ecore_evas/meson.build index 78a9b35d13..7a9d6979da 100644 --- a/src/modules/ecore_evas/meson.build +++ b/src/modules/ecore_evas/meson.build @@ -44,5 +44,3 @@ if get_option('vnc-server') subdir(join_paths('vnc_server')) endif - -config_h.set('BUILD_ECORE_EVAS_EWS', '1')