[gtk+] inspector: Add a GraphData object for recording data
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] inspector: Add a GraphData object for recording data
- Date: Tue, 14 Oct 2014 12:18:53 +0000 (UTC)
commit 0a6755b57c29266472bcc0774adca0c8970e55bd
Author: Benjamin Otte <otte redhat com>
Date: Tue Oct 14 12:59:18 2014 +0200
inspector: Add a GraphData object for recording data
This way we can keep more data than just the 2 last values.
gtk/inspector/Makefile.am | 2 ++
gtk/inspector/init.c | 2 ++
gtk/inspector/statistics.c | 42 ++++++++++++++++++++++++++++--------------
gtk/inspector/statistics.ui | 2 ++
4 files changed, 34 insertions(+), 14 deletions(-)
---
diff --git a/gtk/inspector/Makefile.am b/gtk/inspector/Makefile.am
index bceeed1..da016f4 100644
--- a/gtk/inspector/Makefile.am
+++ b/gtk/inspector/Makefile.am
@@ -29,6 +29,8 @@ libgtkinspector_la_SOURCES = \
general.c \
gestures.h \
gestures.c \
+ graphdata.h \
+ graphdata.c \
init.h \
init.c \
inspect-button.c \
diff --git a/gtk/inspector/init.c b/gtk/inspector/init.c
index 1daa6ec..3e523b3 100644
--- a/gtk/inspector/init.c
+++ b/gtk/inspector/init.c
@@ -30,6 +30,7 @@
#include "data-list.h"
#include "general.h"
#include "gestures.h"
+#include "graphdata.h"
#include "menu.h"
#include "misc-info.h"
#include "object-hierarchy.h"
@@ -50,6 +51,7 @@ gtk_inspector_init (void)
{
gtk_inspector_register_resource ();
+ g_type_ensure (GTK_TYPE_GRAPH_DATA);
g_type_ensure (GTK_TYPE_INSPECTOR_ACTIONS);
g_type_ensure (GTK_TYPE_INSPECTOR_CLASSES_LIST);
g_type_ensure (GTK_TYPE_INSPECTOR_CSS_EDITOR);
diff --git a/gtk/inspector/statistics.c b/gtk/inspector/statistics.c
index f95479e..628c644 100644
--- a/gtk/inspector/statistics.c
+++ b/gtk/inspector/statistics.c
@@ -20,6 +20,7 @@
#include "statistics.h"
+#include "graphdata.h"
#include "gtkstack.h"
#include "gtktreeview.h"
#include "gtkcellrenderertext.h"
@@ -46,10 +47,8 @@ struct _GtkInspectorStatisticsPrivate
typedef struct {
GType type;
GtkTreeIter treeiter;
- gint self1;
- gint cumulative1;
- gint self2;
- gint cumulative2;
+ GtkGraphData *self;
+ GtkGraphData *cumulative;
} TypeData;
enum
@@ -59,7 +58,9 @@ enum
COLUMN_SELF1,
COLUMN_CUMULATIVE1,
COLUMN_SELF2,
- COLUMN_CUMULATIVE2
+ COLUMN_CUMULATIVE2,
+ COLUMN_SELF_DATA,
+ COLUMN_CUMULATIVE_DATA
};
G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorStatistics, gtk_inspector_statistics, GTK_TYPE_BOX)
@@ -85,10 +86,14 @@ add_type_count (GtkInspectorStatistics *sl, GType type)
{
data = g_new0 (TypeData, 1);
data->type = type;
+ data->self = gtk_graph_data_new (60);
+ data->cumulative = gtk_graph_data_new (60);
gtk_list_store_append (GTK_LIST_STORE (sl->priv->model), &data->treeiter);
gtk_list_store_set (GTK_LIST_STORE (sl->priv->model), &data->treeiter,
COLUMN_TYPE, data->type,
COLUMN_TYPE_NAME, g_type_name (data->type),
+ COLUMN_SELF_DATA, data->self,
+ COLUMN_CUMULATIVE_DATA, data->cumulative,
-1);
g_hash_table_insert (sl->priv->counts, GSIZE_TO_POINTER (type), data);
}
@@ -96,16 +101,14 @@ add_type_count (GtkInspectorStatistics *sl, GType type)
self = g_type_get_instance_count (type);
cumulative += self;
- data->self1 = data->self2;
- data->cumulative1 = data->cumulative2;
- data->self2 = self;
- data->cumulative2 = cumulative;
+ gtk_graph_data_prepend_value (data->self, self);
+ gtk_graph_data_prepend_value (data->cumulative, cumulative);
gtk_list_store_set (GTK_LIST_STORE (sl->priv->model), &data->treeiter,
- COLUMN_SELF1, data->self1,
- COLUMN_CUMULATIVE1, data->cumulative1,
- COLUMN_SELF2, data->self2,
- COLUMN_CUMULATIVE2, data->cumulative2,
+ COLUMN_SELF1, (int) gtk_graph_data_get_value (data->self, 1),
+ COLUMN_CUMULATIVE1, (int) gtk_graph_data_get_value (data->cumulative, 1),
+ COLUMN_SELF2, (int) gtk_graph_data_get_value (data->self, 0),
+ COLUMN_CUMULATIVE2, (int) gtk_graph_data_get_value (data->cumulative, 0),
-1);
return cumulative;
}
@@ -203,6 +206,17 @@ cell_data_delta (GtkCellLayout *layout,
}
static void
+type_data_free (gpointer data)
+{
+ TypeData *type_data = data;
+
+ g_object_unref (type_data->self);
+ g_object_unref (type_data->cumulative);
+
+ g_free (type_data);
+}
+
+static void
gtk_inspector_statistics_init (GtkInspectorStatistics *sl)
{
sl->priv = gtk_inspector_statistics_get_instance_private (sl);
@@ -223,7 +237,7 @@ gtk_inspector_statistics_init (GtkInspectorStatistics *sl)
sl->priv->renderer_cumulative2,
cell_data_delta,
GINT_TO_POINTER (COLUMN_CUMULATIVE2), NULL);
- sl->priv->counts = g_hash_table_new_full (NULL, NULL, NULL, g_free);
+ sl->priv->counts = g_hash_table_new_full (NULL, NULL, NULL, type_data_free);
if (has_instance_counts ())
update_type_counts (sl);
diff --git a/gtk/inspector/statistics.ui b/gtk/inspector/statistics.ui
index 8a97856..04148cd 100644
--- a/gtk/inspector/statistics.ui
+++ b/gtk/inspector/statistics.ui
@@ -8,6 +8,8 @@
<column type="gint"/>
<column type="gint"/>
<column type="gint"/>
+ <column type="GtkGraphData"/>
+ <column type="GtkGraphData"/>
</columns>
</object>
<template class="GtkInspectorStatistics" parent="GtkBox">
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]