diff --git a/configure.ac b/configure.ac index 6cbbeea7b..c29d9baf2 100644 --- a/configure.ac +++ b/configure.ac @@ -443,7 +443,6 @@ test -n "$dbus_mount" && AC_DEFINE_UNQUOTED([HAVE_UDISKS_MOUNT], [1], [enable Ud AM_CONDITIONAL([HAVE_UDISKS_MOUNT], [test -n "$dbus_mount"]) AM_CONDITIONAL([HAVE_EEZE_MOUNT], [test -n "$eeze_mount"]) -AC_CHECK_SIZEOF([void*]) # verify "wayland-only" early to adapt dependencies have_wayland_only=no @@ -842,10 +841,6 @@ if test "x${have_wayland}" = "xyes"; then fi fi -if test "x${have_wayland}" = "xyes" && test "$ac_cv_sizeof_voidp" -ne 8 ; then - AC_MSG_ERROR([wayland support is only available for 64bit architectures]) -fi - AM_CONDITIONAL([HAVE_WAYLAND], [test "x${have_wayland}" = "xyes"]) AM_CONDITIONAL([HAVE_WAYLAND_ONLY], [test "x${have_wayland_only}" = "xyes"]) AM_CONDITIONAL([HAVE_WAYLAND_CLIENTS], [test "x${have_wayland_clients}" = "xyes"]) diff --git a/src/bin/e_win.c b/src/bin/e_win.c index 8797c6780..c13c22987 100644 --- a/src/bin/e_win.c +++ b/src/bin/e_win.c @@ -67,6 +67,9 @@ _e_elm_win_trap_show(void *data, Evas_Object *o) { E_Client *ec; Ecore_Window win; +#ifdef HAVE_WAYLAND + uint64_t wl_win_id; +#endif E_Pixmap_Type type = E_PIXMAP_TYPE_X; win = elm_win_window_id_get(o); @@ -76,7 +79,7 @@ _e_elm_win_trap_show(void *data, Evas_Object *o) type = E_PIXMAP_TYPE_WL; ctx->pointer = e_comp->pointer; elm_win_borderless_set(o, 1); - win = e_comp_wl_id_get(win, getpid()); + wl_win_id = e_comp_wl_id_get(win, getpid()); } else #endif @@ -85,7 +88,12 @@ _e_elm_win_trap_show(void *data, Evas_Object *o) ctx->pointer = e_pointer_window_new(win, EINA_TRUE); } - ec = e_pixmap_find_client(type, win); +#ifdef HAVE_WAYLAND + if (type == E_PIXMAP_TYPE_WL) + ec = e_pixmap_find_client(type, wl_win_id); + else +#endif + ec = e_pixmap_find_client(type, win); if (ec) ctx->client = ec; else @@ -101,7 +109,13 @@ _e_elm_win_trap_show(void *data, Evas_Object *o) if ((!title) || (!title[0])) title = "E"; ecore_evas_title_set(ee, title); - cp = e_pixmap_new(type, win); + +#ifdef HAVE_WAYLAND + if (type == E_PIXMAP_TYPE_WL) + cp = e_pixmap_new(type, wl_win_id); + else +#endif + cp = e_pixmap_new(type, win); EINA_SAFETY_ON_NULL_RETURN_VAL(cp, EINA_TRUE); ctx->client = e_client_new(cp, 0, 1);