This is an automated email from the git hooks/post-receive script. ochosi pushed a commit to branch master in repository xfce/thunar.
commit b838a4d250e3283590cabac2ee5947cdf91c8864 Author: pgkos <[email protected]> Date: Tue Jan 31 19:30:55 2017 +0100 Fix crash and hang while renaming --- thunar/thunar-file.c | 13 +++++++++++-- thunar/thunar-folder.c | 7 +++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/thunar/thunar-file.c b/thunar/thunar-file.c index c8ca881..ccca2c9 100644 --- a/thunar/thunar-file.c +++ b/thunar/thunar-file.c @@ -121,6 +121,7 @@ static gboolean thunar_file_same_filesystem (const ThunarFile G_LOCK_DEFINE_STATIC (file_cache_mutex); G_LOCK_DEFINE_STATIC (file_content_type_mutex); +G_LOCK_DEFINE_STATIC (file_rename_mutex); @@ -780,7 +781,9 @@ thunar_file_monitor (GFileMonitor *monitor, /* the event occurred for the monitored ThunarFile */ if (event_type == G_FILE_MONITOR_EVENT_MOVED) { + G_LOCK (file_rename_mutex); thunar_file_monitor_moved (file, other_path); + G_UNLOCK (file_rename_mutex); return; } @@ -797,6 +800,9 @@ thunar_file_monitor (GFileMonitor *monitor, /* reload the target file if cached */ if (other_path == NULL) return; + + G_LOCK (file_rename_mutex); + other_file = thunar_file_cache_lookup (other_path); if (other_file) thunar_file_reload (other_file); @@ -813,13 +819,14 @@ thunar_file_monitor (GFileMonitor *monitor, thunar_file_reload_parent (other_file); g_object_unref (other_file); + + G_UNLOCK (file_rename_mutex); } return; } } - static void thunar_file_watch_destroyed (gpointer data) { @@ -1928,6 +1935,7 @@ thunar_file_rename (ThunarFile *file, } else { + G_LOCK (file_rename_mutex); /* try to rename the file */ renamed_file = g_file_set_display_name (file->gfile, name, cancellable, error); @@ -1944,11 +1952,12 @@ thunar_file_rename (ThunarFile *file, /* emit the file changed signal */ thunar_file_changed (file); } - + G_UNLOCK (file_rename_mutex); return TRUE; } else { + G_UNLOCK (file_rename_mutex); return FALSE; } } diff --git a/thunar/thunar-folder.c b/thunar/thunar-folder.c index 9decb89..a90988e 100644 --- a/thunar/thunar-folder.c +++ b/thunar/thunar-folder.c @@ -276,6 +276,9 @@ thunar_folder_finalize (GObject *object) { ThunarFolder *folder = THUNAR_FOLDER (object); + if (folder->corresponding_file) + thunar_file_unwatch (folder->corresponding_file); + /* disconnect from the ThunarFileMonitor instance */ g_signal_handlers_disconnect_matched (folder->file_monitor, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, folder); g_object_unref (folder->file_monitor); @@ -356,7 +359,11 @@ thunar_folder_set_property (GObject *object, switch (prop_id) { case PROP_CORRESPONDING_FILE: + if (folder->corresponding_file) + thunar_file_unwatch (folder->corresponding_file); folder->corresponding_file = g_value_dup_object (value); + if (folder->corresponding_file) + thunar_file_watch (folder->corresponding_file); break; case PROP_LOADING: -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
