discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=1fb1f17db010c575eae32960da84d3fbfab13119

commit 1fb1f17db010c575eae32960da84d3fbfab13119
Author: Derek Foreman <der...@osg.samsung.com>
Date:   Mon Apr 20 18:17:55 2015 -0400

    Fix wayland compositor on 32 bit systems
    
    Summary:
    _e_elm_win_trap_show() treats Ecore_Window as a 64bit data type when
    it's actually the same size as the system's pointer type.
    
     #24HourFullPowerNoToiletNoShower
    
    Reviewers: devilhorns, zmike
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D2388
    
    fix T2194
---
 configure.ac    |  5 -----
 src/bin/e_win.c | 20 +++++++++++++++++---
 2 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/configure.ac b/configure.ac
index 6cbbeea..c29d9ba 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 8797c67..c13c229 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);

-- 


Reply via email to