From cd1d9ec196d3d7b1be2882d6974cef9f9a449f59 Mon Sep 17 00:00:00 2001 From: Chris Michael Date: Mon, 28 Sep 2015 13:42:38 -0400 Subject: [PATCH] ecore-wl2: Port Ecore_Evas engines to use Ecore_Wl2 code Signed-off-by: Chris Michael --- src/Makefile_Ecore_Evas.am | 10 +- src/lib/ecore_evas/Ecore_Evas_Types.h | 5 + .../wayland/ecore_evas_wayland_common.c | 149 ++++++++++-------- .../engines/wayland/ecore_evas_wayland_egl.c | 51 +++--- .../wayland/ecore_evas_wayland_private.h | 4 +- .../engines/wayland/ecore_evas_wayland_shm.c | 52 +++--- 6 files changed, 162 insertions(+), 109 deletions(-) diff --git a/src/Makefile_Ecore_Evas.am b/src/Makefile_Ecore_Evas.am index ed497a6645..3ccf7c1bde 100644 --- a/src/Makefile_Ecore_Evas.am +++ b/src/Makefile_Ecore_Evas.am @@ -187,15 +187,19 @@ modules_ecore_evas_engines_wayland_module_la_SOURCES = $(WAYLANDSOURCES) modules_ecore_evas_engines_wayland_module_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ @ECORE_EVAS_CFLAGS@ \ @ECORE_WAYLAND_CFLAGS@ \ +@ECORE_WL2_CFLAGS@ \ -I$(top_srcdir)/src/modules/evas/engines/wayland_shm \ -I$(top_srcdir)/src/modules/evas/engines/wayland_egl \ -@ECORE_WAYLAND_CFLAGS@ +@ECORE_WAYLAND_CFLAGS@ \ +@ECORE_WL2_CFLAGS@ modules_ecore_evas_engines_wayland_module_la_LIBADD = \ @USE_ECORE_EVAS_LIBS@ \ -@USE_ECORE_WAYLAND_LIBS@ +@USE_ECORE_WAYLAND_LIBS@ \ +@USE_ECORE_WL2_LIBS@ modules_ecore_evas_engines_wayland_module_la_DEPENDENCIES = \ @USE_ECORE_EVAS_INTERNAL_LIBS@ \ -@USE_ECORE_WAYLAND_INTERNAL_LIBS@ +@USE_ECORE_WAYLAND_INTERNAL_LIBS@ \ +@USE_ECORE_WL2_INTERNAL_LIBS@ modules_ecore_evas_engines_wayland_module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ modules_ecore_evas_engines_wayland_module_la_LIBTOOLFLAGS = --tag=disable-static endif diff --git a/src/lib/ecore_evas/Ecore_Evas_Types.h b/src/lib/ecore_evas/Ecore_Evas_Types.h index 08d6d582d0..eeff920f81 100644 --- a/src/lib/ecore_evas/Ecore_Evas_Types.h +++ b/src/lib/ecore_evas/Ecore_Evas_Types.h @@ -48,6 +48,11 @@ typedef void (*Ecore_Evas_Event_Cb) (Ecore_Evas *ee); /**< Callback used for s typedef struct _Ecore_Wl_Window Ecore_Wl_Window; #endif +#ifndef _ECORE_WL2_H_ +#define _ECORE_WAYLAND_WINDOW_PREDEF +typedef struct _Ecore_Wl2_Window Ecore_Wl2_Window; +#endif + #ifndef _ECORE_GETOPT_PREDEF typedef struct _Ecore_Getopt Ecore_Getopt; #define _ECORE_GETOPT_PREDEF 1 diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index 0999495614..609fce453d 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -80,7 +80,7 @@ static Eina_Bool _ecore_evas_wl_common_cb_mouse_in(void *data EINA_UNUSED, int type EINA_UNUSED, void *event) { Ecore_Evas *ee; - Ecore_Wl_Event_Mouse_In *ev; + Ecore_Event_Mouse_IO *ev; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -166,7 +166,7 @@ _ecore_evas_wl_common_cb_window_configure(void *data EINA_UNUSED, int type EINA_ { Ecore_Evas *ee; Ecore_Evas_Engine_Wl_Data *wdata; - Ecore_Wl_Event_Window_Configure *ev; + Ecore_Wl2_Event_Window_Configure *ev; int nw = 0, nh = 0; int fw = 0, fh = 0; Eina_Bool prev_max, prev_full; @@ -232,7 +232,7 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) if (rot_dif < 0) rot_dif = -rot_dif; /* set ecore_wayland window rotation */ - ecore_wl_window_rotation_set(wdata->win, rotation); + ecore_wl2_window_rotation_set(wdata->win, rotation); /* check if rotation is just a flip */ if (rot_dif != 180) @@ -253,8 +253,8 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) if (!ee->prop.fullscreen) { /* resize the ecore_wayland window */ - ecore_wl_window_resize(wdata->win, - ee->req.h + fw, ee->req.w + fh, 0); + ecore_wl2_window_resize(wdata->win, + ee->req.h + fw, ee->req.w + fh, 0); } else { @@ -262,8 +262,8 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) if ((rotation == 0) || (rotation == 180)) { /* resize the ecore_wayland window */ - ecore_wl_window_resize(wdata->win, - ee->req.w, ee->req.h, 0); + ecore_wl2_window_resize(wdata->win, + ee->req.w, ee->req.h, 0); /* resize the canvas */ evas_output_size_set(ee->evas, ee->req.w, ee->req.h); @@ -273,8 +273,8 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) else { /* resize the ecore_wayland window */ - ecore_wl_window_resize(wdata->win, - ee->req.h, ee->req.w, 0); + ecore_wl2_window_resize(wdata->win, + ee->req.h, ee->req.w, 0); /* resize the canvas */ evas_output_size_set(ee->evas, ee->req.h, ee->req.w); @@ -346,7 +346,7 @@ _rotation_do(Ecore_Evas *ee, int rotation, int resize) else { /* resize the ecore_wayland window */ - ecore_wl_window_resize(wdata->win, ee->w, ee->h, 0); + ecore_wl2_window_resize(wdata->win, ee->w, ee->h, 0); /* record the current rotation of the ecore_evas */ ee->rotation = rotation; @@ -391,19 +391,19 @@ _ecore_evas_wl_common_init(void) return _ecore_evas_wl_init_count; _ecore_evas_wl_event_hdls[0] = - ecore_event_handler_add(ECORE_WL_EVENT_MOUSE_IN, + ecore_event_handler_add(ECORE_EVENT_MOUSE_IN, _ecore_evas_wl_common_cb_mouse_in, NULL); _ecore_evas_wl_event_hdls[1] = - ecore_event_handler_add(ECORE_WL_EVENT_MOUSE_OUT, + ecore_event_handler_add(ECORE_EVENT_MOUSE_OUT, _ecore_evas_wl_common_cb_mouse_out, NULL); _ecore_evas_wl_event_hdls[2] = - ecore_event_handler_add(ECORE_WL_EVENT_FOCUS_IN, + ecore_event_handler_add(ECORE_WL2_EVENT_FOCUS_IN, _ecore_evas_wl_common_cb_focus_in, NULL); _ecore_evas_wl_event_hdls[3] = - ecore_event_handler_add(ECORE_WL_EVENT_FOCUS_OUT, + ecore_event_handler_add(ECORE_WL2_EVENT_FOCUS_OUT, _ecore_evas_wl_common_cb_focus_out, NULL); _ecore_evas_wl_event_hdls[4] = - ecore_event_handler_add(ECORE_WL_EVENT_WINDOW_CONFIGURE, + ecore_event_handler_add(ECORE_WL2_EVENT_WINDOW_CONFIGURE, _ecore_evas_wl_common_cb_window_configure, NULL); ecore_event_evas_init(); @@ -452,18 +452,24 @@ _ecore_evas_wl_common_free(Ecore_Evas *ee) LOGFN(__FILE__, __LINE__, __FUNCTION__); if (!ee) return; + wdata = ee->engine.data; - if (wdata->anim_callback) - wl_callback_destroy(wdata->anim_callback); - if (wdata->win) ecore_wl_window_free(wdata->win); + + if (wdata->anim_callback) wl_callback_destroy(wdata->anim_callback); + wdata->anim_callback = NULL; + + if (wdata->win) ecore_wl2_window_free(wdata->win); wdata->win = NULL; + + ecore_wl2_display_disconnect(wdata->display); free(wdata); ecore_event_window_unregister(ee->prop.window); ecore_evas_input_event_unregister(ee); _ecore_evas_wl_common_shutdown(); - ecore_wl_shutdown(); + + ecore_wl2_shutdown(); } void @@ -636,6 +642,14 @@ _ecore_evas_wl_common_resize(Ecore_Evas *ee, int w, int h) if (wdata->frame) evas_object_resize(wdata->frame, w, h); + if (wdata->win) + { + int x, y; + + ecore_wl2_window_geometry_get(wdata->win, &x, &y, NULL, NULL); + ecore_wl2_window_geometry_set(wdata->win, x, y, w, h); + } + if (ee->func.fn_resize) ee->func.fn_resize(ee); } @@ -936,11 +950,14 @@ _ecore_evas_wl_common_frame_border_size_get(Evas_Object *obj, int *fx, int *fy, } void -_ecore_evas_wl_common_pointer_xy_get(const Ecore_Evas *ee EINA_UNUSED, Evas_Coord *x, Evas_Coord *y) +_ecore_evas_wl_common_pointer_xy_get(const Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y) { + Ecore_Evas_Engine_Wl_Data *wdata; + LOGFN(__FILE__, __LINE__, __FUNCTION__); - ecore_wl_pointer_xy_get(x, y); + wdata = ee->engine.data; + ecore_wl2_window_pointer_xy_get(wdata->win, x, y); } void @@ -952,7 +969,7 @@ _ecore_evas_wl_common_raise(Ecore_Evas *ee) if ((!ee) || (!ee->visible)) return; wdata = ee->engine.data; - ecore_wl_window_raise(wdata->win); + ecore_wl2_window_raise(wdata->win); } void @@ -977,7 +994,7 @@ _ecore_evas_wl_common_title_set(Ecore_Evas *ee, const char *title) } if (ee->prop.title) - ecore_wl_window_title_set(wdata->win, ee->prop.title); + ecore_wl2_window_title_set(wdata->win, ee->prop.title); } void @@ -1001,8 +1018,9 @@ _ecore_evas_wl_common_name_class_set(Ecore_Evas *ee, const char *n, const char * ee->prop.clas = NULL; if (c) ee->prop.clas = strdup(c); } + if (ee->prop.clas) - ecore_wl_window_class_name_set(wdata->win, ee->prop.clas); + ecore_wl2_window_class_name_set(wdata->win, ee->prop.clas); } void @@ -1088,14 +1106,15 @@ void _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y) { int x, y, fx, fy; - Ecore_Evas_Engine_Wl_Data *wdata = ee->engine.data; + Ecore_Evas_Engine_Wl_Data *wdata; Evas_Object *old; if (!ee) return; + wdata = ee->engine.data; old = ee->prop.cursor.object; if (obj == NULL) { - ecore_wl_window_pointer_set(wdata->win, NULL, 0, 0); + ecore_wl2_window_pointer_set(wdata->win, NULL, 0, 0); ee->prop.cursor.object = NULL; ee->prop.cursor.layer = 0; ee->prop.cursor.hot.x = 0; @@ -1112,7 +1131,7 @@ _ecore_evas_wl_common_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int la if (obj != old) { - ecore_wl_window_pointer_set(wdata->win, NULL, 0, 0); + ecore_wl2_window_pointer_set(wdata->win, NULL, 0, 0); evas_object_layer_set(ee->prop.cursor.object, ee->prop.cursor.layer); evas_object_pass_events_set(ee->prop.cursor.object, 1); if (evas_pointer_inside_get(ee->evas)) @@ -1158,7 +1177,7 @@ _ecore_evas_wl_common_iconified_set(Ecore_Evas *ee, Eina_Bool on) ee->prop.iconified = on; wdata = ee->engine.data; - ecore_wl_window_iconified_set(wdata->win, on); + ecore_wl2_window_iconified_set(wdata->win, on); } static void @@ -1208,9 +1227,9 @@ _ecore_evas_wl_common_maximized_set(Ecore_Evas *ee, Eina_Bool on) if (!ee) return; if (ee->prop.maximized == on) return; + wdata = ee->engine.data; - ecore_wl_window_maximized_set(wdata->win, on); -// _ecore_evas_wl_common_state_update(ee); + ecore_wl2_window_maximized_set(wdata->win, on); } void @@ -1222,9 +1241,9 @@ _ecore_evas_wl_common_fullscreen_set(Ecore_Evas *ee, Eina_Bool on) if (!ee) return; if (ee->prop.fullscreen == on) return; + wdata = ee->engine.data; - ecore_wl_window_fullscreen_set(wdata->win, on); -// _ecore_evas_wl_common_state_update(ee); + ecore_wl2_window_fullscreen_set(wdata->win, on); } void @@ -1340,12 +1359,10 @@ _ecore_evas_wl_common_render(Ecore_Evas *ee) int rend = 0; Eina_List *l; Ecore_Evas *ee2; - Ecore_Wl_Window *win = NULL; Ecore_Evas_Engine_Wl_Data *wdata; if (!ee) return 0; if (!(wdata = ee->engine.data)) return 0; - if (!(win = wdata->win)) return 0; /* TODO: handle comp no sync */ @@ -1403,13 +1420,17 @@ _ecore_evas_wl_common_withdrawn_set(Ecore_Evas *ee, Eina_Bool on) } void -_ecore_evas_wl_common_screen_geometry_get(const Ecore_Evas *ee EINA_UNUSED, int *x, int *y, int *w, int *h) +_ecore_evas_wl_common_screen_geometry_get(const Ecore_Evas *ee, int *x, int *y, int *w, int *h) { + Ecore_Evas_Engine_Wl_Data *wdata; + LOGFN(__FILE__, __LINE__, __FUNCTION__); if (x) *x = 0; if (y) *y = 0; - ecore_wl_screen_size_get(w, h); + + wdata = ee->engine.data; + ecore_wl2_display_screen_size_get(wdata->display, w, h); } void @@ -1421,8 +1442,11 @@ _ecore_evas_wl_common_screen_dpi_get(const Ecore_Evas *ee EINA_UNUSED, int *xdpi if (xdpi) *xdpi = 0; if (ydpi) *ydpi = 0; + /* FIXME: Ideally this needs to get the DPI from a specific screen */ - dpi = ecore_wl_dpi_get(); + + /* TODO */ + /* dpi = ecore_wl_dpi_get(); */ if (xdpi) *xdpi = dpi; if (ydpi) *ydpi = dpi; } @@ -1479,32 +1503,33 @@ _ecore_evas_wayland_move(Ecore_Evas *ee, int x, int y) { wdata = ee->engine.data; if (wdata->win) - ecore_wl_window_move(wdata->win, x, y); + ecore_wl2_window_move(wdata->win, x, y); } } -static void -_ecore_evas_wayland_type_set(Ecore_Evas *ee, int type) -{ - Ecore_Evas_Engine_Wl_Data *wdata; +/* static void */ +/* _ecore_evas_wayland_type_set(Ecore_Evas *ee, int type) */ +/* { */ + /* Ecore_Evas_Engine_Wl_Data *wdata; */ - if (!ee) return; - wdata = ee->engine.data; - ecore_wl_window_type_set(wdata->win, type); -} + /* if (!ee) return; */ + /* wdata = ee->engine.data; */ -static Ecore_Wl_Window * -_ecore_evas_wayland_window_get(const Ecore_Evas *ee) -{ - Ecore_Evas_Engine_Wl_Data *wdata; + /* TODO */ + /* ecore_wl_window_type_set(wdata->win, type); */ +/* } */ - if (!(!strncmp(ee->driver, "wayland", 7))) - return NULL; +/* static Ecore_Wl2_Window * */ +/* _ecore_evas_wayland_window_get(const Ecore_Evas *ee) */ +/* { */ +/* Ecore_Evas_Engine_Wl_Data *wdata; */ - wdata = ee->engine.data; - return wdata->win; -} +/* if (!(!strncmp(ee->driver, "wayland", 7))) */ +/* return NULL; */ +/* wdata = ee->engine.data; */ +/* return wdata->win; */ +/* } */ #ifdef BUILD_ECORE_EVAS_WAYLAND_EGL static void @@ -1525,11 +1550,11 @@ _ecore_evas_wayland_pre_post_swap_callback_set(const Ecore_Evas *ee, void *data, } #endif -static void -_ecore_evas_wayland_pointer_set(Ecore_Evas *ee EINA_UNUSED, int hot_x EINA_UNUSED, int hot_y EINA_UNUSED) -{ +/* static void */ +/* _ecore_evas_wayland_pointer_set(Ecore_Evas *ee EINA_UNUSED, int hot_x EINA_UNUSED, int hot_y EINA_UNUSED) */ +/* { */ -} +/* } */ Ecore_Evas_Interface_Wayland * _ecore_evas_wl_interface_new(void) @@ -1544,9 +1569,9 @@ _ecore_evas_wl_interface_new(void) iface->resize = _ecore_evas_wayland_resize; iface->move = _ecore_evas_wayland_move; - iface->pointer_set = _ecore_evas_wayland_pointer_set; - iface->type_set = _ecore_evas_wayland_type_set; - iface->window_get = _ecore_evas_wayland_window_get; + /* iface->pointer_set = _ecore_evas_wayland_pointer_set; */ + /* iface->type_set = _ecore_evas_wayland_type_set; */ + /* iface->window_get = _ecore_evas_wayland_window_get; */ #ifdef BUILD_ECORE_EVAS_WAYLAND_EGL iface->pre_post_swap_callback_set = diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c index 4871283fd2..f97e1d4a31 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c @@ -119,12 +119,13 @@ EAPI Ecore_Evas * ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, int x, int y, int w, int h, Eina_Bool frame) { - Ecore_Wl_Window *p = NULL; + Ecore_Wl2_Display *ewd; + Ecore_Wl2_Window *p = NULL; Evas_Engine_Info_Wayland_Egl *einfo; Ecore_Evas_Interface_Wayland *iface; Ecore_Evas_Engine_Wl_Data *wdata; Ecore_Evas *ee; - int method = 0, count = 0; + int method = 0; int fx = 0, fy = 0, fw = 0, fh = 0; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -135,13 +136,19 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, return NULL; } - count = ecore_wl_init(disp_name); - if (!count) + if (!ecore_wl2_init()) { ERR("Failed to initialize Ecore_Wayland"); return NULL; } + ewd = ecore_wl2_display_connect(disp_name); + if (!ewd) + { + ERR("Failed to connect to Wayland Display %s", disp_name); + return NULL; + } + if (!(ee = calloc(1, sizeof(Ecore_Evas)))) { ERR("Failed to allocate Ecore_Evas"); @@ -194,7 +201,7 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, /* if (getenv("ECORE_EVAS_FORCE_SYNC_RENDER")) */ ee->can_async_render = 0; /* else */ - /* ee->can_async_render = 1; */ + /* ee->can_async_render = 1; */ /* frame offset and size */ if (ee->prop.draw_frame) @@ -207,15 +214,14 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, if (parent) { - p = ecore_wl_window_find(parent); - ee->alpha = ecore_wl_window_alpha_get(p); + p = ecore_wl2_window_find(ewd, parent); + ee->alpha = ecore_wl2_window_alpha_get(p); } wdata->parent = p; - wdata->win = - ecore_wl_window_new(p, x, y, w + fw, h + fh, - ECORE_WL_WINDOW_BUFFER_TYPE_EGL_WINDOW); - ee->prop.window = ecore_wl_window_id_get(wdata->win); + wdata->display = ewd; + wdata->win = ecore_wl2_window_new(ewd, p, x, y, w + fw, h + fh); + ee->prop.window = ecore_wl2_window_id_get(wdata->win); ee->evas = evas_new(); evas_data_attach_set(ee->evas, ee); @@ -236,11 +242,11 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas))) { - einfo->info.display = ecore_wl_display_get(); + einfo->info.display = ecore_wl2_display_get(ewd); einfo->info.destination_alpha = EINA_TRUE; einfo->info.rotation = ee->rotation; einfo->info.depth = 32; - einfo->info.surface = ecore_wl_window_surface_create(wdata->win); + einfo->info.surface = ecore_wl2_window_surface_get(wdata->win); if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) { ERR("Failed to set Evas Engine Info for '%s'", ee->driver); @@ -253,7 +259,7 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, goto err; } - /* ecore_wl_animator_source_set(ECORE_ANIMATOR_SOURCE_CUSTOM); */ + ecore_wl2_display_animator_source_set(ewd, ECORE_ANIMATOR_SOURCE_CUSTOM); ecore_evas_callback_pre_free_set(ee, _ecore_evas_wl_common_pre_free); @@ -335,15 +341,16 @@ _ecore_evas_wl_show(Ecore_Evas *ee) wdata = ee->engine.data; if (wdata->win) { - ecore_wl_window_show(wdata->win); - ecore_wl_window_alpha_set(wdata->win, ee->alpha); + ecore_wl2_window_show(wdata->win); + ecore_wl2_window_alpha_set(wdata->win, ee->alpha); + /* ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh); */ einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas); if (einfo) { struct wl_surface *surf; - surf = ecore_wl_window_surface_get(wdata->win); + surf = ecore_wl2_window_surface_get(wdata->win); if ((!einfo->info.surface) || (einfo->info.surface != surf)) { einfo->info.surface = surf; @@ -390,7 +397,7 @@ _ecore_evas_wl_hide(Ecore_Evas *ee) } if (wdata->win) - ecore_wl_window_hide(wdata->win); + ecore_wl2_window_hide(wdata->win); if (ee->prop.override) { @@ -420,7 +427,7 @@ _ecore_evas_wayland_egl_alpha_do(Ecore_Evas *ee, int alpha) ee->alpha = alpha; wdata = ee->engine.data; - if (wdata->win) ecore_wl_window_alpha_set(wdata->win, ee->alpha); + if (wdata->win) ecore_wl2_window_alpha_set(wdata->win, ee->alpha); evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); @@ -461,7 +468,7 @@ _ecore_evas_wayland_egl_transparent_do(Ecore_Evas *ee, int transparent) wdata = ee->engine.data; if (wdata->win) - ecore_wl_window_transparent_set(wdata->win, ee->transparent); + ecore_wl2_window_transparent_set(wdata->win, ee->transparent); evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); @@ -501,9 +508,9 @@ _ecore_evas_wayland_egl_resize(Ecore_Evas *ee, int location) _ecore_evas_wayland_egl_resize_edge_set(ee, location); if (ECORE_EVAS_PORTRAIT(ee)) - ecore_wl_window_resize(wdata->win, ee->w, ee->h, location); + ecore_wl2_window_resize(wdata->win, ee->w + fw, ee->h + fh, location); else - ecore_wl_window_resize(wdata->win, ee->w, ee->h, location); + ecore_wl2_window_resize(wdata->win, ee->w + fh, ee->h + fw, location); } } diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h index 7929ab32f5..f627d29a78 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_private.h @@ -20,6 +20,7 @@ #include #include #include +#include #include #include "ecore_evas_private.h" @@ -29,7 +30,8 @@ typedef struct _Ecore_Evas_Engine_Wl_Data Ecore_Evas_Engine_Wl_Data; struct _Ecore_Evas_Engine_Wl_Data { - Ecore_Wl_Window *parent, *win; + Ecore_Wl2_Display *display; + Ecore_Wl2_Window *parent, *win; Evas_Object *frame; int fx, fy, fw, fh; #ifdef BUILD_ECORE_EVAS_WAYLAND_EGL diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c index 530b3ce7d1..ddcb12759b 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c @@ -118,7 +118,8 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func = EAPI Ecore_Evas * ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, int x, int y, int w, int h, Eina_Bool frame) { - Ecore_Wl_Window *p = NULL; + Ecore_Wl2_Display *ewd; + Ecore_Wl2_Window *p = NULL; Evas_Engine_Info_Wayland_Shm *einfo; Ecore_Evas_Engine_Wl_Data *wdata; Ecore_Evas_Interface_Wayland *iface; @@ -134,12 +135,19 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, return NULL; } - if (!ecore_wl_init(disp_name)) + if (!ecore_wl2_init()) { ERR("Failed to initialize Ecore_Wayland"); return NULL; } + ewd = ecore_wl2_display_connect(disp_name); + if (!ewd) + { + ERR("Failed to connect to Wayland Display %s", disp_name); + return NULL; + } + if (!(ee = calloc(1, sizeof(Ecore_Evas)))) { ERR("Failed to allocate Ecore_Evas"); @@ -202,15 +210,14 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, if (parent) { - p = ecore_wl_window_find(parent); - ee->alpha = ecore_wl_window_alpha_get(p); + p = ecore_wl2_window_find(ewd, parent); + ee->alpha = ecore_wl2_window_alpha_get(p); } wdata->parent = p; - wdata->win = - ecore_wl_window_new(p, x, y, w + fw, h + fh, - ECORE_WL_WINDOW_BUFFER_TYPE_SHM); - ee->prop.window = ecore_wl_window_id_get(wdata->win); + wdata->display = ewd; + wdata->win = ecore_wl2_window_new(ewd, p, x, y, w + fw, h + fh); + ee->prop.window = ecore_wl2_window_id_get(wdata->win); ee->evas = evas_new(); evas_data_attach_set(ee->evas, ee); @@ -231,11 +238,11 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, if ((einfo = (Evas_Engine_Info_Wayland_Shm *)evas_engine_info_get(ee->evas))) { - einfo->info.wl_disp = ecore_wl_display_get(); - einfo->info.wl_shm = ecore_wl_shm_get(); + einfo->info.wl_disp = ecore_wl2_display_get(ewd); + einfo->info.wl_shm = ecore_wl2_display_shm_get(ewd); einfo->info.destination_alpha = EINA_TRUE; einfo->info.rotation = ee->rotation; - einfo->info.wl_surface = ecore_wl_window_surface_create(wdata->win); + einfo->info.wl_surface = ecore_wl2_window_surface_get(wdata->win); if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo)) { ERR("Failed to set Evas Engine Info for '%s'", ee->driver); @@ -248,7 +255,7 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, goto err; } - /* ecore_wl_animator_source_set(ECORE_ANIMATOR_SOURCE_CUSTOM); */ + ecore_wl2_display_animator_source_set(ewd, ECORE_ANIMATOR_SOURCE_CUSTOM); ecore_evas_callback_pre_free_set(ee, _ecore_evas_wl_common_pre_free); @@ -278,7 +285,8 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, return NULL; ee_err: - ecore_wl_shutdown(); + ecore_wl2_display_disconnect(ewd); + ecore_wl2_shutdown(); return NULL; } @@ -330,15 +338,17 @@ _ecore_evas_wl_show(Ecore_Evas *ee) if (wdata->win) { - ecore_wl_window_show(wdata->win); - ecore_wl_window_alpha_set(wdata->win, ee->alpha); + ecore_wl2_window_show(wdata->win); + ecore_wl2_window_alpha_set(wdata->win, ee->alpha); + /* TODO: Needed ?? */ + /* ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh); */ einfo = (Evas_Engine_Info_Wayland_Shm *)evas_engine_info_get(ee->evas); if (einfo) { struct wl_surface *surf; - surf = ecore_wl_window_surface_get(wdata->win); + surf = ecore_wl2_window_surface_get(wdata->win); if ((!einfo->info.wl_surface) || (einfo->info.wl_surface != surf)) { einfo->info.wl_surface = surf; @@ -385,7 +395,7 @@ _ecore_evas_wl_hide(Ecore_Evas *ee) } if (wdata->win) - ecore_wl_window_hide(wdata->win); + ecore_wl2_window_hide(wdata->win); if (ee->prop.override) { @@ -415,7 +425,7 @@ _ecore_evas_wayland_shm_alpha_do(Ecore_Evas *ee, int alpha) ee->alpha = alpha; wdata = ee->engine.data; - if (wdata->win) ecore_wl_window_alpha_set(wdata->win, ee->alpha); + if (wdata->win) ecore_wl2_window_alpha_set(wdata->win, ee->alpha); evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); @@ -455,7 +465,7 @@ _ecore_evas_wayland_shm_transparent_do(Ecore_Evas *ee, int transparent) wdata = ee->engine.data; if (wdata->win) - ecore_wl_window_transparent_set(wdata->win, ee->transparent); + ecore_wl2_window_transparent_set(wdata->win, ee->transparent); evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh); @@ -494,9 +504,9 @@ _ecore_evas_wayland_shm_resize(Ecore_Evas *ee, int location) _ecore_evas_wayland_shm_resize_edge_set(ee, location); if (ECORE_EVAS_PORTRAIT(ee)) - ecore_wl_window_resize(wdata->win, ee->w, ee->h, location); + ecore_wl2_window_resize(wdata->win, ee->w + fw, ee->h + fh, location); else - ecore_wl_window_resize(wdata->win, ee->w, ee->h, location); + ecore_wl2_window_resize(wdata->win, ee->w + fh, ee->h + fw, location); } }