}
last_event_was_forced_leader = (force_grouped_leader == pos);
}
+
+ /*
+ * Make sure the first wildcard match is the earliest entry in the list.
+ * Since list_sort might have reordered the aliases, the original leader
+ * might not be at the head of the list anymore. We find the first
+ * alias in the sorted list and make it the new leader, and redirect
+ * all other aliases to it.
+ */
+ list_for_each_entry(pos, list, core.node) {
+ struct evsel *orig_leader = pos->first_wildcard_match;
+
+ if (!orig_leader)
+ continue;
+
+ if (orig_leader->first_wildcard_match) {
+ /* Original leader was redirected to a new leader */
+ pos->first_wildcard_match = orig_leader->first_wildcard_match;
+ } else if (pos->core.idx < orig_leader->core.idx) {
+ /*
+ * We are earlier than the original leader in sorted order,
+ * and no earlier alias has claimed leadership yet.
+ */
+ orig_leader->first_wildcard_match = pos;
+ pos->first_wildcard_match = NULL;
+ }
+ }
+
list_for_each_entry(pos, list, core.node) {
struct evsel *pos_leader = evsel__leader(pos);