diff options
-rw-r--r-- | src/bin/e_client.x | 8 | ||||
-rw-r--r-- | src/bin/e_comp_x.c | 10 | ||||
-rw-r--r-- | src/bin/e_comp_x.h | 3 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/bin/e_client.x b/src/bin/e_client.x index 562f75a902..2a2785512a 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 f9ec6d3d26..498f00da25 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 1be3d4602a..33360e588b 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 |