forked from enlightenment/efl
Create any wayland canvases as Alpha by default now.
Remove calls to ecore_wl_window_update_size inside the alpha & transparent_do functions (this call not needed here anymore). NB: This is needed due to recent frame "fixes". Basically, even tho we set the opaque region correctly on a surface now, if the canvas itself is not alpha, then we will end up with a black "spacer" around the window. NNB: Tested Both engines with terminology (both translucent and not) and also the window state test in elementary. Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
parent
6ab1bd2f71
commit
609941e0fa
|
@ -159,7 +159,7 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent,
|
|||
ee->prop.request_pos = 0;
|
||||
ee->prop.sticky = 0;
|
||||
ee->prop.draw_frame = frame;
|
||||
ee->alpha = EINA_FALSE;
|
||||
ee->alpha = EINA_TRUE;
|
||||
|
||||
/* NB: Disabled for right now as it causes textgrid (terminology)
|
||||
* to not draw text anymore */
|
||||
|
@ -184,6 +184,7 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent,
|
|||
wdata->win =
|
||||
ecore_wl_window_new(p, x, y, w + fw, h + fh,
|
||||
ECORE_WL_WINDOW_BUFFER_TYPE_EGL_WINDOW);
|
||||
ecore_wl_window_alpha_set(wdata->win, ee->alpha);
|
||||
ee->prop.window = wdata->win->id;
|
||||
|
||||
ee->evas = evas_new();
|
||||
|
@ -461,23 +462,20 @@ _ecore_evas_wayland_egl_alpha_do(Ecore_Evas *ee, int alpha)
|
|||
|
||||
if (!ee) return;
|
||||
if ((ee->alpha == alpha)) return;
|
||||
ee->alpha = alpha;
|
||||
ee->alpha = EINA_TRUE;
|
||||
wdata = ee->engine.data;
|
||||
|
||||
if (wdata->win) ecore_wl_window_alpha_set(wdata->win, alpha);
|
||||
if (wdata->win) ecore_wl_window_alpha_set(wdata->win, ee->alpha);
|
||||
|
||||
evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
|
||||
|
||||
if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas)))
|
||||
{
|
||||
einfo->info.destination_alpha = alpha;
|
||||
einfo->info.destination_alpha = ee->alpha;
|
||||
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
|
||||
ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
if (wdata->win)
|
||||
ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -485,7 +483,7 @@ _ecore_evas_wl_alpha_set(Ecore_Evas *ee, int alpha)
|
|||
{
|
||||
if (ee->in_async_render)
|
||||
{
|
||||
ee->delayed.alpha = alpha;
|
||||
ee->delayed.alpha = EINA_TRUE;
|
||||
ee->delayed.alpha_changed = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
@ -504,24 +502,21 @@ _ecore_evas_wayland_egl_transparent_do(Ecore_Evas *ee, int transparent)
|
|||
|
||||
if (!ee) return;
|
||||
if ((ee->transparent == transparent)) return;
|
||||
ee->transparent = transparent;
|
||||
ee->transparent = EINA_TRUE;
|
||||
|
||||
wdata = ee->engine.data;
|
||||
if (wdata->win)
|
||||
ecore_wl_window_transparent_set(wdata->win, transparent);
|
||||
ecore_wl_window_transparent_set(wdata->win, ee->transparent);
|
||||
|
||||
evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
|
||||
|
||||
if ((einfo = (Evas_Engine_Info_Wayland_Egl *)evas_engine_info_get(ee->evas)))
|
||||
{
|
||||
einfo->info.destination_alpha = transparent;
|
||||
einfo->info.destination_alpha = ee->transparent;
|
||||
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
|
||||
ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
if (wdata->win)
|
||||
ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -529,7 +524,7 @@ _ecore_evas_wl_transparent_set(Ecore_Evas *ee, int transparent)
|
|||
{
|
||||
if (ee->in_async_render)
|
||||
{
|
||||
ee->delayed.transparent = transparent;
|
||||
ee->delayed.transparent = EINA_TRUE;
|
||||
ee->delayed.transparent_changed = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -157,7 +157,7 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent,
|
|||
ee->prop.request_pos = 0;
|
||||
ee->prop.sticky = 0;
|
||||
ee->prop.draw_frame = frame;
|
||||
ee->alpha = EINA_FALSE;
|
||||
ee->alpha = EINA_TRUE;
|
||||
|
||||
if (getenv("ECORE_EVAS_FORCE_SYNC_RENDER"))
|
||||
ee->can_async_render = 0;
|
||||
|
@ -181,6 +181,7 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent,
|
|||
wdata->win =
|
||||
ecore_wl_window_new(p, x, y, w + fw, h + fh,
|
||||
ECORE_WL_WINDOW_BUFFER_TYPE_SHM);
|
||||
ecore_wl_window_alpha_set(wdata->win, ee->alpha);
|
||||
ee->prop.window = wdata->win->id;
|
||||
|
||||
ee->evas = evas_new();
|
||||
|
@ -460,23 +461,20 @@ _ecore_evas_wayland_shm_alpha_do(Ecore_Evas *ee, int alpha)
|
|||
|
||||
if (!ee) return;
|
||||
if ((ee->alpha == alpha)) return;
|
||||
ee->alpha = alpha;
|
||||
ee->alpha = EINA_TRUE;
|
||||
wdata = ee->engine.data;
|
||||
|
||||
if (wdata->win) ecore_wl_window_alpha_set(wdata->win, alpha);
|
||||
if (wdata->win) ecore_wl_window_alpha_set(wdata->win, ee->alpha);
|
||||
|
||||
evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
|
||||
|
||||
if ((einfo = (Evas_Engine_Info_Wayland_Shm *)evas_engine_info_get(ee->evas)))
|
||||
{
|
||||
einfo->info.destination_alpha = alpha;
|
||||
einfo->info.destination_alpha = ee->alpha;
|
||||
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
|
||||
ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
if (wdata->win)
|
||||
ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -484,7 +482,7 @@ _ecore_evas_wl_alpha_set(Ecore_Evas *ee, int alpha)
|
|||
{
|
||||
if (ee->in_async_render)
|
||||
{
|
||||
ee->delayed.alpha = alpha;
|
||||
ee->delayed.alpha = EINA_TRUE;
|
||||
ee->delayed.alpha_changed = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
@ -502,24 +500,21 @@ _ecore_evas_wayland_shm_transparent_do(Ecore_Evas *ee, int transparent)
|
|||
|
||||
if (!ee) return;
|
||||
if ((ee->transparent == transparent)) return;
|
||||
ee->transparent = transparent;
|
||||
ee->transparent = EINA_TRUE;
|
||||
|
||||
wdata = ee->engine.data;
|
||||
if (wdata->win)
|
||||
ecore_wl_window_transparent_set(wdata->win, transparent);
|
||||
ecore_wl_window_transparent_set(wdata->win, ee->transparent);
|
||||
|
||||
evas_output_framespace_get(ee->evas, NULL, NULL, &fw, &fh);
|
||||
|
||||
if ((einfo = (Evas_Engine_Info_Wayland_Shm *)evas_engine_info_get(ee->evas)))
|
||||
{
|
||||
einfo->info.destination_alpha = transparent;
|
||||
einfo->info.destination_alpha = ee->transparent;
|
||||
if (!evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo))
|
||||
ERR("evas_engine_info_set() for engine '%s' failed.", ee->driver);
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
if (wdata->win)
|
||||
ecore_wl_window_update_size(wdata->win, ee->w + fw, ee->h + fh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -527,7 +522,7 @@ _ecore_evas_wl_transparent_set(Ecore_Evas *ee, int transparent)
|
|||
{
|
||||
if (ee->in_async_render)
|
||||
{
|
||||
ee->delayed.transparent = transparent;
|
||||
ee->delayed.transparent = EINA_TRUE;
|
||||
ee->delayed.transparent_changed = EINA_TRUE;
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue