From 1cd18f61a2b604e07d7dcfdec4cb63e88c99ec97 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 3 Jul 2024 02:05:13 +0200 Subject: [PATCH] Updater: Smooth percent for cleanup steps --nobuild --- .../updater/util/update_task_worker_backup.c | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/applications/system/updater/util/update_task_worker_backup.c b/applications/system/updater/util/update_task_worker_backup.c index ca0ea6e2d..7c0ff3494 100644 --- a/applications/system/updater/util/update_task_worker_backup.c +++ b/applications/system/updater/util/update_task_worker_backup.c @@ -54,25 +54,20 @@ static void update_task_cleanup_resources(UpdateTask* update_task) { ResourceManifestEntry* entry_ptr = NULL; /* Iterate over manifest and calculate entries count */ - uint32_t n_file_entries = 1, n_dir_entries = 1; + uint32_t n_total_entries = 1; while((entry_ptr = resource_manifest_reader_next(manifest_reader))) { - if(entry_ptr->type == ResourceManifestEntryTypeFile) { - n_file_entries++; - } else if(entry_ptr->type == ResourceManifestEntryTypeDirectory) { - n_dir_entries++; - } + n_total_entries++; } resource_manifest_rewind(manifest_reader); update_task_set_progress(update_task, UpdateTaskStageResourcesFileCleanup, 0); uint32_t n_processed_file_entries = 0; while((entry_ptr = resource_manifest_reader_next(manifest_reader))) { + update_task_set_progress( + update_task, + UpdateTaskStageProgress, + (n_processed_file_entries++ * 100) / n_total_entries); if(entry_ptr->type == ResourceManifestEntryTypeFile) { - update_task_set_progress( - update_task, - UpdateTaskStageProgress, - (n_processed_file_entries++ * 100) / n_file_entries); - FuriString* file_path = furi_string_alloc(); path_concat( STORAGE_EXT_PATH_PREFIX, furi_string_get_cstr(entry_ptr->name), file_path); @@ -94,12 +89,11 @@ static void update_task_cleanup_resources(UpdateTask* update_task) { update_task_set_progress(update_task, UpdateTaskStageResourcesDirCleanup, 0); uint32_t n_processed_dir_entries = 0; while((entry_ptr = resource_manifest_reader_previous(manifest_reader))) { + update_task_set_progress( + update_task, + UpdateTaskStageProgress, + (n_processed_dir_entries++ * 100) / n_total_entries); if(entry_ptr->type == ResourceManifestEntryTypeDirectory) { - update_task_set_progress( - update_task, - UpdateTaskStageProgress, - (n_processed_dir_entries++ * 100) / n_dir_entries); - FuriString* folder_path = furi_string_alloc(); do {