[gnome-builder/gnome-builder-3-24] flatpak: do breadth first search
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/gnome-builder-3-24] flatpak: do breadth first search
- Date: Sat, 8 Apr 2017 22:40:51 +0000 (UTC)
commit 269d9aefc250e8c9d54b72edda3791999577f8d4
Author: Christian Hergert <chergert redhat com>
Date: Sat Apr 8 15:39:51 2017 -0700
flatpak: do breadth first search
We want to exhaust the current enumerator before recursing into any
child directories. This also helps prioritize directories closer to the
root of the project tree.
.../flatpak/gbp-flatpak-build-system-discovery.c | 21 +++++++++++++++++++-
1 files changed, 20 insertions(+), 1 deletions(-)
---
diff --git a/plugins/flatpak/gbp-flatpak-build-system-discovery.c
b/plugins/flatpak/gbp-flatpak-build-system-discovery.c
index f7ac007..ca4622a 100644
--- a/plugins/flatpak/gbp-flatpak-build-system-discovery.c
+++ b/plugins/flatpak/gbp-flatpak-build-system-discovery.c
@@ -42,6 +42,7 @@ gbp_flatpak_build_system_discovery_find_manifests (GFile *directory,
GCancellable *cancellable)
{
g_autoptr(GFileEnumerator) enumerator = NULL;
+ g_autoptr(GPtrArray) child_dirs = NULL;
gpointer infoptr;
g_assert (G_IS_FILE (directory));
@@ -77,7 +78,12 @@ gbp_flatpak_build_system_discovery_find_manifests (GFile *directory,
continue;
if (depth < DISCOVERY_MAX_DEPTH - 1)
- gbp_flatpak_build_system_discovery_find_manifests (file, results, depth + 1, cancellable);
+ {
+ if (child_dirs == NULL)
+ child_dirs = g_ptr_array_new_with_free_func (g_object_unref);
+ g_ptr_array_add (child_dirs, g_steal_pointer (&file));
+ continue;
+ }
}
g_regex_match (filename_regex, name, 0, &match_info);
@@ -86,6 +92,19 @@ gbp_flatpak_build_system_discovery_find_manifests (GFile *directory,
g_ptr_array_add (results, g_steal_pointer (&file));
}
+
+ if (child_dirs != NULL)
+ {
+ for (guint i = 0; i < child_dirs->len; i++)
+ {
+ GFile *file = g_ptr_array_index (child_dirs, i);
+
+ if (g_cancellable_is_cancelled (cancellable))
+ return;
+
+ gbp_flatpak_build_system_discovery_find_manifests (file, results, depth + 1, cancellable);
+ }
+ }
}
static gchar *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]