raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=d5658d2190cf513707c4e2001899090819965e58

commit d5658d2190cf513707c4e2001899090819965e58
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Fri Jan 8 14:04:31 2021 +0000

    music control - dont flicker album art on multiple repeated prop changes
    
    when u switch songs with popup the album art flickered on/off a few
    times because mnpris props updated multilpe times. this ignores new
    art url changes if they are the same file/url to avoid flickers.
---
 src/bin/e_icon.c                       |  1 +
 src/modules/music-control/e_mod_main.c |  1 +
 src/modules/music-control/private.h    |  1 +
 src/modules/music-control/ui.c         | 18 +++++++++++++++---
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/src/bin/e_icon.c b/src/bin/e_icon.c
index 9aa5462f1..150e8b22c 100644
--- a/src/bin/e_icon.c
+++ b/src/bin/e_icon.c
@@ -172,6 +172,7 @@ e_icon_file_set(Evas_Object *obj, const char *file)
         return;
      }
 
+   if ((sd->url) && (!strcmp(sd->url, file))) return;
    /* smart code here */
    _e_icon_obj_prepare(obj, sd);
    /* FIXME: 64x64 - unhappy about this. use icon size */
diff --git a/src/modules/music-control/e_mod_main.c 
b/src/modules/music-control/e_mod_main.c
index 28fb3b69b..7119f54ee 100644
--- a/src/modules/music-control/e_mod_main.c
+++ b/src/modules/music-control/e_mod_main.c
@@ -625,6 +625,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
    E_FREE_FUNC(ctxt->meta_album, eina_stringshare_del);
    E_FREE_FUNC(ctxt->meta_artist, eina_stringshare_del);
    E_FREE_FUNC(ctxt->meta_cover, eina_stringshare_del);
+   E_FREE_FUNC(ctxt->meta_cover_prev, eina_stringshare_del);
 
    if (ctxt->poll_timer) ecore_timer_del(ctxt->poll_timer);
    ctxt->poll_timer = NULL;
diff --git a/src/modules/music-control/private.h 
b/src/modules/music-control/private.h
index 13aaa828f..d8caef610 100644
--- a/src/modules/music-control/private.h
+++ b/src/modules/music-control/private.h
@@ -22,6 +22,7 @@ typedef struct _E_Music_Control_Module_Context
    Eina_Stringshare *meta_album;
    Eina_Stringshare *meta_title;
    Eina_Stringshare *meta_cover;
+   Eina_Stringshare *meta_cover_prev;
    Eldbus_Proxy *mrpis2;
    Eldbus_Proxy *mpris2_player;
    E_Config_DD *conf_edd;
diff --git a/src/modules/music-control/ui.c b/src/modules/music-control/ui.c
index d0bd8f428..6552954b7 100644
--- a/src/modules/music-control/ui.c
+++ b/src/modules/music-control/ui.c
@@ -50,11 +50,23 @@ _metadata_update(E_Music_Control_Instance *inst)
    img = edje_object_part_swallow_get(inst->content_popup, "cover_swallow");
    if (img)
      {
-        e_comp_object_util_del_list_remove(inst->popup->comp_object, img);
-        evas_object_del(img);
+        if (inst->ctxt->meta_cover_prev != inst->ctxt->meta_cover)
+          {
+             e_comp_object_util_del_list_remove(inst->popup->comp_object, img);
+             evas_object_del(img);
+             img = NULL;
+             if (inst->ctxt->meta_cover_prev)
+               {
+                  eina_stringshare_del(inst->ctxt->meta_cover_prev);
+                  inst->ctxt->meta_cover_prev = NULL;
+               }
+          }
      }
-   if (inst->ctxt->meta_cover)
+   if ((!img) && (inst->ctxt->meta_cover))
      {
+        if (inst->ctxt->meta_cover)
+          inst->ctxt->meta_cover_prev = 
eina_stringshare_add(inst->ctxt->meta_cover);
+
         img = e_icon_add(evas_object_evas_get(inst->content_popup));
         e_icon_scale_size_set(img, 512);
         e_icon_scale_up_set(img, EINA_TRUE);

-- 


Reply via email to