billiob pushed a commit to branch master.

http://git.enlightenment.org/apps/terminology.git/commit/?id=0eac2752d31951394b354d491f2d7bc3efaa43d8

commit 0eac2752d31951394b354d491f2d7bc3efaa43d8
Author: Boris Faure <[email protected]>
Date:   Mon Apr 6 21:58:21 2020 +0200

    win: don't call elm_win_alpha_set() too many times
---
 src/bin/win.c | 58 ++++++++++++++++++++++++++--------------------------------
 1 file changed, 26 insertions(+), 32 deletions(-)

diff --git a/src/bin/win.c b/src/bin/win.c
index 01761df..0bde0e9 100644
--- a/src/bin/win.c
+++ b/src/bin/win.c
@@ -206,6 +206,7 @@ struct _Win
    unsigned char group_input : 1;
    unsigned char group_only_visible : 1;
    unsigned char group_once_handled : 1;
+   unsigned char translucent : 1;
 
    unsigned int  on_popover;
 };
@@ -229,7 +230,6 @@ static Tab_Item* tab_item_new(Tabs *tabs, Term_Container 
*child);
 static void _tabs_recreate(Tabs *tabs);
 static void _tab_drag_free(void);
 static void _term_tabregion_free(Term *term);
-static void _set_trans(Config *config, Evas_Object *bg, Evas_Object *base);
 static void _imf_event_commit_cb(void *data, Ecore_IMF_Context *_ctx 
EINA_UNUSED, void *event);
 
 /* }}} */
@@ -1013,10 +1013,11 @@ win_evas_object_get(const Win *wn)
 }
 
 static void
-_win_trans(Win *wn, Term *term)
+_term_trans(Term *term)
 {
    Edje_Message_Int msg;
    Evas_Object *edje = elm_layout_edje_get(term->core);
+   Win *wn = term->wn;
 
    if (term->config->translucent)
      msg.val = term->config->opacity;
@@ -1025,15 +1026,20 @@ _win_trans(Win *wn, Term *term)
    edje_object_message_send(term->bg_edj, EDJE_MESSAGE_INT, 1, &msg);
    edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg);
 
-   if (term->config->translucent)
-     {
-        elm_win_alpha_set(wn->win, EINA_TRUE);
-        evas_object_hide(wn->backbg);
-     }
-   else
+   if (term->config->translucent != wn->translucent)
      {
-        elm_win_alpha_set(wn->win, EINA_FALSE);
-        evas_object_show(wn->backbg);
+        if (term->config->translucent)
+          {
+             elm_win_alpha_set(wn->win, EINA_TRUE);
+             evas_object_hide(wn->backbg);
+             wn->translucent = EINA_TRUE;
+          }
+        else
+          {
+             elm_win_alpha_set(wn->win, EINA_FALSE);
+             evas_object_show(wn->backbg);
+             wn->translucent = EINA_FALSE;
+          }
      }
 }
 
@@ -1048,7 +1054,7 @@ main_trans_update(void)
      {
         EINA_LIST_FOREACH(wn->terms, ll, term)
           {
-             _win_trans(wn, term);
+             _term_trans(term);
           }
      }
 }
@@ -4271,6 +4277,7 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
    Tab_Item *tab_item;
    Evas_Object *o;
    Evas_Coord x, y, w, h;
+   Edje_Message_Int msg;
 
    if (tabs->selector_bg)
      return;
@@ -4284,7 +4291,11 @@ _cb_tab_selector_show(Tabs *tabs, Tab_Item *to_item)
    evas_object_geometry_set(tabs->selector_bg, x, y, w, h);
    evas_object_hide(o);
 
-   _set_trans(wn->config, tabs->selector_bg, NULL);
+   if (wn->config && wn->config->translucent)
+     msg.val = wn->config->opacity;
+   else
+     msg.val = 100;
+   edje_object_message_send(tabs->selector_bg, EDJE_MESSAGE_INT, 1, &msg);
    background_set_shine(wn->config, tabs->selector_bg);
    edje_object_signal_emit(tabs->selector_bg, "begin", "terminology");
 
@@ -5745,24 +5756,6 @@ term_apply_shine(Term *term, int shine)
 }
 
 
-static void
-_set_trans(Config *config, Evas_Object *bg, Evas_Object *base)
-{
-   Edje_Message_Int msg;
-
-   if (config && config->translucent)
-     msg.val = config->opacity;
-   else
-     msg.val = 100;
-
-   if (bg)
-       edje_object_message_send(bg, EDJE_MESSAGE_INT, 1, &msg);
-   if (base) {
-       Evas_Object *edje = elm_layout_edje_get(base);
-       edje_object_message_send(edje, EDJE_MESSAGE_INT, 1, &msg);
-   }
-}
-
 static void
 _term_config_set(Term *term, Config *config)
 {
@@ -7007,7 +7000,7 @@ _cb_tab_next(void *data,
 static void
 _term_bg_config(Term *term)
 {
-   _set_trans(term->config, term->bg_edj, term->core);
+   _term_trans(term);
    background_set_shine(term->config, term->bg_edj);
 
    termio_theme_set(term->termio, term->bg_edj);
@@ -7299,7 +7292,8 @@ term_new(Win *wn, Config *config, const char *cmd,
    if (term->config->mv_always_show)
      term->miniview_shown = EINA_TRUE;
 
-   _set_trans(term->config, term->bg_edj, term->core);
+   _term_trans(term);
+
    background_set_shine(term->config, term->bg_edj);
 
    term->termio = o = termio_add(wn->win, config, cmd, login_shell, cd,

-- 


Reply via email to