cleanup selected process file list (scrollable now)
[lttngtop.git] / src / cursesdisplay.c
index 16e378b40cdcce0d1c911b95819754d5501ab3ae..b9429db70708bfaa4e30382f4206fbac9b3bb9c1 100644 (file)
@@ -418,6 +418,7 @@ void update_cputop_display()
                        nblinedisplayed < max_center_lines; i++) {
                tmp = g_ptr_array_index(data->process_table, i);
 
+               /* FIXME : random segfault here */
                if (process_selected(tmp)) {
                        wattron(center, COLOR_PAIR(6));
                        mvwhline(center, current_line + header_offset, 1, ' ', COLS-3);
@@ -490,23 +491,25 @@ void update_process_details()
 {
        unsigned long elapsed;
        double maxcputime;
-       struct processtop *tmp = find_process_tid(data,
-                       selected_process->tid,
-                       selected_process->comm);
+       struct processtop *tmp;
        struct files *file_tmp;
        int i, j = 0;
        char unit[4];
+       char filename_buf[COLS];
 
        set_window_title(center, "Process details");
 
 
+       tmp = find_process_tid(data,
+                       selected_process->tid,
+                       selected_process->comm);
        elapsed = data->end - data->start;
        maxcputime = elapsed * data->cpu_table->len / 100.0;
 
        print_key_title("Name", 1);
-       wprintw(center, "%s", tmp->comm);
+       wprintw(center, "%s", selected_process->comm);
        print_key_title("TID", 2);
-       wprintw(center, "%d", tmp->tid);
+       wprintw(center, "%d", selected_process->tid);
        if (!tmp) {
                print_key_title("Does not exit at this time", 3);
                return;
@@ -534,7 +537,8 @@ void update_process_details()
        mvwprintw(center, 8, 24, "FILENAME");
        wattroff(center, A_BOLD);
 
-       for (i = 0; i < tmp->process_files_table->len; i++) {
+       for (i = selected_line; i < tmp->process_files_table->len &&
+                       i < (selected_line + max_center_lines - 7); i++) {
                file_tmp = get_file(tmp, i);
                if (file_tmp != NULL) {
                        mvwprintw(center, 9 + j, 1, "%d", i);
@@ -542,7 +546,8 @@ void update_process_details()
                        mvwprintw(center, 9 + j, 10, "%s", unit);
                        scale_unit(file_tmp->write, unit);
                        mvwprintw(center, 9 + j, 17, "%s", unit);
-                       mvwprintw(center, 9 + j, 24, "%s", file_tmp->name);
+                       snprintf(filename_buf, COLS - 25, "%s", file_tmp->name);
+                       mvwprintw(center, 9 + j, 24, "%s", filename_buf);
                        j++;
                }
        }
This page took 0.024503 seconds and 4 git commands to generate.