From 1c24d08eef0e229c774869ae1afba7f9890c147b Mon Sep 17 00:00:00 2001 From: Alex Taber Date: Tue, 8 May 2018 18:17:14 -0400 Subject: [PATCH] restore shuffle install speed back to roughly 30 seconds (#156) --- source/themes.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/source/themes.c b/source/themes.c index e4914ec..8a23814 100644 --- a/source/themes.c +++ b/source/themes.c @@ -56,6 +56,8 @@ static Result install_theme_internal(Entry_List_s themes, int installmode) return MAKERESULT(RL_USAGE, RS_INVALIDARG, RM_COMMON, RD_INVALID_SELECTION); } + char * padded = NULL; + int shuffle_count = 0; Handle body_cache_handle; @@ -83,13 +85,15 @@ static Result install_theme_internal(Entry_List_s themes, int installmode) } shuffle_body_sizes[shuffle_count] = body_size; - FSFILE_Write(body_cache_handle, NULL, BODY_CACHE_SIZE * shuffle_count, body, body_size, FS_WRITE_FLUSH); + + padded = calloc(BODY_CACHE_SIZE, sizeof(char)); + memcpy(padded, body, body_size); free(body); - u8 * blank = calloc(BODY_CACHE_SIZE - body_size, sizeof(u8)); - if(blank) - FSFILE_Write(body_cache_handle, NULL, (BODY_CACHE_SIZE * shuffle_count) + body_size, blank, BODY_CACHE_SIZE - body_size, FS_WRITE_FLUSH); - free(blank); + FSFILE_Write(body_cache_handle, NULL, BODY_CACHE_SIZE * shuffle_count, padded, BODY_CACHE_SIZE, FS_WRITE_FLUSH); + + free(padded); + padded = NULL; } if(installmode & THEME_INSTALL_BGM) @@ -111,15 +115,15 @@ static Result install_theme_internal(Entry_List_s themes, int installmode) Handle bgm_cache_handle; FSUSER_OpenFile(&bgm_cache_handle, ArchiveThemeExt, fsMakePath(PATH_ASCII, bgm_cache_path), FS_OPEN_WRITE, 0); - FSFILE_Write(bgm_cache_handle, NULL, 0, music, music_size, FS_WRITE_FLUSH); + padded = calloc(BGM_MAX_SIZE, sizeof(char)); + memcpy(padded, music, music_size); free(music); - u8 * blank = calloc(BGM_MAX_SIZE - music_size, sizeof(u8)); - if(blank) - FSFILE_Write(bgm_cache_handle, NULL, music_size, blank, BGM_MAX_SIZE - music_size, FS_WRITE_FLUSH); - free(blank); + FSFILE_Write(bgm_cache_handle, NULL, 0, padded, BGM_MAX_SIZE, 0); FSFILE_Close(bgm_cache_handle); + free(padded); + padded = NULL; } shuffle_count++;