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
