diff --git a/steam-runtime-tools/graphics.c b/steam-runtime-tools/graphics.c index d9f47fe79324366013f0b8aba50cc75a4a1560c3..3dc05ef25f20477edd737e594d1ea71c0e9ea671 100644 --- a/steam-runtime-tools/graphics.c +++ b/steam-runtime-tools/graphics.c @@ -5833,7 +5833,8 @@ vulkan_layer_parse_json (const gchar *path, * layers, least-important first */ static GList * -load_vulkan_layer_json (const gchar *path) +load_vulkan_layer_json (const gchar *sysroot, + const gchar *path) { g_autoptr(GError) error = NULL; g_autoptr(JsonParser) parser = NULL; @@ -5843,17 +5844,27 @@ load_vulkan_layer_json (const gchar *path) JsonObject *json_layer = NULL; JsonArray *json_layers = NULL; const gchar *file_format_version = NULL; + g_autofree gchar *in_sysroot = NULL; + g_autofree gchar *canon = NULL; guint length; gsize i; GList *ret_list = NULL; g_return_val_if_fail (path != NULL, NULL); - g_debug ("Attempting to load the json layer from %s", path); + if (!g_path_is_absolute (path)) + { + canon = g_canonicalize_filename (path, NULL); + path = canon; + } + + in_sysroot = g_build_filename (sysroot, path, NULL); + + g_debug ("Attempting to load the json layer from %s", in_sysroot); parser = json_parser_new (); - if (!json_parser_load_from_file (parser, path, &error)) + if (!json_parser_load_from_file (parser, in_sysroot, &error)) { g_debug ("error %s", error->message); return g_list_prepend (ret_list, srt_vulkan_layer_new_error (path, error)); @@ -5954,21 +5965,11 @@ vulkan_layer_load_json (const char *sysroot, const char *filename, GList **list) { - g_autofree gchar *canon = NULL; - g_autofree gchar *in_sysroot = NULL; - g_return_if_fail (sysroot != NULL); + g_return_if_fail (filename != NULL); g_return_if_fail (list != NULL); - if (!g_path_is_absolute (filename)) - { - canon = g_canonicalize_filename (filename, NULL); - filename = canon; - } - - in_sysroot = g_build_filename (sysroot, filename, NULL); - - *list = g_list_concat (load_vulkan_layer_json (in_sysroot), *list); + *list = g_list_concat (load_vulkan_layer_json (sysroot, filename), *list); } static void