[sysprof/wip/chergert/sysprof-3] wire up marks reader
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sysprof/wip/chergert/sysprof-3] wire up marks reader
- Date: Mon, 13 May 2019 01:36:52 +0000 (UTC)
commit b5c4b38198f6e1a9d563da21e303ae8e992d3945
Author: Christian Hergert <chergert redhat com>
Date: Sun May 12 18:35:22 2019 -0700
wire up marks reader
src/libsysprof-ui/meson.build | 3 ++-
src/libsysprof-ui/sysprof-marks-model.c | 8 ++++++--
src/libsysprof-ui/sysprof-marks-view.c | 25 +++++++++++++++++++++++++
src/libsysprof-ui/sysprof-ui.h | 1 +
src/sysprof/sysprof-window.c | 3 +++
5 files changed, 37 insertions(+), 3 deletions(-)
---
diff --git a/src/libsysprof-ui/meson.build b/src/libsysprof-ui/meson.build
index 7066ec4..63247f7 100644
--- a/src/libsysprof-ui/meson.build
+++ b/src/libsysprof-ui/meson.build
@@ -5,6 +5,7 @@ libsysprof_ui_public_sources = [
'sysprof-empty-state-view.c',
'sysprof-failed-state-view.c',
'sysprof-line-visualizer-row.c',
+ 'sysprof-marks-model.c',
'sysprof-marks-view.c',
'sysprof-mark-visualizer-row.c',
'sysprof-model-filter.c',
@@ -23,7 +24,6 @@ libsysprof_ui_private_sources = [
'pointcache.c',
'rectangles.c',
'sysprof-cell-renderer-percent.c',
- 'sysprof-marks-model.c',
'sysprof-theme-manager.c',
'../stackstash.c',
]
@@ -35,6 +35,7 @@ libsysprof_ui_public_headers = [
'sysprof-empty-state-view.h',
'sysprof-failed-state-view.h',
'sysprof-line-visualizer-row.h',
+ 'sysprof-marks-model.h',
'sysprof-marks-view.h',
'sysprof-mark-visualizer-row.h',
'sysprof-model-filter.h',
diff --git a/src/libsysprof-ui/sysprof-marks-model.c b/src/libsysprof-ui/sysprof-marks-model.c
index 85323eb..b5af990 100644
--- a/src/libsysprof-ui/sysprof-marks-model.c
+++ b/src/libsysprof-ui/sysprof-marks-model.c
@@ -33,8 +33,10 @@ struct _SysprofMarksModel
typedef struct
{
- gint64 begin_time;
- gint64 end_time;
+ gint64 begin_time;
+ gint64 end_time;
+ const gchar *group;
+ const gchar *name;
} Item;
static void
@@ -84,6 +86,8 @@ cursor_foreach_cb (const SysprofCaptureFrame *frame,
item.begin_time = frame->time;
item.end_time = item.begin_time + mark->duration;
+ item.group = g_string_chunk_insert_const (self->chunks, mark->group);
+ item.name = g_string_chunk_insert_const (self->chunks, mark->name);
g_array_append_val (self->items, item);
diff --git a/src/libsysprof-ui/sysprof-marks-view.c b/src/libsysprof-ui/sysprof-marks-view.c
index 5a2afa1..93b005a 100644
--- a/src/libsysprof-ui/sysprof-marks-view.c
+++ b/src/libsysprof-ui/sysprof-marks-view.c
@@ -22,6 +22,7 @@
#include "config.h"
+#include "sysprof-marks-model.h"
#include "sysprof-marks-view.h"
typedef struct
@@ -52,9 +53,33 @@ sysprof_marks_view_new (void)
return g_object_new (SYSPROF_TYPE_MARKS_VIEW, NULL);
}
+static void
+new_marks_model_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ g_autoptr(SysprofMarksView) self = user_data;
+ SysprofMarksViewPrivate *priv = sysprof_marks_view_get_instance_private (self);
+ g_autoptr(SysprofMarksModel) model = NULL;
+ g_autoptr(GError) error = NULL;
+
+ g_assert (SYSPROF_IS_MARKS_VIEW (self));
+ g_assert (G_IS_ASYNC_RESULT (result));
+
+ if (!(model = sysprof_marks_model_new_finish (result, &error)))
+ g_warning ("Failed to load marks model: %s", error->message);
+ else
+ gtk_tree_view_set_model (priv->tree_view, GTK_TREE_MODEL (model));
+}
+
void
sysprof_marks_view_set_reader (SysprofMarksView *self,
SysprofCaptureReader *reader)
{
g_return_if_fail (SYSPROF_IS_MARKS_VIEW (self));
+
+ sysprof_marks_model_new_async (reader,
+ NULL,
+ new_marks_model_cb,
+ g_object_ref (self));
}
diff --git a/src/libsysprof-ui/sysprof-ui.h b/src/libsysprof-ui/sysprof-ui.h
index bd5cbdc..a45d8fc 100644
--- a/src/libsysprof-ui/sysprof-ui.h
+++ b/src/libsysprof-ui/sysprof-ui.h
@@ -32,6 +32,7 @@ G_BEGIN_DECLS
# include "sysprof-empty-state-view.h"
# include "sysprof-failed-state-view.h"
# include "sysprof-line-visualizer-row.h"
+# include "sysprof-marks-model.h"
# include "sysprof-marks-view.h"
# include "sysprof-mark-visualizer-row.h"
# include "sysprof-model-filter.h"
diff --git a/src/sysprof/sysprof-window.c b/src/sysprof/sysprof-window.c
index 2955c6e..32ce154 100644
--- a/src/sysprof/sysprof-window.c
+++ b/src/sysprof/sysprof-window.c
@@ -269,6 +269,8 @@ sysprof_window_build_profile (SysprofWindow *self)
self->refilter_cancellable,
sysprof_window_build_profile_cb,
g_object_ref (self));
+
+ sysprof_marks_view_set_reader (self->marks_view, self->reader);
}
static void
@@ -835,6 +837,7 @@ sysprof_window_class_init (SysprofWindowClass *klass)
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, info_bar);
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, info_bar_label);
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, info_bar_revealer);
+ gtk_widget_class_bind_template_child (widget_class, SysprofWindow, marks_view);
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, paned);
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, profiler_menu_button);
gtk_widget_class_bind_template_child (widget_class, SysprofWindow, record_button);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]