aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cpu/abstract_cpu.cpp6
-rw-r--r--src/display.cpp107
-rw-r--r--src/display.h13
-rw-r--r--src/main.cpp16
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;