|
@@ -501,8 +501,8 @@ static int hierarchy_set_folding(struct hist_browser *hb, struct hist_entry *he,
|
|
|
return n;
|
|
return n;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-static void hist_entry__set_folding(struct hist_entry *he,
|
|
|
|
|
- struct hist_browser *hb, bool unfold)
|
|
|
|
|
|
|
+static void __hist_entry__set_folding(struct hist_entry *he,
|
|
|
|
|
+ struct hist_browser *hb, bool unfold)
|
|
|
{
|
|
{
|
|
|
hist_entry__init_have_children(he);
|
|
hist_entry__init_have_children(he);
|
|
|
he->unfolded = unfold ? he->has_children : false;
|
|
he->unfolded = unfold ? he->has_children : false;
|
|
@@ -520,12 +520,34 @@ static void hist_entry__set_folding(struct hist_entry *he,
|
|
|
he->nr_rows = 0;
|
|
he->nr_rows = 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+static void hist_entry__set_folding(struct hist_entry *he,
|
|
|
|
|
+ struct hist_browser *browser, bool unfold)
|
|
|
|
|
+{
|
|
|
|
|
+ double percent;
|
|
|
|
|
+
|
|
|
|
|
+ percent = hist_entry__get_percent_limit(he);
|
|
|
|
|
+ if (he->filtered || percent < browser->min_pcnt)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ __hist_entry__set_folding(he, browser, unfold);
|
|
|
|
|
+
|
|
|
|
|
+ if (!he->depth || unfold)
|
|
|
|
|
+ browser->nr_hierarchy_entries++;
|
|
|
|
|
+ if (he->leaf)
|
|
|
|
|
+ browser->nr_callchain_rows += he->nr_rows;
|
|
|
|
|
+ else if (unfold && !hist_entry__has_hierarchy_children(he, browser->min_pcnt)) {
|
|
|
|
|
+ browser->nr_hierarchy_entries++;
|
|
|
|
|
+ he->has_no_entry = true;
|
|
|
|
|
+ he->nr_rows = 1;
|
|
|
|
|
+ } else
|
|
|
|
|
+ he->has_no_entry = false;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
static void
|
|
static void
|
|
|
__hist_browser__set_folding(struct hist_browser *browser, bool unfold)
|
|
__hist_browser__set_folding(struct hist_browser *browser, bool unfold)
|
|
|
{
|
|
{
|
|
|
struct rb_node *nd;
|
|
struct rb_node *nd;
|
|
|
struct hist_entry *he;
|
|
struct hist_entry *he;
|
|
|
- double percent;
|
|
|
|
|
|
|
|
|
|
nd = rb_first(&browser->hists->entries);
|
|
nd = rb_first(&browser->hists->entries);
|
|
|
while (nd) {
|
|
while (nd) {
|
|
@@ -535,21 +557,6 @@ __hist_browser__set_folding(struct hist_browser *browser, bool unfold)
|
|
|
nd = __rb_hierarchy_next(nd, HMD_FORCE_CHILD);
|
|
nd = __rb_hierarchy_next(nd, HMD_FORCE_CHILD);
|
|
|
|
|
|
|
|
hist_entry__set_folding(he, browser, unfold);
|
|
hist_entry__set_folding(he, browser, unfold);
|
|
|
-
|
|
|
|
|
- percent = hist_entry__get_percent_limit(he);
|
|
|
|
|
- if (he->filtered || percent < browser->min_pcnt)
|
|
|
|
|
- continue;
|
|
|
|
|
-
|
|
|
|
|
- if (!he->depth || unfold)
|
|
|
|
|
- browser->nr_hierarchy_entries++;
|
|
|
|
|
- if (he->leaf)
|
|
|
|
|
- browser->nr_callchain_rows += he->nr_rows;
|
|
|
|
|
- else if (unfold && !hist_entry__has_hierarchy_children(he, browser->min_pcnt)) {
|
|
|
|
|
- browser->nr_hierarchy_entries++;
|
|
|
|
|
- he->has_no_entry = true;
|
|
|
|
|
- he->nr_rows = 1;
|
|
|
|
|
- } else
|
|
|
|
|
- he->has_no_entry = false;
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|