From 23dacf954dd8483bfc2bd867355a7e5e4abec680 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 25 Mar 2025 17:17:35 -0300 Subject: [PATCH] sysprof: Add sysprof_session_filter_by_mark This will be used to set a global marks filter in the session filter. --- src/sysprof/sysprof-session.c | 19 +++++++++++++++++++ src/sysprof/sysprof-session.h | 2 ++ 2 files changed, 21 insertions(+) diff --git a/src/sysprof/sysprof-session.c b/src/sysprof/sysprof-session.c index 4a571a12..ee0fa7a9 100644 --- a/src/sysprof/sysprof-session.c +++ b/src/sysprof/sysprof-session.c @@ -22,6 +22,7 @@ #include +#include "sysprof-mark-filter.h" #include "sysprof-session-private.h" #include "sysprof-value-axis.h" @@ -488,6 +489,24 @@ sysprof_session_zoom_to_selection (SysprofSession *self) sysprof_session_update_axis (self); } +void +sysprof_session_filter_by_mark (SysprofSession *self, + SysprofMarkCatalog *catalog) +{ + g_return_if_fail (SYSPROF_IS_SESSION (self)); + g_return_if_fail (catalog == NULL || SYSPROF_IS_MARK_CATALOG (catalog)); + + while (g_list_model_get_n_items (G_LIST_MODEL (self->filter)) > 0) + gtk_multi_filter_remove (GTK_MULTI_FILTER (self->filter), 0); + + if (catalog) + { + g_autoptr(SysprofMarkFilter) mark_filter = sysprof_mark_filter_new (self->document, catalog); + + gtk_multi_filter_append (GTK_MULTI_FILTER (self->filter), GTK_FILTER (g_steal_pointer (&mark_filter))); + } +} + static char * get_time_str (gint64 o) { diff --git a/src/sysprof/sysprof-session.h b/src/sysprof/sysprof-session.h index 0e7417dd..c1a4f541 100644 --- a/src/sysprof/sysprof-session.h +++ b/src/sysprof/sysprof-session.h @@ -44,5 +44,7 @@ SysprofAxis *sysprof_session_get_selected_time_axis (SysprofSession void sysprof_session_select_time (SysprofSession *self, const SysprofTimeSpan *time_span); void sysprof_session_zoom_to_selection (SysprofSession *self); +void sysprof_session_filter_by_mark (SysprofSession *self, + SysprofMarkCatalog *catalog); G_END_DECLS