Hello.

On 10/12/15 21:56, Mike Blumenkrantz wrote:
> discomfitor pushed a commit to branch master.
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=6149fd7a0a9ef3f9495270cf1c4ab7727a30f21c
>
> commit 6149fd7a0a9ef3f9495270cf1c4ab7727a30f21c
> Author: Mike Blumenkrantz <[email protected]>
> Date:   Thu Dec 10 15:53:31 2015 -0500
>
>      win: redo resize deferral to trigger during pre render
>      
>      using a job results in the resize occurring after render in the same 
> loop,
>      meaning that anything which depends on resizes to happen in a certain
>      time will not have synchronized display vs toolkit geometries
>      
>      fixes all issues related to wayland window geometries

This commit breaks the widget screenshot generation for our Elementary 
docs. Two example from our nightly doc generation:

https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/group__Button.html
https://build.enlightenment.org/job/nightly_elm_gcc_x86_64/lastSuccessfulBuild/artifact/doc/html/group__Flip.html

As you can see the image are off or completely broken. They should 
actually look like this (from our 1.16 docs)

https://docs.enlightenment.org/elementary/current/group__Button.html
https://docs.enlightenment.org/elementary/current/group__Flip.html

Thanks to Jean Rene Dawin for reporting it. It took me a long time to 
git bisect'ing it down to this commit. Reverting it locally fixes the 
problem.

I'm open for suggestions how we fix this and still fix the problem the 
commit originally tried to fix.

regards
Stefan Schmidt
> ---
>   src/lib/elm_win.c | 19 ++++++++++++++-----
>   1 file changed, 14 insertions(+), 5 deletions(-)
>
> diff --git a/src/lib/elm_win.c b/src/lib/elm_win.c
> index c9729ce..0012445 100644
> --- a/src/lib/elm_win.c
> +++ b/src/lib/elm_win.c
> @@ -130,7 +130,7 @@ struct _Elm_Win_Data
>      } win32;
>   #endif
>   
> -   Ecore_Job                     *deferred_resize_job;
> +   Eina_Bool                     deferred_resize_job;
>      Ecore_Job                     *deferred_child_eval_job;
>   
>      Elm_Win_Type                   type;
> @@ -824,7 +824,7 @@ _elm_win_resize_job(void *data)
>      ELM_WIN_DATA_GET(data, sd);
>      int w, h;
>   
> -   sd->deferred_resize_job = NULL;
> +   sd->deferred_resize_job = EINA_FALSE;
>      ecore_evas_request_geometry_get(sd->ee, NULL, NULL, &w, &h);
>      if (sd->constrain)
>        {
> @@ -848,13 +848,21 @@ _elm_win_resize_job(void *data)
>   }
>   
>   static void
> +_elm_win_pre_render(Ecore_Evas *ee)
> +{
> +   Elm_Win_Data *sd = _elm_win_associate_get(ee);
> +
> +   if (sd->deferred_resize_job)
> +     _elm_win_resize_job(sd->obj);
> +}
> +
> +static void
>   _elm_win_resize(Ecore_Evas *ee)
>   {
>      Elm_Win_Data *sd = _elm_win_associate_get(ee);
>      if (!sd) return;
>   
> -   ecore_job_del(sd->deferred_resize_job);
> -   sd->deferred_resize_job = ecore_job_add(_elm_win_resize_job, sd->obj);
> +   sd->deferred_resize_job = EINA_TRUE;
>   }
>   
>   static void
> @@ -1945,7 +1953,6 @@ _elm_win_evas_object_smart_del(Eo *obj, Elm_Win_Data 
> *sd)
>           ecore_evas_callback_resize_set(sd->ee, NULL);
>        }
>   
> -   ecore_job_del(sd->deferred_resize_job);
>      ecore_job_del(sd->deferred_child_eval_job);
>      eina_stringshare_del(sd->shot.info);
>      ecore_timer_del(sd->shot.timer);
> @@ -1992,6 +1999,7 @@ _elm_win_evas_object_smart_del(Eo *obj, Elm_Win_Data 
> *sd)
>      ecore_evas_callback_focus_out_set(sd->ee, NULL);
>      ecore_evas_callback_move_set(sd->ee, NULL);
>      ecore_evas_callback_state_change_set(sd->ee, NULL);
> +   ecore_evas_callback_pre_render_set(sd->ee, NULL);
>   
>      eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
>   
> @@ -3856,6 +3864,7 @@ _elm_win_finalize_internal(Eo *obj, Elm_Win_Data *sd, 
> const char *name, Elm_Win_
>      ecore_evas_callback_focus_out_set(sd->ee, _elm_win_focus_out);
>      ecore_evas_callback_resize_set(sd->ee, _elm_win_resize);
>      ecore_evas_callback_move_set(sd->ee, _elm_win_move);
> +   ecore_evas_callback_pre_render_set(sd->ee, _elm_win_pre_render);
>      if (type != ELM_WIN_FAKE)
>        ecore_evas_callback_mouse_in_set(sd->ee, _elm_win_mouse_in);
>      evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, 
> _elm_win_cb_hide, NULL);
>


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to