mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +00:00
sysprof: use template to create profiler
This commit is contained in:
@ -53,6 +53,7 @@ struct _SysprofGreeter
|
||||
GtkSwitch *record_session_bus;
|
||||
GtkSwitch *record_system_bus;
|
||||
GtkSwitch *bundle_symbols;
|
||||
GtkButton *record_to_memory;
|
||||
SysprofRecordingTemplate *recording_template;
|
||||
};
|
||||
|
||||
@ -147,56 +148,6 @@ on_env_entry_activate_cb (SysprofGreeter *self,
|
||||
sysprof_entry_popover_set_text (popover, "");
|
||||
}
|
||||
|
||||
static SysprofProfiler *
|
||||
sysprof_greeter_create_profiler (SysprofGreeter *self)
|
||||
{
|
||||
g_autoptr(SysprofProfiler) profiler = NULL;
|
||||
g_autoptr(SysprofSpawnable) spawnable = NULL;
|
||||
|
||||
g_assert (SYSPROF_IS_GREETER (self));
|
||||
|
||||
profiler = sysprof_profiler_new ();
|
||||
|
||||
/* TODO: Setup spawnable */
|
||||
|
||||
if (gtk_switch_get_active (self->sample_native_stacks))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_sampler_new ());
|
||||
|
||||
if (gtk_switch_get_active (self->sample_javascript_stacks))
|
||||
{
|
||||
if (spawnable != NULL)
|
||||
sysprof_profiler_add_instrument (profiler,
|
||||
sysprof_tracefd_consumer_new (sysprof_spawnable_add_trace_fd (spawnable,
|
||||
"GJS_TRACE_FD")));
|
||||
}
|
||||
|
||||
if (gtk_switch_get_active (self->record_disk_usage))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_disk_usage_new ());
|
||||
|
||||
if (gtk_switch_get_active (self->record_network_usage))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_network_usage_new ());
|
||||
|
||||
if (gtk_switch_get_active (self->record_compositor))
|
||||
sysprof_profiler_add_instrument (profiler,
|
||||
sysprof_proxied_instrument_new (G_BUS_TYPE_SESSION,
|
||||
"org.gnome.Shell",
|
||||
"/org/gnome/Sysprof3/Profiler"));
|
||||
|
||||
if (gtk_switch_get_active (self->record_system_logs))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_system_logs_new ());
|
||||
|
||||
if (gtk_switch_get_active (self->bundle_symbols))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_symbols_bundle_new ());
|
||||
|
||||
if (gtk_switch_get_active (self->record_session_bus))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_dbus_monitor_new (G_BUS_TYPE_SESSION));
|
||||
|
||||
if (gtk_switch_get_active (self->record_system_bus))
|
||||
sysprof_profiler_add_instrument (profiler, sysprof_dbus_monitor_new (G_BUS_TYPE_SYSTEM));
|
||||
|
||||
return g_steal_pointer (&profiler);
|
||||
}
|
||||
|
||||
static void
|
||||
sysprof_greeter_record_cb (GObject *object,
|
||||
GAsyncResult *result,
|
||||
@ -233,13 +184,17 @@ sysprof_greeter_record_to_memory_action (GtkWidget *widget,
|
||||
SysprofGreeter *self = (SysprofGreeter *)widget;
|
||||
g_autoptr(SysprofCaptureWriter) writer = NULL;
|
||||
g_autoptr(SysprofProfiler) profiler = NULL;
|
||||
g_autoptr(GError) error = NULL;
|
||||
g_autofd int fd = -1;
|
||||
|
||||
g_assert (SYSPROF_IS_GREETER (self));
|
||||
|
||||
fd = sysprof_memfd_create ("[sysprof-profile]");
|
||||
|
||||
profiler = sysprof_greeter_create_profiler (self);
|
||||
/* TODO: Handle recording error */
|
||||
if (!(profiler = sysprof_recording_template_apply (self->recording_template, &error)))
|
||||
return;
|
||||
|
||||
writer = sysprof_capture_writer_new_from_fd (g_steal_fd (&fd), 0);
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self), FALSE);
|
||||
@ -272,7 +227,10 @@ sysprof_greeter_choose_file_for_record_cb (GObject *object,
|
||||
g_autoptr(SysprofCaptureWriter) writer = NULL;
|
||||
g_autoptr(SysprofProfiler) profiler = NULL;
|
||||
|
||||
profiler = sysprof_greeter_create_profiler (self);
|
||||
/* TODO: Handle recording error */
|
||||
if (!(profiler = sysprof_recording_template_apply (self->recording_template, &error)))
|
||||
return;
|
||||
|
||||
writer = sysprof_capture_writer_new (g_file_peek_path (file), 0);
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (self), FALSE);
|
||||
@ -600,6 +558,7 @@ sysprof_greeter_class_init (SysprofGreeterClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, record_session_bus);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, record_system_bus);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, record_system_logs);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, record_to_memory);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, recording_template);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, sample_javascript_stacks);
|
||||
gtk_widget_class_bind_template_child (widget_class, SysprofGreeter, sample_native_stacks);
|
||||
@ -646,6 +605,8 @@ sysprof_greeter_init (SysprofGreeter *self)
|
||||
row = gtk_list_box_get_row_at_index (self->sidebar_list_box, 0);
|
||||
gtk_list_box_select_row (self->sidebar_list_box, row);
|
||||
sidebar_row_activated_cb (self, row, self->sidebar_list_box);
|
||||
|
||||
gtk_widget_grab_focus (GTK_WIDGET (self->record_to_memory));
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
|
||||
@ -26,29 +26,11 @@
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwHeaderBar">
|
||||
<property name="show-end-title-buttons">false</property>
|
||||
<property name="title-widget">
|
||||
<object class="AdwWindowTitle">
|
||||
<property name="title">New Session</property>
|
||||
<object class="AdwViewSwitcher">
|
||||
<property name="stack">view_stack</property>
|
||||
</object>
|
||||
</property>
|
||||
<child type="start">
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Open…</property>
|
||||
<property name="action-name">win.select-file</property>
|
||||
<property name="width-request">100</property>
|
||||
</object>
|
||||
</child>
|
||||
<child type="end">
|
||||
<object class="GtkButton">
|
||||
<property name="label" translatable="yes">Record</property>
|
||||
<property name="action-name">win.record-to-memory</property>
|
||||
<property name="width-request">100</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
@ -519,9 +501,35 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwViewSwitcherBar">
|
||||
<property name="stack">view_stack</property>
|
||||
<property name="reveal">true</property>
|
||||
<object class="GtkBox">
|
||||
<property name="homogeneous">true</property>
|
||||
<style>
|
||||
<class name="toolbar"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="action-name">win.select-file</property>
|
||||
<property name="label" translatable="yes">_Open File…</property>
|
||||
<property name="use-underline">true</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="action-name">win.record-to-file</property>
|
||||
<property name="label" translatable="yes">Record to _File…</property>
|
||||
<property name="use-underline">true</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="record_to_memory">
|
||||
<property name="action-name">win.record-to-memory</property>
|
||||
<property name="label" translatable="yes">Record to _Memory</property>
|
||||
<property name="use-underline">true</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
|
||||
Reference in New Issue
Block a user