mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
sysprof: add toggles to categorize frames
This commit is contained in:
@ -51,6 +51,7 @@ struct _SysprofCallgraphView
|
||||
guint reload_source;
|
||||
|
||||
guint bottom_up : 1;
|
||||
guint categorize_frames : 1;
|
||||
guint include_threads : 1;
|
||||
guint hide_system_libraries : 1;
|
||||
};
|
||||
|
||||
@ -32,6 +32,7 @@
|
||||
enum {
|
||||
PROP_0,
|
||||
PROP_BOTTOM_UP,
|
||||
PROP_CATEGORIZE_FRAMES,
|
||||
PROP_CALLGRAPH,
|
||||
PROP_DOCUMENT,
|
||||
PROP_HIDE_SYSTEM_LIBRARIES,
|
||||
@ -323,6 +324,10 @@ sysprof_callgraph_view_get_property (GObject *object,
|
||||
g_value_set_boolean (value, sysprof_callgraph_view_get_bottom_up (self));
|
||||
break;
|
||||
|
||||
case PROP_CATEGORIZE_FRAMES:
|
||||
g_value_set_boolean (value, sysprof_callgraph_view_get_categorize_frames (self));
|
||||
break;
|
||||
|
||||
case PROP_CALLGRAPH:
|
||||
g_value_set_object (value, sysprof_callgraph_view_get_callgraph (self));
|
||||
break;
|
||||
@ -366,6 +371,10 @@ sysprof_callgraph_view_set_property (GObject *object,
|
||||
sysprof_callgraph_view_set_bottom_up (self, g_value_get_boolean (value));
|
||||
break;
|
||||
|
||||
case PROP_CATEGORIZE_FRAMES:
|
||||
sysprof_callgraph_view_set_categorize_frames (self, g_value_get_boolean (value));
|
||||
break;
|
||||
|
||||
case PROP_DOCUMENT:
|
||||
sysprof_callgraph_view_set_document (self, g_value_get_object (value));
|
||||
break;
|
||||
@ -402,6 +411,11 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
|
||||
FALSE,
|
||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
properties[PROP_CATEGORIZE_FRAMES] =
|
||||
g_param_spec_boolean ("categorize-frames", NULL, NULL,
|
||||
TRUE,
|
||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
properties[PROP_CALLGRAPH] =
|
||||
g_param_spec_object ("callgraph", NULL, NULL,
|
||||
SYSPROF_TYPE_CALLGRAPH,
|
||||
@ -460,6 +474,8 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
|
||||
static void
|
||||
sysprof_callgraph_view_init (SysprofCallgraphView *self)
|
||||
{
|
||||
self->categorize_frames = TRUE;
|
||||
|
||||
self->traceables_signals = g_signal_group_new (G_TYPE_LIST_MODEL);
|
||||
g_signal_connect_object (self->traceables_signals,
|
||||
"bind",
|
||||
@ -583,6 +599,9 @@ sysprof_callgraph_view_reload (SysprofCallgraphView *self)
|
||||
if (self->bottom_up)
|
||||
flags |= SYSPROF_CALLGRAPH_FLAGS_BOTTOM_UP;
|
||||
|
||||
if (self->categorize_frames)
|
||||
flags |= SYSPROF_CALLGRAPH_FLAGS_CATEGORIZE_FRAMES;
|
||||
|
||||
sysprof_document_callgraph_async (self->document,
|
||||
flags,
|
||||
self->traceables,
|
||||
@ -741,6 +760,30 @@ sysprof_callgraph_view_set_bottom_up (SysprofCallgraphView *self,
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
sysprof_callgraph_view_get_categorize_frames (SysprofCallgraphView *self)
|
||||
{
|
||||
g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), FALSE);
|
||||
|
||||
return self->categorize_frames;
|
||||
}
|
||||
|
||||
void
|
||||
sysprof_callgraph_view_set_categorize_frames (SysprofCallgraphView *self,
|
||||
gboolean categorize_frames)
|
||||
{
|
||||
g_return_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self));
|
||||
|
||||
categorize_frames = !!categorize_frames;
|
||||
|
||||
if (self->categorize_frames != categorize_frames)
|
||||
{
|
||||
self->categorize_frames = categorize_frames;
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CATEGORIZE_FRAMES]);
|
||||
sysprof_callgraph_view_queue_reload (self);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
sysprof_callgraph_view_get_hide_system_libraries (SysprofCallgraphView *self)
|
||||
{
|
||||
|
||||
@ -46,6 +46,9 @@ void sysprof_callgraph_view_set_traceables (SysprofCallg
|
||||
gboolean sysprof_callgraph_view_get_bottom_up (SysprofCallgraphView *self);
|
||||
void sysprof_callgraph_view_set_bottom_up (SysprofCallgraphView *self,
|
||||
gboolean bottom_up);
|
||||
gboolean sysprof_callgraph_view_get_categorize_frames (SysprofCallgraphView *self);
|
||||
void sysprof_callgraph_view_set_categorize_frames (SysprofCallgraphView *self,
|
||||
gboolean categorize_frames);
|
||||
gboolean sysprof_callgraph_view_get_include_threads (SysprofCallgraphView *self);
|
||||
void sysprof_callgraph_view_set_include_threads (SysprofCallgraphView *self,
|
||||
gboolean include_threads);
|
||||
|
||||
@ -234,6 +234,10 @@
|
||||
</section>
|
||||
<section>
|
||||
<attribute name="label" translatable="yes">Options</attribute>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Categorize Frames</attribute>
|
||||
<attribute name="action">win.callgraph.categorize-frames</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name="label" translatable="yes">Hide System Libraries</attribute>
|
||||
<attribute name="action">win.callgraph.hide-system-libraries</attribute>
|
||||
|
||||
@ -92,6 +92,11 @@
|
||||
<lookup name="session">SysprofMemorySection</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
<binding name="categorize-frames">
|
||||
<lookup name="categorize-frames" type="SysprofSession">
|
||||
<lookup name="session">SysprofMemorySection</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
<binding name="document">
|
||||
<lookup name="document" type="SysprofSession">
|
||||
<lookup name="session">SysprofMemorySection</lookup>
|
||||
|
||||
@ -92,6 +92,11 @@
|
||||
<lookup name="session">SysprofSamplesSection</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
<binding name="categorize-frames">
|
||||
<lookup name="categorize-frames" type="SysprofSession">
|
||||
<lookup name="session">SysprofSamplesSection</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
<binding name="document">
|
||||
<lookup name="document" type="SysprofSession">
|
||||
<lookup name="session">SysprofSamplesSection</lookup>
|
||||
|
||||
@ -40,6 +40,7 @@ struct _SysprofSession
|
||||
SysprofTimeSpan visible_time;
|
||||
|
||||
guint bottom_up : 1;
|
||||
guint categorize_frames : 1;
|
||||
guint include_threads : 1;
|
||||
guint hide_system_libraries : 1;
|
||||
};
|
||||
@ -52,6 +53,7 @@ enum {
|
||||
PROP_FILTER,
|
||||
PROP_HIDE_SYSTEM_LIBRARIES,
|
||||
PROP_INCLUDE_THREADS,
|
||||
PROP_CATEGORIZE_FRAMES,
|
||||
PROP_SELECTED_TIME,
|
||||
PROP_SELECTED_TIME_AXIS,
|
||||
PROP_VISIBLE_TIME,
|
||||
@ -124,6 +126,10 @@ sysprof_session_get_property (GObject *object,
|
||||
g_value_set_boolean (value, self->bottom_up);
|
||||
break;
|
||||
|
||||
case PROP_CATEGORIZE_FRAMES:
|
||||
g_value_set_boolean (value, self->categorize_frames);
|
||||
break;
|
||||
|
||||
case PROP_DOCUMENT:
|
||||
g_value_set_object (value, sysprof_session_get_document (self));
|
||||
break;
|
||||
@ -179,6 +185,10 @@ sysprof_session_set_property (GObject *object,
|
||||
self->bottom_up = g_value_get_boolean (value);
|
||||
break;
|
||||
|
||||
case PROP_CATEGORIZE_FRAMES:
|
||||
self->categorize_frames = g_value_get_boolean (value);
|
||||
break;
|
||||
|
||||
case PROP_DOCUMENT:
|
||||
sysprof_session_set_document (self, g_value_get_object (value));
|
||||
break;
|
||||
@ -210,6 +220,11 @@ sysprof_session_class_init (SysprofSessionClass *klass)
|
||||
FALSE,
|
||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
properties [PROP_CATEGORIZE_FRAMES] =
|
||||
g_param_spec_boolean ("categorize-frames", NULL, NULL,
|
||||
FALSE,
|
||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
properties [PROP_DOCUMENT] =
|
||||
g_param_spec_object ("document", NULL, NULL,
|
||||
SYSPROF_TYPE_DOCUMENT,
|
||||
@ -264,6 +279,7 @@ sysprof_session_init (SysprofSession *self)
|
||||
self->filter = gtk_every_filter_new ();
|
||||
self->selected_time_axis = sysprof_value_axis_new (0, 0);
|
||||
self->visible_time_axis = sysprof_value_axis_new (0, 0);
|
||||
self->categorize_frames = TRUE;
|
||||
}
|
||||
|
||||
SysprofSession *
|
||||
|
||||
@ -125,6 +125,7 @@ sysprof_window_set_document (SysprofWindow *self,
|
||||
{
|
||||
static const char *callgraph_actions[] = {
|
||||
"bottom-up",
|
||||
"categorize-frames",
|
||||
"hide-system-libraries",
|
||||
"include-threads",
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user