diff options
author | António Fernandes <antoniof@gnome.org> | 2020-12-30 16:53:27 +0000 |
---|---|---|
committer | António Fernandes <antoniojpfernandes@gmail.com> | 2021-03-12 15:47:05 +0000 |
commit | f3ef2e812e567d5252d5b5a1242a5d1390556dba (patch) | |
tree | 49831974ed8afd87d2219c7cab761feb7597825b | |
parent | 080f83385ff79a8be54ee31e7a45422138226f1f (diff) | |
download | nautilus-f3ef2e812e567d5252d5b5a1242a5d1390556dba.tar.gz |
mime-actions: Check flatpak-info only once
-rw-r--r-- | src/nautilus-mime-actions.c | 21 |
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; |