diff --git a/scripts/pybootchartgui/pybootchartgui/draw.py b/scripts/pybootchartgui/pybootchartgui/draw.py index 16830fa456..1b872de75e 100644 --- a/scripts/pybootchartgui/pybootchartgui/draw.py +++ b/scripts/pybootchartgui/pybootchartgui/draw.py @@ -287,32 +287,33 @@ def render(ctx, res): offset = min(res.start.keys()) for s in sorted(res.start.keys()): - task = res.start[s].split(":")[1] - #print res.start[s] - #print res.processes[res.start[s]][1] - #print s - x = (s - offset) * sec_w - w = ((res.processes[res.start[s]][1] - s) * sec_w) + for val in sorted(res.start[s]): + task = val.split(":")[1] + #print val + #print res.processes[val][1] + #print s + x = (s - offset) * sec_w + w = ((res.processes[val][1] - s) * sec_w) - #print "proc at %s %s %s %s" % (x, y, w, proc_h) - col = None - if task == "do_compile": - col = TASK_COLOR_COMPILE - elif task == "do_configure": - col = TASK_COLOR_CONFIGURE - elif task == "do_install": - col = TASK_COLOR_INSTALL - elif task == "do_package": - col = TASK_COLOR_PACKAGE - elif task == "do_populate_sysroot": - col = TASK_COLOR_SYSROOT + #print "proc at %s %s %s %s" % (x, y, w, proc_h) + col = None + if task == "do_compile": + col = TASK_COLOR_COMPILE + elif task == "do_configure": + col = TASK_COLOR_CONFIGURE + elif task == "do_install": + col = TASK_COLOR_INSTALL + elif task == "do_package": + col = TASK_COLOR_PACKAGE + elif task == "do_populate_sysroot": + col = TASK_COLOR_SYSROOT - draw_rect(ctx, PROC_BORDER_COLOR, (x, y, w, proc_h)) - if col: - draw_fill_rect(ctx, col, (x, y, w, proc_h)) + draw_rect(ctx, PROC_BORDER_COLOR, (x, y, w, proc_h)) + if col: + draw_fill_rect(ctx, col, (x, y, w, proc_h)) - draw_label_in_box(ctx, PROC_TEXT_COLOR, res.start[s], x, y + proc_h - 4, w, proc_h) - y = y + proc_h + draw_label_in_box(ctx, PROC_TEXT_COLOR, val, x, y + proc_h - 4, w, proc_h) + y = y + proc_h # draw process boxes #draw_process_bar_chart(ctx, proc_tree, curr_y + bar_h, w, h) diff --git a/scripts/pybootchartgui/pybootchartgui/parsing.py b/scripts/pybootchartgui/pybootchartgui/parsing.py index c64eba0a4d..a0f6e8e0eb 100644 --- a/scripts/pybootchartgui/pybootchartgui/parsing.py +++ b/scripts/pybootchartgui/pybootchartgui/parsing.py @@ -184,9 +184,16 @@ def _do_parse(state, filename, file): elif line.startswith("Ended:"): end = int(float(line.split()[-1])) if start and end and (end - start) > 8: + k = pn + ":" + task state.processes[pn + ":" + task] = [start, end] - state.start[start] = pn + ":" + task - state.end[end] = pn + ":" + task + if start not in state.start: + state.start[start] = [] + if k not in state.start[start]: + state.start[start].append(pn + ":" + task) + if end not in state.end: + state.end[end] = [] + if k not in state.end[end]: + state.end[end].append(pn + ":" + task) return state def parse_file(state, filename): @@ -248,12 +255,18 @@ def split_res(res, n): #state.processes[pn + ":" + task] = [start, end] #state.start[start] = pn + ":" + task #state.end[end] = pn + ":" + task - p = res.start[s_list[i]] - s = s_list[i] - e = res.processes[p][1] - state.processes[p] = [s, e] - state.start[s] = p - state.end[e] = p + for p in res.start[s_list[i]]: + s = s_list[i] + e = res.processes[p][1] + state.processes[p] = [s, e] + if s not in state.start: + state.start[s] = [] + if p not in state.start[s]: + state.start[s].append(p) + if e not in state.end: + state.end[e] = [] + if p not in state.end[e]: + state.end[e].append(p) start = end end = end + frag_size if end > len(s_list):