diff --git a/include/common.h b/include/common.h index fd43850..6ce2674 100644 --- a/include/common.h +++ b/include/common.h @@ -47,6 +47,7 @@ static const int THEMES_PER_SCREEN = 4; bool homebrew; +bool splash_mode; enum TextureID { TEXTURE_FONT_RESERVED = 0, //used by pp2d for the font diff --git a/include/splashes.h b/include/splashes.h index f3d45e5..cc5ae4a 100644 --- a/include/splashes.h +++ b/include/splashes.h @@ -41,6 +41,9 @@ typedef struct{ bool is_zip; } Splash_s; +Splash_s *splashes_list; +int splash_count; + Result get_splashes(Splash_s** splashes_list, int *splash_count); void splash_install(Splash_s splash_to_install); void splash_delete(); diff --git a/source/camera.c b/source/camera.c index da51252..c6e05bb 100644 --- a/source/camera.c +++ b/source/camera.c @@ -98,7 +98,7 @@ void scan_qr(u16 *buf) { qr_mode = false; - http_get((char*)data.payload, "/Themes/"); + http_get((char*)data.payload, splash_mode ? "/Splashes/" : "/Themes/"); } } } @@ -257,7 +257,8 @@ Result http_get(char *url, char *path) remake_file(path_to_file, ArchiveSD, size); buf_to_file(size, path_to_file, ArchiveSD, (char*)buf); - get_themes(&themes_list, &theme_count); + if (splash_mode) get_splashes(&splashes_list, &splash_count); + else get_themes(&themes_list, &theme_count); exit_qr(); diff --git a/source/main.c b/source/main.c index 76ea46c..34074d9 100644 --- a/source/main.c +++ b/source/main.c @@ -80,8 +80,8 @@ int main(void) free(themes_list); themes_list = NULL; } - int splash_count = 0; - Splash_s *splashes_list = NULL; + splash_count = 0; + splashes_list = NULL; res = get_splashes(&splashes_list, &splash_count); if (R_FAILED(res)) { @@ -90,7 +90,7 @@ int main(void) splashes_list = NULL; } - bool splash_mode = false; + splash_mode = false; int selected_splash = 0; int selected_theme = 0; int previously_selected = 0; @@ -134,7 +134,7 @@ int main(void) if (kDown & KEY_R) { - if (splash_mode || preview_mode) { + if (preview_mode) { continue; } else { qr_mode = !qr_mode; diff --git a/source/splashes.c b/source/splashes.c index 864eb4b..163b11d 100644 --- a/source/splashes.c +++ b/source/splashes.c @@ -99,6 +99,13 @@ Result get_splashes(Splash_s** splashes_list, int *splash_count) if (R_FAILED(res)) return res; + if (*splashes_list != NULL) + { + free(*splashes_list); + *splashes_list = NULL; + *splash_count = 0; + } + u32 entries_read = 1; while (entries_read) {