summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntónio Fernandes <antoniof@gnome.org>2020-12-30 16:53:27 +0000
committerAntónio Fernandes <antoniojpfernandes@gmail.com>2021-03-12 15:47:05 +0000
commitf3ef2e812e567d5252d5b5a1242a5d1390556dba (patch)
tree49831974ed8afd87d2219c7cab761feb7597825b
parent080f83385ff79a8be54ee31e7a45422138226f1f (diff)
downloadnautilus-f3ef2e812e567d5252d5b5a1242a5d1390556dba.tar.gz
mime-actions: Check flatpak-info only once
-rw-r--r--src/nautilus-mime-actions.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c
index 206949435..ebe7903a0 100644
--- a/src/nautilus-mime-actions.c
+++ b/src/nautilus-mime-actions.c
@@ -245,6 +245,20 @@ static void activate_callback (GList *files,
gpointer callback_data);
static void activation_mount_not_mounted (ActivateParameters *parameters);
+static gboolean
+is_sandboxed (void)
+{
+ static gboolean ret;
+
+ static gsize init = 0;
+ if (g_once_init_enter (&init))
+ {
+ ret = g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS);
+ g_once_init_leave (&init, 1);
+ }
+
+ return ret;
+}
static void
launch_location_free (LaunchLocation *location)
@@ -1391,16 +1405,14 @@ launch_default_for_uris_callback (GObject *source_object,
ApplicationLaunchAsyncParameters *params;
ActivateParameters *activation_params;
char *uri;
- gboolean sandboxed;
GError *error = NULL;
params = user_data;
activation_params = params->activation_params;
uri = g_queue_pop_head (params->uris);
- sandboxed = g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS);
nautilus_launch_default_for_uri_finish (res, &error);
- if (!sandboxed && error != NULL && error->code != G_IO_ERROR_CANCELLED)
+ if (!is_sandboxed () && error != NULL && error->code != G_IO_ERROR_CANCELLED)
{
g_queue_push_tail (params->unhandled_uris, uri);
}
@@ -1618,8 +1630,7 @@ activate_files (ActivateParameters *parameters)
}
}
- if (!g_queue_is_empty (open_in_app_uris) &&
- g_file_test ("/.flatpak-info", G_FILE_TEST_EXISTS))
+ if (!g_queue_is_empty (open_in_app_uris) && is_sandboxed ())
{
const char *uri;
ApplicationLaunchAsyncParameters *async_params;