On Sat, 26 May 2018 21:40:55 +0300 Daniel Zaoui <[email protected]> said:

i've reverted it. for reasons given in my revert log (massive breakage and poor
review that didn't even test the patch). :(

once it's actually working and tested it can come back in...

> Hi Mike,
> 
> I am sorry to disturb you but I have a small issue with that patch... IT
> BREAKS E!!! I mean, not a crash, just a black screen with a cute white cursor
> in the middle. It happens on two laptops using X11.
> 
> Please feel free to fix/revert it :-)
> 
> 
> On Fri, 25 May 2018 10:41:36 -0700
> Mike Blumenkrantz <[email protected]> wrote:
> 
> > cedric pushed a commit to branch master.
> > 
> > http://git.enlightenment.org/core/efl.git/commit/?id=7b80038fa7b54cff27b463382283211727aaf104
> > 
> > commit 7b80038fa7b54cff27b463382283211727aaf104
> > Author: Mike Blumenkrantz <[email protected]>
> > Date:   Fri May 25 10:28:29 2018 -0700
> > 
> >     ecore-evas-x: set draw_block until the window receives a
> > configure event 
> >     Summary:
> >     drawing a non-override window before receiving a configure event
> > results in an unsized window, breaking spec. it also prevents
> > ecore-evas resize callbacks from triggering, yielding undefined
> > returns from functions which attempt to get the geometry of the
> > ecore-evas 
> >     fix T6907
> >     
> >     Reviewers: cedric, raster
> >     
> >     Reviewed By: cedric
> >     
> >     Subscribers: #committers, vtorri
> >     
> >     Tags: #efl
> >     
> >     Maniphest Tasks: T6907
> >     
> >     Differential Revision: https://phab.enlightenment.org/D6019
> >     
> >     Reviewed-by: Cedric BAIL <[email protected]>
> > ---
> >  src/modules/ecore_evas/engines/x/ecore_evas_x.c | 27
> > +++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2
> > 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
> > 3d88e9aae3..47baeff5ff 100644 ---
> > a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++
> > b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -131,6 +131,8 @@
> > struct _Ecore_Evas_Engine_Data_X11 { unsigned long colormap; // store
> > colormap used to create pixmap } pixmap;
> >     Eina_Bool destroyed : 1; // X window has been deleted and cannot
> > be used
> > +   Eina_Bool fully_obscured : 1; // X window is fully obscured
> > +   Eina_Bool configured : 1; // X window has been configured
> >  };
> >  
> >  static Ecore_Evas_Interface_X11 *
> > _ecore_evas_x_interface_x11_new(void); @@ -1065,14 +1067,15 @@
> > _ecore_evas_x_event_visibility_change(void *data EINA_UNUSED, int
> > type EINA_UNUS edata = ee->engine.data; if (e->win !=
> > ee->prop.window) return ECORE_CALLBACK_PASS_ON; //   printf("VIS
> > CHANGE OBSCURED: %p %i\n", ee, e->fully_obscured);
> > +   edata->fully_obscured = e->fully_obscured;
> >     if (e->fully_obscured)
> >       {
> >          /* FIXME: round trip */
> >          if (!ecore_x_screen_is_composited(edata->screen_num))
> > -          ee->draw_block = EINA_TRUE;
> > +          ee->draw_block = !edata->configured;
> >       }
> >     else
> > -     ee->draw_block = EINA_FALSE;
> > +     ee->draw_block = !edata->configured;
> >     return ECORE_CALLBACK_PASS_ON;
> >  }
> >  
> > @@ -1622,6 +1625,18 @@ _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 (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;
> > +     }
> > +   edata->configured = 1;
> >     if (edata->direct_resize) return ECORE_CALLBACK_PASS_ON;
> >  
> >     pointer = evas_default_device_get(ee->evas,
> > EFL_INPUT_DEVICE_TYPE_MOUSE); @@ -3319,12 +3334,18 @@
> > _ecore_evas_x_reinit_win(Ecore_Evas *ee) static void
> >  _ecore_evas_x_override_set(Ecore_Evas *ee, Eina_Bool on)
> >  {
> > +   Ecore_Evas_Engine_Data_X11 *edata = ee->engine.data;
> > +
> >     if (ee->prop.override == on) return;
> >     if (ee->should_be_visible) ecore_x_window_hide(ee->prop.window);
> >     ecore_x_window_override_set(ee->prop.window, on);
> >     if (ee->should_be_visible) ecore_x_window_show(ee->prop.window);
> >     if (ecore_evas_focus_device_get(ee, NULL))
> > ecore_x_window_focus(ee->prop.window); ee->prop.override = on;
> > +   if (!on) return;
> > +   edata->configured = 1;
> > +   if (!edata->fully_obscured)
> > +     ee->draw_block = 0;
> >  }
> >  
> >  static void
> > @@ -4667,6 +4688,8 @@ ecore_evas_gl_x11_options_new_internal(const
> > char *disp_name, Ecore_X_Window par
> > _ecore_evas_x_aux_hints_update(ee); _ecore_evas_x_sync_set(ee);
> >  
> > +   ee->draw_block = 1;
> > +
> >     ee->engine.func->fn_render = _ecore_evas_x_render;
> >     ecore_x_input_multi_select(ee->prop.window);
> >  
> > 
> 
> 
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - [email protected]


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to