discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=9f51bffd1e1568fdfbee69abb2df136d4ef7dd24

commit 9f51bffd1e1568fdfbee69abb2df136d4ef7dd24
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Jul 8 14:48:19 2015 -0400

    make e_client_util_.?win_get() fns return xwayland windows when available
    
    fixes setting x11 hints in xwayland clients
---
 src/bin/e_client.x |  8 ++++++++
 src/bin/e_comp_x.c | 10 ++++++++++
 src/bin/e_comp_x.h |  3 +++
 3 files changed, 21 insertions(+)

diff --git a/src/bin/e_client.x b/src/bin/e_client.x
index 562f75a..2a27855 100644
--- a/src/bin/e_client.x
+++ b/src/bin/e_client.x
@@ -87,14 +87,22 @@ static inline Ecore_Window
 e_client_util_pwin_get(const E_Client *ec)
 {
    if (!ec->pixmap) return 0;
+#if defined(HAVE_WAYLAND) && !defined(HAVE_WAYLAND_ONLY)
+   return e_pixmap_parent_window_get(e_comp_x_client_pixmap_get(ec));
+#else
    return e_pixmap_parent_window_get(ec->pixmap);
+#endif
 }
 
 static inline Ecore_Window
 e_client_util_win_get(const E_Client *ec)
 {
    if (!ec->pixmap) return 0;
+#if defined(HAVE_WAYLAND) && !defined(HAVE_WAYLAND_ONLY)
+   return e_pixmap_window_get(e_comp_x_client_pixmap_get(ec));
+#else
    return e_pixmap_window_get(ec->pixmap);
+#endif
 }
 
 static inline Eina_Bool
diff --git a/src/bin/e_comp_x.c b/src/bin/e_comp_x.c
index f9ec6d3..498f00d 100644
--- a/src/bin/e_comp_x.c
+++ b/src/bin/e_comp_x.c
@@ -5461,3 +5461,13 @@ e_comp_x_xwayland_client_setup(E_Client *ec, E_Client 
*wc)
    _e_comp_x_client_stack(wc);
 }
 #endif
+
+E_API inline E_Pixmap *
+e_comp_x_client_pixmap_get(const E_Client *ec)
+{
+#ifdef HAVE_WAYLAND
+   if (!e_pixmap_is_x(ec->pixmap))
+     return e_comp_wl_client_xwayland_pixmap(ec);
+#endif
+   return ec->pixmap;
+}
diff --git a/src/bin/e_comp_x.h b/src/bin/e_comp_x.h
index 1be3d46..33360e5 100644
--- a/src/bin/e_comp_x.h
+++ b/src/bin/e_comp_x.h
@@ -111,5 +111,8 @@ E_API void e_comp_x_shutdown(void);
 E_API void e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window win);
 EINTERN void e_comp_x_nocomp_end(void);
 EINTERN void e_comp_x_xwayland_client_setup(E_Client *ec, E_Client *wc);
+
+E_API E_Pixmap *e_comp_x_client_pixmap_get(const E_Client *ec);
+
 # endif
 #endif

-- 


Reply via email to