This commit breaks bgpreview widget support for panoramic wallpapers which
use panning.

On Fri, Jan 27, 2017 at 9:45 AM Carsten Haitzler <[email protected]>
wrote:

> raster pushed a commit to branch master.
>
>
> http://git.enlightenment.org/core/enlightenment.git/commit/?id=acf8988c40694c3c8b99f3f113baab73efd22c48
>
> commit acf8988c40694c3c8b99f3f113baab73efd22c48
> Author: Carsten Haitzler (Rasterman) <[email protected]>
> Date:   Fri Jan 27 23:44:02 2017 +0900
>
>     e widget bgpreview - use e thumb to get quality back and speed too
>
>     this should keep the perfromance of the prior commit
>     f80f73a7c9cf663ccb3db9634a72d7fcc294bd90 and now get quality back by
>     generating thumbnails at higher resolution then scaling down from
> there.
>
>     @fix
> ---
>  src/bin/e_widget_bgpreview.c | 45
> +++++++++++++++++++++++++++-----------------
>  1 file changed, 28 insertions(+), 17 deletions(-)
>
> diff --git a/src/bin/e_widget_bgpreview.c b/src/bin/e_widget_bgpreview.c
> index f66eb80..89be742 100644
> --- a/src/bin/e_widget_bgpreview.c
> +++ b/src/bin/e_widget_bgpreview.c
> @@ -10,11 +10,12 @@ struct _E_Widget_Data
>  typedef struct _E_Widget_Desk_Data E_Widget_Desk_Data;
>  struct _E_Widget_Desk_Data
>  {
> -   Evas_Object         *icon, *thumb, *live, *cont;
> +   Evas_Object         *icon, *live, *cont;
>     int                  zone, x, y;
>     Ecore_Event_Handler *bg_upd_hdl;
>     Ecore_Job           *resize_job;
>     Eina_Bool            configurable : 1;
> +   Eina_Bool            thumb : 1;
>  };
>
>  /* local function prototypes */
> @@ -26,6 +27,7 @@ static void      _e_wid_desk_cb_config(void *data, Evas
> *evas, Evas_Object *obj,
>  static void      _e_wid_cb_resize(void *data, Evas *evas, Evas_Object
> *obj, void *event);
>  static Eina_Bool _e_wid_cb_bg_update(void *data, int type, void *event);
>
> +/*
>  static void
>  _bgpreview_viewport_update(Evas_Object *o, const E_Zone *zone, int x, int
> y)
>  {
> @@ -40,6 +42,7 @@ _bgpreview_viewport_update(Evas_Object *o, const E_Zone
> *zone, int x, int y)
>     msg->val[4] = zone->desk_y_count;
>     edje_object_message_send(o, EDJE_MESSAGE_FLOAT_SET, 0, msg);
>  }
> +*/
>
>  E_API Evas_Object *
>  e_widget_bgpreview_add(Evas *evas, int nx, int ny)
> @@ -96,14 +99,16 @@ e_widget_bgpreview_desk_add(Evas *e, E_Zone *zone, int
> x, int y)
>
>     dd->cont = evas_object_table_add(e);
>
> +   dd->thumb = EINA_FALSE;
>     if (eina_str_has_extension(bgfile, ".edj"))
>       {
> -        dd->live = e_livethumb_add(e);
> -        dd->thumb = o = edje_object_add(e_livethumb_evas_get(dd->live));
> -        edje_object_file_set(o, bgfile, "e/desktop/background");
> -        _bgpreview_viewport_update(o, zone, x, y);
> -        e_livethumb_thumb_set(dd->live, o);
> -        evas_object_show(dd->thumb);
> +        dd->live = o = e_thumb_icon_add(e);
> +        e_thumb_icon_size_set(o, zone->w / 8, zone->h / 8);
> +        e_thumb_icon_file_set(o, bgfile, "e/desktop/background");
> +        e_icon_fill_inside_set(o, EINA_FALSE);
> +        e_thumb_icon_begin(o);
> +//        _bgpreview_viewport_update(o, zone, x, y);
> +        dd->thumb = EINA_TRUE;
>       }
>     else if ((eina_str_has_extension(bgfile, ".gif")) ||
>              (eina_str_has_extension(bgfile, ".png")) ||
> @@ -165,6 +170,9 @@ _e_wid_livethumb_resize_job(void *data)
>
>     if (dd->thumb)
>       {
> +        const char *bgfile;
> +
> +        bgfile = e_bg_file_get(dd->zone, dd->x, dd->y);
>          zone = e_comp_object_util_zone_get(dd->live);
>          if (!zone) zone = eina_list_data_get(e_comp->zones);
>          evas_object_geometry_get(dd->cont, NULL, NULL, &w, &h);
> @@ -183,7 +191,10 @@ _e_wid_livethumb_resize_job(void *data)
>                    w = (zone->w * h) / zone->h;
>                 }
>            }
> -        e_livethumb_vsize_set(dd->live, w, h);
> +        e_thumb_icon_size_set(dd->live, w, h);
> +        e_thumb_icon_file_set(dd->live, bgfile, "e/desktop/background");
> +        e_icon_fill_inside_set(dd->live, EINA_FALSE);
> +        e_thumb_icon_rethumb(dd->live);
>       }
>     dd->resize_job = NULL;
>  }
> @@ -359,19 +370,20 @@ _e_wid_cb_bg_update(void *data, int type, void
> *event)
>          zone = e_comp_zone_number_get(dd->zone);
>          bgfile = e_bg_file_get(dd->zone, dd->x, dd->y);
>
> -        if (dd->thumb) evas_object_del(dd->thumb);
> -        dd->thumb = NULL;
>          if (dd->live) evas_object_del(dd->live);
>          dd->live = NULL;
>
> +        dd->thumb = EINA_FALSE;
>          if (eina_str_has_extension(bgfile, ".edj"))
>            {
> -             dd->live = e_livethumb_add(e);
> -             dd->thumb = o =
> edje_object_add(e_livethumb_evas_get(dd->live));
> -             edje_object_file_set(o, bgfile, "e/desktop/background");
> -             _bgpreview_viewport_update(o, zone, dd->x, dd->y);
> -             e_livethumb_thumb_set(dd->live, o);
> -             evas_object_show(dd->thumb);
> +             dd->live = o = e_thumb_icon_add(e);
> +             e_thumb_icon_size_set(o, zone->w / 8, zone->h / 8);
> +             e_thumb_icon_file_set(o, bgfile, "e/desktop/background");
> +             e_icon_fill_inside_set(o, EINA_FALSE);
> +             e_thumb_icon_begin(o);
> +//             _bgpreview_viewport_update(o, zone, dd->x, dd->y);
> +             dd->thumb = EINA_TRUE;
> +             _e_wid_livethumb_resize_job(dd);
>            }
>          else if ((eina_str_has_extension(bgfile, ".gif")) ||
>                   (eina_str_has_extension(bgfile, ".png")) ||
> @@ -387,7 +399,6 @@ _e_wid_cb_bg_update(void *data, int type, void *event)
>            {
>               dd->live = o = e_video_add(e, bgfile, EINA_TRUE);
>            }
> -        _e_wid_livethumb_resize_job(dd);
>          eina_stringshare_del(bgfile);
>
>          evas_object_size_hint_weight_set(dd->live, 1, 1);
>
> --
>
>
>
------------------------------------------------------------------------------
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