mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-09 14:40:54 +00:00
@ -58,6 +58,7 @@ struct _SysprofCallgraphView
|
|||||||
guint ignore_process_0 : 1;
|
guint ignore_process_0 : 1;
|
||||||
guint include_threads : 1;
|
guint include_threads : 1;
|
||||||
guint left_heavy : 1;
|
guint left_heavy : 1;
|
||||||
|
guint merge_similar_processes : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _SysprofCallgraphViewClass
|
struct _SysprofCallgraphViewClass
|
||||||
|
|||||||
@ -39,6 +39,7 @@ enum {
|
|||||||
PROP_IGNORE_PROCESS_0,
|
PROP_IGNORE_PROCESS_0,
|
||||||
PROP_INCLUDE_THREADS,
|
PROP_INCLUDE_THREADS,
|
||||||
PROP_LEFT_HEAVY,
|
PROP_LEFT_HEAVY,
|
||||||
|
PROP_MERGE_SIMILAR_PROCESSES,
|
||||||
PROP_TRACEABLES,
|
PROP_TRACEABLES,
|
||||||
PROP_UTILITY_SUMMARY,
|
PROP_UTILITY_SUMMARY,
|
||||||
PROP_UTILITY_TRACEABLES,
|
PROP_UTILITY_TRACEABLES,
|
||||||
@ -399,6 +400,10 @@ sysprof_callgraph_view_get_property (GObject *object,
|
|||||||
g_value_set_boolean (value, sysprof_callgraph_view_get_left_heavy (self));
|
g_value_set_boolean (value, sysprof_callgraph_view_get_left_heavy (self));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MERGE_SIMILAR_PROCESSES:
|
||||||
|
g_value_set_boolean (value, sysprof_callgraph_view_get_merge_similar_processes (self));
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_TRACEABLES:
|
case PROP_TRACEABLES:
|
||||||
g_value_set_object (value, sysprof_callgraph_view_get_traceables (self));
|
g_value_set_object (value, sysprof_callgraph_view_get_traceables (self));
|
||||||
break;
|
break;
|
||||||
@ -454,6 +459,10 @@ sysprof_callgraph_view_set_property (GObject *object,
|
|||||||
sysprof_callgraph_view_set_left_heavy (self, g_value_get_boolean (value));
|
sysprof_callgraph_view_set_left_heavy (self, g_value_get_boolean (value));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MERGE_SIMILAR_PROCESSES:
|
||||||
|
sysprof_callgraph_view_set_merge_similar_processes (self, g_value_get_boolean (value));
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_TRACEABLES:
|
case PROP_TRACEABLES:
|
||||||
sysprof_callgraph_view_set_traceables (self, g_value_get_object (value));
|
sysprof_callgraph_view_set_traceables (self, g_value_get_object (value));
|
||||||
break;
|
break;
|
||||||
@ -513,6 +522,11 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
|
|||||||
FALSE,
|
FALSE,
|
||||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
properties[PROP_MERGE_SIMILAR_PROCESSES] =
|
||||||
|
g_param_spec_boolean ("merge-similar-processes", NULL, NULL,
|
||||||
|
FALSE,
|
||||||
|
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
properties[PROP_TRACEABLES] =
|
properties[PROP_TRACEABLES] =
|
||||||
g_param_spec_object ("traceables", NULL, NULL,
|
g_param_spec_object ("traceables", NULL, NULL,
|
||||||
G_TYPE_LIST_MODEL,
|
G_TYPE_LIST_MODEL,
|
||||||
@ -697,6 +711,9 @@ sysprof_callgraph_view_reload (SysprofCallgraphView *self)
|
|||||||
if (self->left_heavy)
|
if (self->left_heavy)
|
||||||
flags |= SYSPROF_CALLGRAPH_FLAGS_LEFT_HEAVY;
|
flags |= SYSPROF_CALLGRAPH_FLAGS_LEFT_HEAVY;
|
||||||
|
|
||||||
|
if (self->merge_similar_processes)
|
||||||
|
flags |= SYSPROF_CALLGRAPH_FLAGS_MERGE_SIMILAR_PROCESSES;
|
||||||
|
|
||||||
sysprof_document_callgraph_async (self->document,
|
sysprof_document_callgraph_async (self->document,
|
||||||
flags,
|
flags,
|
||||||
self->traceables,
|
self->traceables,
|
||||||
@ -974,3 +991,27 @@ sysprof_callgraph_view_set_left_heavy (SysprofCallgraphView *self,
|
|||||||
sysprof_callgraph_view_queue_reload (self);
|
sysprof_callgraph_view_queue_reload (self);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
sysprof_callgraph_view_get_merge_similar_processes (SysprofCallgraphView *self)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), FALSE);
|
||||||
|
|
||||||
|
return self->merge_similar_processes;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sysprof_callgraph_view_set_merge_similar_processes (SysprofCallgraphView *self,
|
||||||
|
gboolean merge_similar_processes)
|
||||||
|
{
|
||||||
|
g_return_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self));
|
||||||
|
|
||||||
|
merge_similar_processes = !!merge_similar_processes;
|
||||||
|
|
||||||
|
if (self->merge_similar_processes != merge_similar_processes)
|
||||||
|
{
|
||||||
|
self->merge_similar_processes = merge_similar_processes;
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MERGE_SIMILAR_PROCESSES]);
|
||||||
|
sysprof_callgraph_view_queue_reload (self);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -35,32 +35,35 @@ G_BEGIN_DECLS
|
|||||||
typedef struct _SysprofCallgraphView SysprofCallgraphView;
|
typedef struct _SysprofCallgraphView SysprofCallgraphView;
|
||||||
typedef struct _SysprofCallgraphViewClass SysprofCallgraphViewClass;
|
typedef struct _SysprofCallgraphViewClass SysprofCallgraphViewClass;
|
||||||
|
|
||||||
GType sysprof_callgraph_view_get_type (void) G_GNUC_CONST;
|
GType sysprof_callgraph_view_get_type (void) G_GNUC_CONST;
|
||||||
SysprofCallgraph *sysprof_callgraph_view_get_callgraph (SysprofCallgraphView *self);
|
SysprofCallgraph *sysprof_callgraph_view_get_callgraph (SysprofCallgraphView *self);
|
||||||
SysprofDocument *sysprof_callgraph_view_get_document (SysprofCallgraphView *self);
|
SysprofDocument *sysprof_callgraph_view_get_document (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_document (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_document (SysprofCallgraphView *self,
|
||||||
SysprofDocument *document);
|
SysprofDocument *document);
|
||||||
GListModel *sysprof_callgraph_view_get_traceables (SysprofCallgraphView *self);
|
GListModel *sysprof_callgraph_view_get_traceables (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_traceables (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_traceables (SysprofCallgraphView *self,
|
||||||
GListModel *model);
|
GListModel *model);
|
||||||
gboolean sysprof_callgraph_view_get_bottom_up (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_bottom_up (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_bottom_up (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_bottom_up (SysprofCallgraphView *self,
|
||||||
gboolean bottom_up);
|
gboolean bottom_up);
|
||||||
gboolean sysprof_callgraph_view_get_categorize_frames (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_categorize_frames (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_categorize_frames (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_categorize_frames (SysprofCallgraphView *self,
|
||||||
gboolean categorize_frames);
|
gboolean categorize_frames);
|
||||||
gboolean sysprof_callgraph_view_get_ignore_process_0 (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_ignore_process_0 (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_ignore_process_0 (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_ignore_process_0 (SysprofCallgraphView *self,
|
||||||
gboolean ignore_process_0);
|
gboolean ignore_process_0);
|
||||||
gboolean sysprof_callgraph_view_get_include_threads (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_include_threads (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_include_threads (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_include_threads (SysprofCallgraphView *self,
|
||||||
gboolean include_threads);
|
gboolean include_threads);
|
||||||
gboolean sysprof_callgraph_view_get_hide_system_libraries (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_hide_system_libraries (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_hide_system_libraries (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_hide_system_libraries (SysprofCallgraphView *self,
|
||||||
gboolean hide_system_libraries);
|
gboolean hide_system_libraries);
|
||||||
gboolean sysprof_callgraph_view_get_left_heavy (SysprofCallgraphView *self);
|
gboolean sysprof_callgraph_view_get_left_heavy (SysprofCallgraphView *self);
|
||||||
void sysprof_callgraph_view_set_left_heavy (SysprofCallgraphView *self,
|
void sysprof_callgraph_view_set_left_heavy (SysprofCallgraphView *self,
|
||||||
gboolean left_heavy);
|
gboolean left_heavy);
|
||||||
|
gboolean sysprof_callgraph_view_get_merge_similar_processes (SysprofCallgraphView *self);
|
||||||
|
void sysprof_callgraph_view_set_merge_similar_processes (SysprofCallgraphView *self,
|
||||||
|
gboolean merge_similar_processes);
|
||||||
|
|
||||||
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCallgraphView, g_object_unref)
|
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SysprofCallgraphView, g_object_unref)
|
||||||
|
|
||||||
|
|||||||
@ -275,6 +275,10 @@
|
|||||||
<attribute name="label" translatable="yes">Ignore Process 0</attribute>
|
<attribute name="label" translatable="yes">Ignore Process 0</attribute>
|
||||||
<attribute name="action">win.callgraph.ignore-process-0</attribute>
|
<attribute name="action">win.callgraph.ignore-process-0</attribute>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<attribute name="label" translatable="yes">Merge Similar Processes</attribute>
|
||||||
|
<attribute name="action">win.callgraph.merge-similar-processes</attribute>
|
||||||
|
</item>
|
||||||
</section>
|
</section>
|
||||||
</menu>
|
</menu>
|
||||||
</interface>
|
</interface>
|
||||||
|
|||||||
@ -109,6 +109,11 @@
|
|||||||
<lookup name="session">SysprofSamplesSection</lookup>
|
<lookup name="session">SysprofSamplesSection</lookup>
|
||||||
</lookup>
|
</lookup>
|
||||||
</binding>
|
</binding>
|
||||||
|
<binding name="merge-similar-processes">
|
||||||
|
<lookup name="merge-similar-processes" type="SysprofSession">
|
||||||
|
<lookup name="session">SysprofSamplesSection</lookup>
|
||||||
|
</lookup>
|
||||||
|
</binding>
|
||||||
<binding name="categorize-frames">
|
<binding name="categorize-frames">
|
||||||
<lookup name="categorize-frames" type="SysprofSession">
|
<lookup name="categorize-frames" type="SysprofSession">
|
||||||
<lookup name="session">SysprofSamplesSection</lookup>
|
<lookup name="session">SysprofSamplesSection</lookup>
|
||||||
|
|||||||
@ -41,23 +41,25 @@ struct _SysprofSession
|
|||||||
|
|
||||||
guint bottom_up : 1;
|
guint bottom_up : 1;
|
||||||
guint categorize_frames : 1;
|
guint categorize_frames : 1;
|
||||||
|
guint hide_system_libraries : 1;
|
||||||
guint ignore_process_0 : 1;
|
guint ignore_process_0 : 1;
|
||||||
guint include_threads : 1;
|
guint include_threads : 1;
|
||||||
guint left_heavy : 1;
|
guint left_heavy : 1;
|
||||||
guint hide_system_libraries : 1;
|
guint merge_similar_processes : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_BOTTOM_UP,
|
PROP_BOTTOM_UP,
|
||||||
|
PROP_CATEGORIZE_FRAMES,
|
||||||
PROP_DOCUMENT,
|
PROP_DOCUMENT,
|
||||||
PROP_DOCUMENT_TIME,
|
PROP_DOCUMENT_TIME,
|
||||||
PROP_FILTER,
|
PROP_FILTER,
|
||||||
PROP_LEFT_HEAVY,
|
|
||||||
PROP_HIDE_SYSTEM_LIBRARIES,
|
PROP_HIDE_SYSTEM_LIBRARIES,
|
||||||
PROP_IGNORE_PROCESS_0,
|
PROP_IGNORE_PROCESS_0,
|
||||||
PROP_INCLUDE_THREADS,
|
PROP_INCLUDE_THREADS,
|
||||||
PROP_CATEGORIZE_FRAMES,
|
PROP_LEFT_HEAVY,
|
||||||
|
PROP_MERGE_SIMILAR_PROCESSES,
|
||||||
PROP_SELECTED_TIME,
|
PROP_SELECTED_TIME,
|
||||||
PROP_SELECTED_TIME_AXIS,
|
PROP_SELECTED_TIME_AXIS,
|
||||||
PROP_VISIBLE_TIME,
|
PROP_VISIBLE_TIME,
|
||||||
@ -162,6 +164,10 @@ sysprof_session_get_property (GObject *object,
|
|||||||
g_value_set_boolean (value, self->left_heavy);
|
g_value_set_boolean (value, self->left_heavy);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MERGE_SIMILAR_PROCESSES:
|
||||||
|
g_value_set_boolean (value, self->merge_similar_processes);
|
||||||
|
break;
|
||||||
|
|
||||||
case PROP_SELECTED_TIME:
|
case PROP_SELECTED_TIME:
|
||||||
g_value_set_boxed (value, sysprof_session_get_selected_time (self));
|
g_value_set_boxed (value, sysprof_session_get_selected_time (self));
|
||||||
break;
|
break;
|
||||||
@ -221,6 +227,10 @@ sysprof_session_set_property (GObject *object,
|
|||||||
self->left_heavy = g_value_get_boolean (value);
|
self->left_heavy = g_value_get_boolean (value);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PROP_MERGE_SIMILAR_PROCESSES:
|
||||||
|
self->merge_similar_processes = g_value_get_boolean (value);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
@ -280,6 +290,11 @@ sysprof_session_class_init (SysprofSessionClass *klass)
|
|||||||
FALSE,
|
FALSE,
|
||||||
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
properties [PROP_MERGE_SIMILAR_PROCESSES] =
|
||||||
|
g_param_spec_boolean ("merge-similar-processes", NULL, NULL,
|
||||||
|
FALSE,
|
||||||
|
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
properties [PROP_SELECTED_TIME] =
|
properties [PROP_SELECTED_TIME] =
|
||||||
g_param_spec_boxed ("selected-time", NULL, NULL,
|
g_param_spec_boxed ("selected-time", NULL, NULL,
|
||||||
SYSPROF_TYPE_TIME_SPAN,
|
SYSPROF_TYPE_TIME_SPAN,
|
||||||
|
|||||||
@ -225,6 +225,7 @@ sysprof_window_set_document (SysprofWindow *self,
|
|||||||
"ignore-process-0",
|
"ignore-process-0",
|
||||||
"include-threads",
|
"include-threads",
|
||||||
"left-heavy",
|
"left-heavy",
|
||||||
|
"merge-similar-processes",
|
||||||
};
|
};
|
||||||
g_autofree char *title = NULL;
|
g_autofree char *title = NULL;
|
||||||
g_autofree char *full_title = NULL;
|
g_autofree char *full_title = NULL;
|
||||||
|
|||||||
@ -381,6 +381,10 @@
|
|||||||
<attribute name="label" translatable="yes">Ignore Process 0</attribute>
|
<attribute name="label" translatable="yes">Ignore Process 0</attribute>
|
||||||
<attribute name="action">win.callgraph.ignore-process-0</attribute>
|
<attribute name="action">win.callgraph.ignore-process-0</attribute>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<attribute name="label" translatable="yes">Merge Similar Processes</attribute>
|
||||||
|
<attribute name="action">win.callgraph.merge-similar-processes</attribute>
|
||||||
|
</item>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
<attribute name="label" translatable="yes">Flamegraph</attribute>
|
<attribute name="label" translatable="yes">Flamegraph</attribute>
|
||||||
|
|||||||
Reference in New Issue
Block a user