zmike pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=67bf9eae6c72bedd3c0f28acf1c649d94f1e5478

commit 67bf9eae6c72bedd3c0f28acf1c649d94f1e5478
Author: JunsuChoi <jsuya.c...@samsung.com>
Date:   Tue May 12 11:20:15 2020 -0400

    Efl.Ui.Button_Legacy: Prevent duplicate signal emit of contents
    
    Summary:
    When call elm_button_add, theme_apply of layout is called and
    _efl_ui_button_legacy_efl_ui_widget_theme_apply is called.
    Then it calls the signal emit for the icon.
    In the button theme, the default of the icon is hidden,
    so this call is unnecessary.
    
    Test Plan:
    Evas_Object *bt;
    clock_t start, finish;
    start = clock();
    bt = elm_button_add(win);
    finish = clock();
    printf("duration : %f\n", (double)(finish-start)/CLOCKS_PER_SEC);
    
    Evas_Object *bt;
    clock_t start, finish;
    double sum= 0 ;
    double avg = 0;
    double cnt = 1000;
    
    for(int i =0 ; i<(int)cnt; i++)
      {
         start = clock();
         bt = elm_button_add(win);
         finish = clock();
         sum += (double)(finish-start)/CLOCKS_PER_SEC;
      }
    avg = sum / cnt ;
    printf("button avg : %f %f\n",avg, sum);
    
    [before]
    button avg : 0.000215
    
    [after]
    button avg : 0.000138
    
    Reviewers: Hermet, YOhoho, Jaehyun_Cho, zmike
    
    Reviewed By: zmike
    
    Subscribers: zmike, cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11810
---
 src/lib/elementary/efl_ui_button.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elementary/efl_ui_button.c 
b/src/lib/elementary/efl_ui_button.c
index 7c0a13e478..8f8e8a664f 100644
--- a/src/lib/elementary/efl_ui_button.c
+++ b/src/lib/elementary/efl_ui_button.c
@@ -422,7 +422,7 @@ _efl_ui_button_legacy_efl_ui_widget_theme_apply(Eo *obj, 
void *_pd EINA_UNUSED)
 
    int_ret = efl_ui_widget_theme_apply(efl_super(obj, 
EFL_UI_BUTTON_LEGACY_CLASS));
    if (int_ret == EFL_UI_THEME_APPLY_ERROR_GENERIC) return int_ret;
-   _icon_signal_emit(obj);
+   if (efl_finalized_get(obj)) _icon_signal_emit(obj);
 
    return int_ret;
 }

-- 


Reply via email to