diff options
-rw-r--r-- | src/cpu/abstract_cpu.cpp | 6 | ||||
-rw-r--r-- | src/display.cpp | 107 | ||||
-rw-r--r-- | src/display.h | 13 | ||||
-rw-r--r-- | src/main.cpp | 16 |
4 files changed, 101 insertions, 41 deletions
diff --git a/src/cpu/abstract_cpu.cpp b/src/cpu/abstract_cpu.cpp index 8b4c650..ebdc510 100644 --- a/src/cpu/abstract_cpu.cpp +++ b/src/cpu/abstract_cpu.cpp @@ -421,12 +421,6 @@ void abstract_cpu::validate(void) for (i = 0; i < children.size(); i++) { if (children[i]) { - if (my_time != children[i]->total_pstate_time()) - printf("My (%i) time %llu is not the same as child (%i) time %llu\n", - first_cpu, - (unsigned long long)my_time, - children[i]->number, - (unsigned long long)children[i]->total_pstate_time()); children[i]->validate(); } } diff --git a/src/display.cpp b/src/display.cpp index f48b53f..c76ba27 100644 --- a/src/display.cpp +++ b/src/display.cpp @@ -95,7 +95,7 @@ static int current_tab; void show_tab(unsigned int tab) { - WINDOW *win; + class tab_window *win; unsigned int i; int tab_pos = 17; const char *c; @@ -145,11 +145,11 @@ void show_tab(unsigned int tab) wrefresh(tab_bar); wrefresh(bottom_line); - win = get_ncurses_win(tab_names[tab]); + win = tab_windows[tab_names[tab]]; if (!win) return; - prefresh(win, 0, 0, 1, 0, LINES - 3, COLS - 1); + prefresh(win->win, win->ypad_pos, win->xpad_pos, 1, 0, LINES - 3, COLS - 1); } WINDOW *get_ncurses_win(const char *name) @@ -185,42 +185,41 @@ WINDOW *get_ncurses_win(const string &name) return get_ncurses_win(name.c_str()); } - -void show_next_tab(void) +void show_prev_tab(void) { - class tab_window *w; + class tab_window *w; - if (!display) - return; + if (!display) + return; + w = tab_windows[tab_names[current_tab]]; + if (w) + w->hide(); - w = tab_windows[tab_names[current_tab]]; - if (w) - w->hide(); + current_tab --; + if (current_tab < 0) + current_tab = tab_names.size() - 1; - current_tab ++; - if (current_tab >= (int)tab_names.size()) - current_tab = 0; - - w = tab_windows[tab_names[current_tab]]; - if (w) - w->expose(); + w = tab_windows[tab_names[current_tab]]; + if (w) + w->expose(); - show_tab(current_tab); + show_tab(current_tab); } -void show_prev_tab(void) +void show_next_tab(void) { class tab_window *w; if (!display) return; + w = tab_windows[tab_names[current_tab]]; if (w) w->hide(); - current_tab --; - if (current_tab < 0) - current_tab = tab_names.size() - 1; + current_tab ++; + if (current_tab >= (int)tab_names.size()) + current_tab = 0; w = tab_windows[tab_names[current_tab]]; if (w) @@ -241,8 +240,20 @@ void cursor_down(void) class tab_window *w; w = tab_windows[tab_names[current_tab]]; - if (w) - w->cursor_down(); + if (w) { + if (w->ypad_pos < 1000) { + if (tab_names[current_tab] == "Tunables") { + if ((w->cursor_pos + 7) >= LINES) { + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } + w->cursor_down(); + } else { + prefresh(w->win, ++w->ypad_pos, w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } + } + } show_cur_tab(); } @@ -253,12 +264,50 @@ void cursor_up(void) w = tab_windows[tab_names[current_tab]]; - if (w) - w->cursor_up(); - + if (w) { + w->cursor_up(); + if(w->ypad_pos > 0) { + if (tab_names[current_tab] == "Tunables") { + prefresh(w->win, --w->ypad_pos, w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } else { + prefresh(w->win, --w->ypad_pos, w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } + } + } + show_cur_tab(); } +void cursor_left(void) +{ + class tab_window *w; + + w = tab_windows[tab_names[current_tab]]; + + if (w) { + if (w->xpad_pos > 0) { + prefresh(w->win, w->ypad_pos,--w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } + } +} + +void cursor_right(void) +{ + class tab_window *w; + + w = tab_windows[tab_names[current_tab]]; + + if (w) { + if (w->xpad_pos < 1000) { + prefresh(w->win, w->ypad_pos, ++w->xpad_pos, + 1, 0, LINES - 3, COLS - 1); + } + } +} + void cursor_enter(void) { class tab_window *w; @@ -279,6 +328,8 @@ void window_refresh() w = tab_windows[tab_names[current_tab]]; if (w) { + w->ypad_pos = 0; + w->xpad_pos = 0; w->window_refresh(); w->repaint(); } diff --git a/src/display.h b/src/display.h index 33aaae1..b450f8b 100644 --- a/src/display.h +++ b/src/display.h @@ -41,6 +41,8 @@ extern void show_prev_tab(void); extern void show_cur_tab(void); extern void cursor_up(void); extern void cursor_down(void); +extern void cursor_right(void); +extern void cursor_left(void); extern void cursor_enter(void); extern void window_refresh(void); @@ -48,10 +50,17 @@ class tab_window { public: int cursor_pos; int cursor_max; + short int xpad_pos, ypad_pos; WINDOW *win; - virtual void cursor_down(void) { if (cursor_pos < cursor_max ) cursor_pos++; repaint(); } ; - virtual void cursor_up(void) { if (cursor_pos > 0) cursor_pos--; repaint(); }; + virtual void cursor_down(void) { + if (cursor_pos < cursor_max ) cursor_pos++; repaint(); + } ; + virtual void cursor_up(void) { + if (cursor_pos > 0) cursor_pos--; repaint(); + }; + virtual void cursor_left(void) { }; + virtual void cursor_right(void) { }; virtual void cursor_enter(void) { }; virtual void window_refresh() { }; diff --git a/src/main.cpp b/src/main.cpp index cf47b4e..1815075 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -135,22 +135,28 @@ static void do_sleep(int seconds) halfdelay(delta * 10); c = getch(); - switch (c) { - case KEY_NPAGE: + case 353: + show_prev_tab(); + break; + case 9: + show_next_tab(); + break; case KEY_RIGHT: - show_next_tab(); + cursor_right(); break; - case KEY_PPAGE: case KEY_LEFT: - show_prev_tab(); + cursor_left(); break; + case KEY_NPAGE: case KEY_DOWN: cursor_down(); break; + case KEY_PPAGE: case KEY_UP: cursor_up(); break; + case 32: case 10: cursor_enter(); break; |