ecore/wayland: Add ecore_wl_window_alpha_set().
Just sets the "alpha" flag on the window and use it when calculating opaque regions.
This commit is contained in:
parent
67179b4a71
commit
7a7a0b8297
|
@ -649,6 +649,9 @@ EAPI Eina_Bool ecore_wl_dnd_selection_has_owner(Ecore_Wl_Dnd *dnd);
|
||||||
*/
|
*/
|
||||||
EAPI struct wl_surface *ecore_wl_window_surface_create(Ecore_Wl_Window *win);
|
EAPI struct wl_surface *ecore_wl_window_surface_create(Ecore_Wl_Window *win);
|
||||||
|
|
||||||
|
EAPI void ecore_wl_window_alpha_set(Ecore_Wl_Window *win, Eina_Bool alpha);
|
||||||
|
EAPI Eina_Bool ecore_wl_window_alpha_get(Ecore_Wl_Window *win);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -454,6 +454,34 @@ ecore_wl_window_transparent_set(Ecore_Wl_Window *win, Eina_Bool transparent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI Eina_Bool
|
||||||
|
ecore_wl_window_alpha_get(Ecore_Wl_Window *win)
|
||||||
|
{
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
if (!win) return EINA_FALSE;
|
||||||
|
|
||||||
|
return win->alpha;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
ecore_wl_window_alpha_set(Ecore_Wl_Window *win, Eina_Bool alpha)
|
||||||
|
{
|
||||||
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
|
if (!win) return;
|
||||||
|
win->alpha = alpha;
|
||||||
|
if (win->region.opaque) wl_region_destroy(win->region.opaque);
|
||||||
|
win->region.opaque = NULL;
|
||||||
|
if ((!win->transparent) && (!win->alpha))
|
||||||
|
{
|
||||||
|
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 Eina_Bool
|
EAPI Eina_Bool
|
||||||
ecore_wl_window_transparent_get(Ecore_Wl_Window *win)
|
ecore_wl_window_transparent_get(Ecore_Wl_Window *win)
|
||||||
{
|
{
|
||||||
|
|
|
@ -424,16 +424,22 @@ _ecore_evas_wl_hide(Ecore_Evas *ee)
|
||||||
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_evas_wl_alpha_set(Ecore_Evas *ee, int alpha)
|
_ecore_evas_wl_alpha_set(Ecore_Evas *ee, int alpha)
|
||||||
{
|
{
|
||||||
Evas_Engine_Info_Wayland_Egl *einfo;
|
Evas_Engine_Info_Wayland_Egl *einfo;
|
||||||
|
Ecore_Evas_Engine_Wl_Data *wdata;
|
||||||
|
|
||||||
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
LOGFN(__FILE__, __LINE__, __FUNCTION__);
|
||||||
|
|
||||||
if (!ee) return;
|
if (!ee) return;
|
||||||
if ((ee->alpha == alpha)) return;
|
if ((ee->alpha == alpha)) return;
|
||||||
ee->alpha = alpha;
|
ee->alpha = alpha;
|
||||||
|
|
||||||
|
wdata = ee->engine.data;
|
||||||
|
if (wdata->win)
|
||||||
|
ecore_wl_window_alpha_set(wdata->win, alpha);
|
||||||
|
|
||||||
if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas)))
|
if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas)))
|
||||||
{
|
{
|
||||||
int fw, fh;
|
int fw, fh;
|
||||||
|
|
Loading…
Reference in New Issue