discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=631fd714c36b253174df9edd5be5d2ae5963b4a5

commit 631fd714c36b253174df9edd5be5d2ae5963b4a5
Author: Mike Blumenkrantz <[email protected]>
Date:   Tue Aug 14 17:11:31 2018 -0400

    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
---
 src/modules/ecore_evas/engines/x/ecore_evas_x.c | 19 +++++++++++--------
 1 file 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))

-- 


Reply via email to