diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2018-08-14 17:11:31 -0400 |
---|---|---|
committer | Mike Blumenkrantz <zmike@samsung.com> | 2018-08-14 17:11:32 -0400 |
commit | 631fd714c36b253174df9edd5be5d2ae5963b4a5 (patch) | |
tree | 4351400f768fc635974edecd140a005e9b2c5d51 | |
parent | 8e6d66450d8efa84697913b12a23beb747035606 (diff) | |
download | efl-631fd714c36b253174df9edd5be5d2ae5963b4a5.tar.gz |
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
-rw-r--r-- | src/modules/ecore_evas/engines/x/ecore_evas_x.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 4cfafcdd67..01fd64c746 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -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)) |