if (!ee) return;
if ((ee->alpha == alpha)) return;
ee->alpha = alpha;
+ if (ee->engine.wl.win) ecore_wl_window_alpha_set(ee->engine.wl.win, alpha);
+
if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas)))
{
einfo->info.destination_alpha = alpha;
EAPI void ecore_wl_window_maximized_set(Ecore_Wl_Window *win, Eina_Bool maximized);
EAPI void ecore_wl_window_fullscreen_set(Ecore_Wl_Window *win, Eina_Bool fullscreen);
EAPI void ecore_wl_window_transparent_set(Ecore_Wl_Window *win, Eina_Bool transparent);
+EAPI void ecore_wl_window_alpha_set(Ecore_Wl_Window *win, Eina_Bool alpha);
EAPI void ecore_wl_window_update_size(Ecore_Wl_Window *win, int w, int h);
EAPI void ecore_wl_window_update_location(Ecore_Wl_Window *win, int x, int y);
EAPI struct wl_surface *ecore_wl_window_surface_get(Ecore_Wl_Window *win);
win->allocation.w, win->allocation.h);
}
- if (!win->transparent)
+ if ((!win->transparent) && (!win->alpha))
{
win->region.opaque =
wl_compositor_create_region(_ecore_wl_disp->wl.compositor);
return;
}
+ if (!win->surface)
+ return;
+
if (win->region.input)
{
wl_surface_set_input_region(win->surface, win->region.input);
}
}
+EAPI void
+ecore_wl_window_alpha_set(Ecore_Wl_Window *win, Eina_Bool alpha)
+{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
+ if (!win) return;
+ win->alpha = alpha;
+ ecore_wl_window_update_size(win, win->allocation.w, win->allocation.h);
+}
+
EAPI void
ecore_wl_window_update_size(Ecore_Wl_Window *win, int w, int h)
{
if (!win) return;
win->allocation.w = w;
win->allocation.h = h;
+
+ if ((!win->transparent) && (!win->alpha))
+ {
+ if (win->region.opaque) wl_region_destroy(win->region.opaque);
+ win->region.opaque =
+ wl_compositor_create_region(_ecore_wl_disp->wl.compositor);
+ wl_region_add(win->region.opaque, win->allocation.x, win->allocation.y,
+ win->allocation.w, win->allocation.h);
+ }
}
EAPI void