From ea0474ccc8a829ffd3fd3c17640d1e3012e60f8d Mon Sep 17 00:00:00 2001 From: Khalid Abu Shawarib Date: Sun, 26 Jan 2025 21:41:55 +0300 Subject: [PATCH] application: Move mount from search thread to appilcation level Turns out there more places that will make use of it. Related: https://gitlab.gnome.org/GNOME/glib/-/commit/05afb30510fb98d8a564759556d11f7a1037df5a https://gitlab.gnome.org/GNOME/nautilus/-/issues/3062 --- src/nautilus-application.c | 10 ++++++++++ src/nautilus-search-engine-simple.c | 10 ---------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/nautilus-application.c b/src/nautilus-application.c index e9f97ed2f1..0ff06795d0 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -88,6 +89,8 @@ typedef struct NautilusTagManager *tag_manager; + GUnixMountMonitor *mount_monitor; + NautilusDBusLauncher *dbus_launcher; } NautilusApplicationPrivate; @@ -567,6 +570,8 @@ nautilus_application_finalize (GObject *object) g_clear_object (&priv->tag_manager); + g_clear_object (&priv->mount_monitor); + g_clear_object (&priv->dbus_launcher); nautilus_trash_monitor_clear (); @@ -996,6 +1001,11 @@ nautilus_application_init (NautilusApplication *self) priv->undo_manager = nautilus_file_undo_manager_new (); priv->tag_manager = nautilus_tag_manager_new (); + /* Retain a mount monitor so GIO's caching works. This helps to speed + * up various filesystem queries, e.g. those determining whether to + * recurse during searches. */ + priv->mount_monitor = g_unix_mount_monitor_get (); + priv->dbus_launcher = nautilus_dbus_launcher_new (); nautilus_tracker_setup_miner_fs_connection (); diff --git a/src/nautilus-search-engine-simple.c b/src/nautilus-search-engine-simple.c index 8d1a1ea9d9..b8800bc43b 100644 --- a/src/nautilus-search-engine-simple.c +++ b/src/nautilus-search-engine-simple.c @@ -29,7 +29,6 @@ #include #include -#include #include #define BATCH_SIZE 500 @@ -484,20 +483,11 @@ static gpointer search_thread_func (gpointer user_data) { SearchThreadData *data; - g_autoptr (GUnixMountMonitor) mount_monitor = NULL; GFile *dir; GFileInfo *info; const char *id; data = user_data; - - if (nautilus_query_get_recursive (data->query) == NAUTILUS_QUERY_RECURSIVE_LOCAL_ONLY) - { - /* Need to retain a mount monitor so that filesystem queries used to - * determine if we recurse are done fast. */ - mount_monitor = g_unix_mount_monitor_get (); - } - /* Insert id for toplevel directory into visited */ dir = g_queue_peek_head (data->directories); info = g_file_query_info (dir, G_FILE_ATTRIBUTE_ID_FILE, 0, data->cancellable, NULL); -- GitLab