mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
avoid warnings on shutdown
Occasionally we could get a few warnings during shutdown due to inconsistent teardown state. This tries to handle those so we shutdown cleanly.
This commit is contained in:
@ -492,6 +492,9 @@ sp_callgraph_view_set_node (SpCallgraphView *self,
|
|||||||
g_assert (SP_IS_CALLGRAPH_VIEW (self));
|
g_assert (SP_IS_CALLGRAPH_VIEW (self));
|
||||||
g_assert (node != NULL);
|
g_assert (node != NULL);
|
||||||
|
|
||||||
|
if (priv->profile == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
model = gtk_tree_view_get_model (priv->functions_view);
|
model = gtk_tree_view_get_model (priv->functions_view);
|
||||||
|
|
||||||
if (gtk_tree_model_get_iter_first (model, &iter))
|
if (gtk_tree_model_get_iter_first (model, &iter))
|
||||||
@ -586,6 +589,9 @@ sp_callgraph_view_tag_data_func (GtkTreeViewColumn *column,
|
|||||||
StackNode *node = NULL;
|
StackNode *node = NULL;
|
||||||
const gchar *str = NULL;
|
const gchar *str = NULL;
|
||||||
|
|
||||||
|
if (priv->profile == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter, COLUMN_POINTER, &node, -1);
|
gtk_tree_model_get (model, iter, COLUMN_POINTER, &node, -1);
|
||||||
|
|
||||||
if (node && node->data)
|
if (node && node->data)
|
||||||
|
|||||||
@ -31,6 +31,7 @@ typedef struct
|
|||||||
SpModelFilter *process_filter;
|
SpModelFilter *process_filter;
|
||||||
|
|
||||||
/* Gtk template widgets */
|
/* Gtk template widgets */
|
||||||
|
GtkTreeModel *environment_model;
|
||||||
GtkLabel *label;
|
GtkLabel *label;
|
||||||
GtkPopover *popover;
|
GtkPopover *popover;
|
||||||
GtkEntry *process_filter_entry;
|
GtkEntry *process_filter_entry;
|
||||||
@ -68,12 +69,13 @@ enum {
|
|||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
static void sp_profiler_menu_button_env_row_changed (SpProfilerMenuButton *self,
|
static void sp_profiler_menu_button_env_row_changed (SpProfilerMenuButton *self,
|
||||||
GtkTreePath *tree_path,
|
GtkTreePath *tree_path,
|
||||||
GtkTreeIter *tree_iter,
|
GtkTreeIter *tree_iter,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
static void sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self,
|
static void sp_profiler_menu_button_validate_spawn (SpProfilerMenuButton *self,
|
||||||
GtkEntry *entry);
|
GtkEntry *entry);
|
||||||
|
static gboolean save_environ_to_gsettings (gpointer data);
|
||||||
|
|
||||||
static GParamSpec *properties [N_PROPS];
|
static GParamSpec *properties [N_PROPS];
|
||||||
|
|
||||||
@ -237,6 +239,9 @@ sp_profiler_menu_button_disconnect (SpProfilerMenuButton *self)
|
|||||||
clear_binding (&priv->list_sensitive_binding);
|
clear_binding (&priv->list_sensitive_binding);
|
||||||
clear_binding (&priv->inherit_binding);
|
clear_binding (&priv->inherit_binding);
|
||||||
|
|
||||||
|
if (priv->save_env_source != 0)
|
||||||
|
save_environ_to_gsettings (self);
|
||||||
|
|
||||||
g_signal_handler_disconnect (priv->profiler, priv->notify_whole_system_handler);
|
g_signal_handler_disconnect (priv->profiler, priv->notify_whole_system_handler);
|
||||||
priv->notify_whole_system_handler = 0;
|
priv->notify_whole_system_handler = 0;
|
||||||
|
|
||||||
@ -469,7 +474,6 @@ save_environ_to_gsettings (gpointer data)
|
|||||||
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self);
|
SpProfilerMenuButtonPrivate *priv = sp_profiler_menu_button_get_instance_private (self);
|
||||||
g_autoptr(GPtrArray) ar = NULL;
|
g_autoptr(GPtrArray) ar = NULL;
|
||||||
g_autoptr(GSettings) settings = NULL;
|
g_autoptr(GSettings) settings = NULL;
|
||||||
GtkTreeModel *model;
|
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
|
||||||
g_assert (SP_IS_PROFILER_MENU_BUTTON (self));
|
g_assert (SP_IS_PROFILER_MENU_BUTTON (self));
|
||||||
@ -478,18 +482,16 @@ save_environ_to_gsettings (gpointer data)
|
|||||||
|
|
||||||
settings = g_settings_new ("org.gnome.sysprof2");
|
settings = g_settings_new ("org.gnome.sysprof2");
|
||||||
|
|
||||||
model = gtk_tree_view_get_model (priv->env_tree_view);
|
|
||||||
|
|
||||||
ar = g_ptr_array_new_with_free_func (g_free);
|
ar = g_ptr_array_new_with_free_func (g_free);
|
||||||
|
|
||||||
if (gtk_tree_model_get_iter_first (model, &iter))
|
if (gtk_tree_model_get_iter_first (priv->environment_model, &iter))
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
g_autofree gchar *key = NULL;
|
g_autofree gchar *key = NULL;
|
||||||
g_autofree gchar *value = NULL;
|
g_autofree gchar *value = NULL;
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter,
|
gtk_tree_model_get (priv->environment_model, &iter,
|
||||||
0, &key,
|
0, &key,
|
||||||
1, &value,
|
1, &value,
|
||||||
-1);
|
-1);
|
||||||
@ -499,7 +501,7 @@ save_environ_to_gsettings (gpointer data)
|
|||||||
|
|
||||||
g_ptr_array_add (ar, g_strdup_printf ("%s=%s", key, value ? value : ""));
|
g_ptr_array_add (ar, g_strdup_printf ("%s=%s", key, value ? value : ""));
|
||||||
}
|
}
|
||||||
while (gtk_tree_model_iter_next (model, &iter));
|
while (gtk_tree_model_iter_next (priv->environment_model, &iter));
|
||||||
}
|
}
|
||||||
|
|
||||||
g_ptr_array_add (ar, NULL);
|
g_ptr_array_add (ar, NULL);
|
||||||
@ -522,9 +524,6 @@ sp_profiler_menu_button_destroy (GtkWidget *widget)
|
|||||||
g_clear_object (&priv->profiler);
|
g_clear_object (&priv->profiler);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (priv->save_env_source)
|
|
||||||
save_environ_to_gsettings (self);
|
|
||||||
|
|
||||||
g_clear_object (&priv->process_filter);
|
g_clear_object (&priv->process_filter);
|
||||||
|
|
||||||
GTK_WIDGET_CLASS (sp_profiler_menu_button_parent_class)->destroy (widget);
|
GTK_WIDGET_CLASS (sp_profiler_menu_button_parent_class)->destroy (widget);
|
||||||
@ -597,6 +596,7 @@ sp_profiler_menu_button_class_init (SpProfilerMenuButtonClass *klass)
|
|||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_key_column);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_key_column);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_tree_view);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_tree_view);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_value_column);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, env_value_column);
|
||||||
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, environment_model);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, inherit_environ);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, inherit_environ);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, key_cell);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, key_cell);
|
||||||
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, label);
|
gtk_widget_class_bind_template_child_private (widget_class, SpProfilerMenuButton, label);
|
||||||
|
|||||||
Reference in New Issue
Block a user