Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dliang
nautilus
nautilus-open-unmounted-drive-error-bug264956.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nautilus-open-unmounted-drive-error-bug264956.patch of Package nautilus
diff -Npur nau_old/src/file-manager/fm-directory-view.c nau_new/src/file-manager/fm-directory-view.c --- nau_old/src/file-manager/fm-directory-view.c 2007-08-17 13:32:20.000000000 +0800 +++ nau_new/src/file-manager/fm-directory-view.c 2007-08-17 13:36:00.000000000 +0800 @@ -280,8 +280,14 @@ typedef struct { gboolean mounting; gboolean cancelled; gulong file_changed_id; + GnomeVFSDrive *drive; } ActivateParameters; +typedef struct { + ActivateParameters *parameters; + GnomeVFSDrive *drive; +} DriveBeingMounted; + enum { GNOME_COPIED_FILES, UTF8_STRING @@ -7455,41 +7461,42 @@ static void activation_file_changed_after_drive_mounted (NautilusFile *file, gpointer data) { + DriveBeingMounted *drive_being_mounted; ActivateParameters *parameters; - - parameters = data; + + drive_being_mounted = data; + parameters = drive_being_mounted->parameters; g_signal_handler_disconnect (parameters->file, parameters->file_changed_id); parameters->file_changed_id = 0; activate_activation_uri_ready_callback (parameters->file, parameters); + gnome_vfs_drive_unref (drive_being_mounted->drive); + g_free (drive_being_mounted); } +/*dliang mark */ static void activation_drive_mounted_callback (gboolean succeeded, char *error, char *detailed_error, gpointer callback_data) { + DriveBeingMounted *drive_being_mounted; ActivateParameters *parameters; - - parameters = callback_data; + drive_being_mounted = callback_data; + parameters = drive_being_mounted->parameters; parameters->mounted = TRUE; parameters->mounting = FALSE; if (succeeded && !parameters->cancelled) { - GnomeVFSDrive *drive; - - /* fprintf (stderr, "LOG: activation_drive_mounted_callback(): drive got mounted successfully\n"); */ - - drive = nautilus_file_get_drive (parameters->file); /* we don't own this reference */ - g_assert (drive != NULL); - - if (gnome_vfs_drive_is_mounted (drive)) { + if (gnome_vfs_drive_is_mounted (drive_being_mounted->drive)) { /* fprintf (stderr, "LOG: activation_drive_mounted_callback(): drive is really mounted; activating...\n"); */ activate_activation_uri_ready_callback (parameters->file, parameters); + gnome_vfs_drive_unref (drive_being_mounted->drive); + g_free (drive_being_mounted); } else { /* Hack alert: Here, the drive is already mounted, but * gnome-vfs-volume-monitor thinks that it is not. This @@ -7504,7 +7511,7 @@ activation_drive_mounted_callback (gbool parameters->file_changed_id = g_signal_connect (parameters->file, "changed", G_CALLBACK (activation_file_changed_after_drive_mounted), - parameters); + drive_being_mounted); } } else { /* fprintf (stderr, "LOG: activation_drive_mounted_callback(): drive didn't get mounted\n"); */ @@ -7516,10 +7523,10 @@ activation_drive_mounted_callback (gbool detailed_error, NULL); } - + gnome_vfs_drive_unref (drive_being_mounted->drive); nautilus_file_unref (parameters->file); - g_free (parameters); + g_free (drive_being_mounted); } } @@ -7555,8 +7562,13 @@ activate_activation_uri_ready_callback ( if (drive != NULL && !gnome_vfs_drive_is_mounted (drive)) { parameters->mounting = TRUE; + + DriveBeingMounted *drive_being_mounted; + drive_being_mounted = g_new (DriveBeingMounted, 1); + drive_being_mounted->parameters = parameters; + drive_being_mounted->drive = gnome_vfs_drive_ref (drive); /* fprintf (stderr, "LOG: activate_activation_uri_ready_callback() calling gnome_vfs_drive_mount()\n"); */ - gnome_vfs_drive_mount (drive, activation_drive_mounted_callback, callback_data); + gnome_vfs_drive_mount (drive, activation_drive_mounted_callback, drive_being_mounted); return; } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor