ecore-evas/x: rework draw_block unsetting from ConfigureNotify

Summary:
draw_block should only be unset if the event is triggered by the wm
or the window is an override, otherwise it prematurely begins rendering
the window at a size which may or may not be accurate

ref T7008

Reviewers: devilhorns, ManMower

Reviewed By: ManMower

Subscribers: ManMower, cedric, #reviewers, #committers

Tags: #efl_display_system

Maniphest Tasks: T7008

Differential Revision: https://phab.enlightenment.org/D6793
This commit is contained in:
Mike Blumenkrantz 2018-08-14 17:11:31 -04:00
parent 8e6d66450d
commit 631fd714c3
1 changed files with 11 additions and 8 deletions

View File

@ -1650,18 +1650,22 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE
if (!ee) return ECORE_CALLBACK_PASS_ON; /* pass on event */
edata = ee->engine.data;
if (e->win != ee->prop.window) return ECORE_CALLBACK_PASS_ON;
if (!edata->configured)
if ((e->from_wm) || (ee->prop.override))
{
if (edata->fully_obscured)
if (!edata->configured)
{
/* FIXME: round trip */
if (!ecore_x_screen_is_composited(edata->screen_num))
if (edata->fully_obscured)
{
/* FIXME: round trip */
if (!ecore_x_screen_is_composited(edata->screen_num))
ee->draw_block = EINA_FALSE;
}
else
ee->draw_block = EINA_FALSE;
}
else
ee->draw_block = EINA_FALSE;
edata->configure_coming = 0;
edata->configured = 1;
}
edata->configured = 1;
if (edata->direct_resize) return ECORE_CALLBACK_PASS_ON;
pointer = evas_default_device_get(ee->evas, EFL_INPUT_DEVICE_TYPE_MOUSE);
@ -1671,7 +1675,6 @@ _ecore_evas_x_event_window_configure(void *data EINA_UNUSED, int type EINA_UNUSE
if (edata->configure_reqs > 0) edata->configure_reqs--;
edata->configure_coming = 0;
if ((e->from_wm) || (ee->prop.override))
{
if ((ee->x != e->x) || (ee->y != e->y))