diff --git a/src/libsysprof/sysprof-document.c b/src/libsysprof/sysprof-document.c index e8cd7437..23937052 100644 --- a/src/libsysprof/sysprof-document.c +++ b/src/libsysprof/sysprof-document.c @@ -77,20 +77,21 @@ struct _SysprofDocument SysprofStrings *strings; EggBitset *allocations; + EggBitset *ctrdefs; + EggBitset *ctrsets; + EggBitset *dbus_messages; EggBitset *file_chunks; - EggBitset *samples; - EggBitset *samples_with_context_switch; - EggBitset *traceables; - EggBitset *processes; + EggBitset *jitmaps; EggBitset *logs; + EggBitset *marks; + EggBitset *metadata; EggBitset *mmaps; EggBitset *overlays; EggBitset *pids; - EggBitset *jitmaps; - EggBitset *ctrdefs; - EggBitset *ctrsets; - EggBitset *marks; - EggBitset *metadata; + EggBitset *processes; + EggBitset *samples; + EggBitset *samples_with_context_switch; + EggBitset *traceables; GHashTable *files_first_position; GHashTable *pid_to_process_info; @@ -116,6 +117,7 @@ enum { PROP_ALLOCATIONS, PROP_COUNTERS, PROP_CPU_INFO, + PROP_DBUS_MESSAGES, PROP_FILES, PROP_LOGS, PROP_MARKS, @@ -328,6 +330,7 @@ sysprof_document_finalize (GObject *object) g_clear_pointer (&self->allocations, egg_bitset_unref); g_clear_pointer (&self->ctrdefs, egg_bitset_unref); g_clear_pointer (&self->ctrsets, egg_bitset_unref); + g_clear_pointer (&self->dbus_messages, egg_bitset_unref); g_clear_pointer (&self->marks, egg_bitset_unref); g_clear_pointer (&self->metadata, egg_bitset_unref); g_clear_pointer (&self->file_chunks, egg_bitset_unref); @@ -378,6 +381,10 @@ sysprof_document_get_property (GObject *object, g_value_take_object (value, sysprof_document_list_cpu_info (self)); break; + case PROP_DBUS_MESSAGES: + g_value_take_object (value, sysprof_document_list_dbus_messages (self)); + break; + case PROP_FILES: g_value_take_object (value, sysprof_document_list_files (self)); break; @@ -442,6 +449,11 @@ sysprof_document_class_init (SysprofDocumentClass *klass) G_TYPE_LIST_MODEL, (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + properties [PROP_DBUS_MESSAGES] = + g_param_spec_object ("dbus-messages", NULL, NULL, + G_TYPE_LIST_MODEL, + (G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); + properties [PROP_FILES] = g_param_spec_object ("files", NULL, NULL, G_TYPE_LIST_MODEL, @@ -506,6 +518,7 @@ sysprof_document_init (SysprofDocument *self) self->allocations = egg_bitset_new_empty (); self->ctrdefs = egg_bitset_new_empty (); self->ctrsets = egg_bitset_new_empty (); + self->dbus_messages = egg_bitset_new_empty (); self->marks = egg_bitset_new_empty (); self->metadata = egg_bitset_new_empty (); self->file_chunks = egg_bitset_new_empty (); @@ -1232,6 +1245,10 @@ sysprof_document_load_worker (GTask *task, egg_bitset_add (self->ctrsets, f); break; + case SYSPROF_CAPTURE_FRAME_DBUS_MESSAGE: + egg_bitset_add (self->dbus_messages, f); + break; + case SYSPROF_CAPTURE_FRAME_MARK: egg_bitset_add (self->marks, f); break; @@ -2536,3 +2553,19 @@ sysprof_document_lookup_process (SysprofDocument *self, return NULL; } + +/** + * sysprof_document_list_dbus_messages: + * @self: a #SysprofDocument + * + * Gets a #GListModel of #SysprofDocumentDBusMessage. + * + * Returns: (transfer full): a #GListModel + */ +GListModel * +sysprof_document_list_dbus_messages (SysprofDocument *self) +{ + g_return_val_if_fail (SYSPROF_IS_DOCUMENT (self), NULL); + + return _sysprof_document_bitset_index_new (G_LIST_MODEL (self), self->dbus_messages); +} diff --git a/src/libsysprof/sysprof-document.h b/src/libsysprof/sysprof-document.h index fa72d807..665a9d3a 100644 --- a/src/libsysprof/sysprof-document.h +++ b/src/libsysprof/sysprof-document.h @@ -59,6 +59,8 @@ GListModel *sysprof_document_list_traceables (Sy SYSPROF_AVAILABLE_IN_ALL GListModel *sysprof_document_list_allocations (SysprofDocument *self); SYSPROF_AVAILABLE_IN_ALL +GListModel *sysprof_document_list_dbus_messages (SysprofDocument *self); +SYSPROF_AVAILABLE_IN_ALL GListModel *sysprof_document_list_logs (SysprofDocument *self); SYSPROF_AVAILABLE_IN_ALL GListModel *sysprof_document_list_metadata (SysprofDocument *self);