forked from AuroraMiddleware/gtk
placesview: hold onto ref during (un)mount ops
During mount and unmount opertions we keep a reference to the GtkPlacesView around, so we have a valid view for the callback code, even in the case that othe external references have been dropped (i.e. the containing window gets destroyed). https://bugzilla.gnome.org/show_bug.cgi?id=764979
This commit is contained in:
parent
f2ba6ca473
commit
3ed25941ac
@ -1207,6 +1207,7 @@ server_mount_ready_cb (GObject *source_file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
update_places (view);
|
update_places (view);
|
||||||
|
g_object_unref (view);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1277,6 +1278,7 @@ volume_mount_ready_cb (GObject *source_volume,
|
|||||||
}
|
}
|
||||||
|
|
||||||
update_places (view);
|
update_places (view);
|
||||||
|
g_object_unref (view);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1311,6 +1313,8 @@ unmount_ready_cb (GObject *source_mount,
|
|||||||
|
|
||||||
g_clear_error (&error);
|
g_clear_error (&error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_object_unref (view);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
@ -1355,6 +1359,8 @@ unmount_mount (GtkPlacesView *view,
|
|||||||
priv->unmounting_mount = TRUE;
|
priv->unmounting_mount = TRUE;
|
||||||
update_loading (view);
|
update_loading (view);
|
||||||
|
|
||||||
|
g_object_ref (view);
|
||||||
|
|
||||||
operation = gtk_mount_operation_new (GTK_WINDOW (toplevel));
|
operation = gtk_mount_operation_new (GTK_WINDOW (toplevel));
|
||||||
g_mount_unmount_with_operation (mount,
|
g_mount_unmount_with_operation (mount,
|
||||||
0,
|
0,
|
||||||
@ -1398,6 +1404,9 @@ mount_server (GtkPlacesView *view,
|
|||||||
|
|
||||||
g_mount_operation_set_password_save (operation, G_PASSWORD_SAVE_FOR_SESSION);
|
g_mount_operation_set_password_save (operation, G_PASSWORD_SAVE_FOR_SESSION);
|
||||||
|
|
||||||
|
/* make sure we keep the view around for as long as we are running */
|
||||||
|
g_object_ref (view);
|
||||||
|
|
||||||
g_file_mount_enclosing_volume (location,
|
g_file_mount_enclosing_volume (location,
|
||||||
0,
|
0,
|
||||||
operation,
|
operation,
|
||||||
@ -1430,6 +1439,9 @@ mount_volume (GtkPlacesView *view,
|
|||||||
|
|
||||||
g_mount_operation_set_password_save (operation, G_PASSWORD_SAVE_FOR_SESSION);
|
g_mount_operation_set_password_save (operation, G_PASSWORD_SAVE_FOR_SESSION);
|
||||||
|
|
||||||
|
/* make sure we keep the view around for as long as we are running */
|
||||||
|
g_object_ref (view);
|
||||||
|
|
||||||
g_volume_mount (volume,
|
g_volume_mount (volume,
|
||||||
0,
|
0,
|
||||||
operation,
|
operation,
|
||||||
|
Loading…
Reference in New Issue
Block a user