No need to call wclear (werase) each time cursor changes position. In fact the 
only time we
should call it - is when list of tunables changed. Currently this only happens 
in
tuning_window::window_refresh() (on demand refresh patch should be applied).
    
werase is pretty heavy one:
--------------------------------------------------------------------------------
           Ir      I1mr    ILmr            Dr       D1mr      DLmr            
Dw        D1mw        DLmw
--------------------------------------------------------------------------------
6,063,980,625 4,576,152 528,296 1,171,079,184 24,168,794 9,215,210 
1,671,009,969 163,157,846 156,567,867  PROGRAM TOTALS
 
--------------------------------------------------------------------------------
           Ir      I1mr    ILmr          Dr      D1mr      DLmr            Dw   
     D1mw        DLmw  file:function
--------------------------------------------------------------------------------
2,473,412,796     1,614   1,614   2,059,521   305,390   288,823 1,233,825,699 
154,029,227 149,960,220  ???:werase
1,275,578,408 1,729,350 186,344 444,430,171 9,904,892 4,744,532   105,767,262   
1,303,516   1,116,551  ???:???
  173,032,557    22,395     812  24,595,485     9,095       421       857,262   
    1,957         391  ???:__strcat_chk
  171,612,271     6,320   6,272  76,126,117 3,591,263 1,106,758    14,412,255   
    6,389           0  ???:pnoutrefresh
  147,832,538        20      14  63,356,802 6,003,780 1,538,504    10,559,467   
        0           0  [...] event_sort_function(void*, void*)
[..]

    
Introduce static bool flag to mark the need of werase call in 
__tuning_update_display.

Signed-off-by: Sergey Senozhatsky <sergey.senozhat...@gmail.com>

---

diff --git a/tuning/tuning.cpp b/tuning/tuning.cpp
index a87a746..d4305f5 100644
--- a/tuning/tuning.cpp
+++ b/tuning/tuning.cpp
@@ -43,7 +43,7 @@
 #include "../lib.h"
 
 static void sort_tunables(void);
-
+static bool should_clear = FALSE;
 
 class tuning_window: public tab_window {
 public:
@@ -90,13 +90,15 @@ static void __tuning_update_display(int cursor_pos)
        WINDOW *win;
        unsigned int i;
 
-
        win = get_ncurses_win("Tunables");
 
        if (!win)
                return;
 
-       wclear(win);
+       if (should_clear) {
+               should_clear = FALSE;
+               wclear(win);
+       }
 
        wmove(win, 2,0);
 
@@ -163,6 +165,7 @@ void tuning_window::window_refresh()
        }
 
        all_untunables.clear();
+       should_clear = TRUE;
 
        __init_tunables();
 }

_______________________________________________
Discuss mailing list
Discuss@lesswatts.org
http://lists.lesswatts.org/listinfo/discuss

Reply via email to