From 17410fd8a9ec05d555944fc580ccd2f64cbaf503 Mon Sep 17 00:00:00 2001 From: J-D-K Date: Fri, 10 Oct 2025 13:49:05 -0400 Subject: [PATCH] tasks/backup.cpp fixes. --- Makefile | 2 +- include/appstates/MainMenuState.hpp | 3 -- include/builddate.hpp | 2 +- include/ui/Menu.hpp | 5 +++- include/ui/TitleView.hpp | 3 ++ romfs/Sound/PopMessage.wav | Bin 22212 -> 13450 bytes romfs/Textures/Frame.png | Bin 617 -> 1078 bytes source/appstates/BackupMenuState.cpp | 2 +- source/appstates/MainMenuState.cpp | 11 +------ source/appstates/TitleSelectState.cpp | 1 + source/tasks/backup.cpp | 40 +++++++++++--------------- source/ui/Menu.cpp | 8 ++++-- source/ui/TitleView.cpp | 2 ++ 13 files changed, 36 insertions(+), 43 deletions(-) diff --git a/Makefile b/Makefile index 2b794e4..c530ee2 100644 --- a/Makefile +++ b/Makefile @@ -39,7 +39,7 @@ INCLUDES := include ./Libraries/FsLib/Switch/FsLib/include ./Libraries/SDLLib/SD EXEFS_SRC := exefs_src APP_TITLE := JKSV APP_AUTHOR := JK -APP_VERSION := 10.09.2025 +APP_VERSION := 10.10.2025 ROMFS := romfs ICON := icon.jpg diff --git a/include/appstates/MainMenuState.hpp b/include/appstates/MainMenuState.hpp index ae5eb52..b2d9364 100644 --- a/include/appstates/MainMenuState.hpp +++ b/include/appstates/MainMenuState.hpp @@ -104,9 +104,6 @@ class MainMenuState final : public BaseState /// @brief Silently checks for an update in the background. void check_for_update(); - /// @brief Plays the little boot sound. - void play_boot_sound(); - /// @brief Pushes the target state to the vector. void push_target_state(); diff --git a/include/builddate.hpp b/include/builddate.hpp index 63aaee9..5aac9cd 100644 --- a/include/builddate.hpp +++ b/include/builddate.hpp @@ -3,6 +3,6 @@ namespace builddate { inline constexpr int MONTH = 10; - inline constexpr int DAY = 9; + inline constexpr int DAY = 10; inline constexpr int YEAR = 2025; } diff --git a/include/ui/Menu.hpp b/include/ui/Menu.hpp index 3674dda..7c0983b 100644 --- a/include/ui/Menu.hpp +++ b/include/ui/Menu.hpp @@ -71,6 +71,9 @@ namespace ui /// @brief Returns if the menu has no options. bool is_empty() const noexcept; + /// @brief Plays the cursor sound effect since it can be conditional. + void play_sound() noexcept; + /// @brief Resets the menu and returns it to an empty, default state. void reset(bool full = true); @@ -140,7 +143,7 @@ namespace ui void initialize_ui_elements(); /// @brief Ensures the menu cursor sound is loaded. - void initialize_cursor_sound(); + void initialize_sounds(); /// @brief Updates the text scroll for the currently highlighted option. void update_scroll_text(); diff --git a/include/ui/TitleView.hpp b/include/ui/TitleView.hpp index 5fda390..af2164c 100644 --- a/include/ui/TitleView.hpp +++ b/include/ui/TitleView.hpp @@ -46,6 +46,9 @@ namespace ui /// @brief Resets the view to its default, empty state. void reset(); + /// @brief Plays the cursor sound. + void play_sound() noexcept; + private: /// @brief Pointer to user passed. data::User *m_user{}; diff --git a/romfs/Sound/PopMessage.wav b/romfs/Sound/PopMessage.wav index 36b8be9827e7cd441f953e0a7af6146f069a237b..1adfc1699ec37b0277f4646ab73af3dc410c082b 100644 GIT binary patch literal 13450 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 D954K4 literal 22212 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 delta 498 zcmVejp)w&PbX2zXJ^+oK z1qGcAt%^>~>~g-n^S5(GSW~LH2Q+~i zPyvpBGEm@mngdf{1Pp;k;6X$tY(lD9Rn==%ebepf&HiU~m4823V*CKO09rut+l?a6 zY*4CtoN;*ubb%`o8LthXs&(KJX#Az=AHej0j)?SE0;uXK(6;S-tHxJ=41uj0@LyaR{EE)TpgpYm7&n#Qhed{xaP$9xY}5mg-n z`#vM#$GmX2uI^A)EfSU4h7nS^Eo~b8f8TYtWtQ o6V4wsSm(ih9`?upaq_s$2YLI*rlxb&{r~^~07*qoM6N<$f{3~B@Bjb+ diff --git a/source/appstates/BackupMenuState.cpp b/source/appstates/BackupMenuState.cpp index 2eba56f..009759d 100644 --- a/source/appstates/BackupMenuState.cpp +++ b/source/appstates/BackupMenuState.cpp @@ -193,7 +193,7 @@ void BackupMenuState::save_data_check() void BackupMenuState::initialize_remote_storage() { remote::Storage *remote = remote::get_remote_storage(); - if (error::is_null(remote)) { return; } + if (!remote) { return; } const bool supportsUtf8 = remote->supports_utf8(); const std::string_view remoteTitle = supportsUtf8 ? m_titleInfo->get_title() : m_titleInfo->get_path_safe_title(); diff --git a/source/appstates/MainMenuState.cpp b/source/appstates/MainMenuState.cpp index 4d7bc17..a0c077c 100644 --- a/source/appstates/MainMenuState.cpp +++ b/source/appstates/MainMenuState.cpp @@ -35,7 +35,6 @@ MainMenuState::MainMenuState() MainMenuState::initialize_view_states(); MainMenuState::initialize_data_struct(); MainMenuState::check_for_update(); - MainMenuState::play_boot_sound(); } void MainMenuState::update() @@ -137,15 +136,6 @@ void MainMenuState::initialize_data_struct() void MainMenuState::check_for_update() { sys::threadpool::push_job(tasks::update::check_for_update, m_dataStruct); } -void MainMenuState::play_boot_sound() -{ - // static constexpr std::string_view BOOT_NAME = "BootSound"; - // static constexpr const char *BOOT_PATH = "romfs:/Sound/Boot.wav"; - - // sdl::SharedSound bootSound = sdl::SoundManager::load(BOOT_NAME, BOOT_PATH); - // bootSound->play(); -} - void MainMenuState::push_target_state() { const int popTicks = ui::PopMessageManager::DEFAULT_TICKS; @@ -169,6 +159,7 @@ void MainMenuState::push_target_state() auto &target = sm_states[selected]; target->reactivate(); StateManager::push_state(target); + m_mainMenu->play_sound(); } void MainMenuState::create_user_options() diff --git a/source/appstates/TitleSelectState.cpp b/source/appstates/TitleSelectState.cpp index dbc5e47..54489d9 100644 --- a/source/appstates/TitleSelectState.cpp +++ b/source/appstates/TitleSelectState.cpp @@ -81,6 +81,7 @@ void TitleSelectState::create_backup_menu() auto backupMenu = std::make_shared(m_user, titleInfo, saveInfo); StateManager::push_state(backupMenu); + m_titleView->play_sound(); } void TitleSelectState::create_title_option_menu() diff --git a/source/tasks/backup.cpp b/source/tasks/backup.cpp index ed254c0..3e80043 100644 --- a/source/tasks/backup.cpp +++ b/source/tasks/backup.cpp @@ -481,13 +481,9 @@ static void auto_backup(sys::ProgressTask *task, BackupMenuState::TaskData taskD remote::Storage *remote = remote::get_remote_storage(); data::User *user = taskData->user; data::TitleInfo *titleInfo = taskData->titleInfo; + const FsSaveDataInfo *saveInfo = taskData->saveInfo; fslib::Path &target = taskData->path; - BackupMenuState *spawningState = taskData->spawningState; - if (error::is_null(user) || error::is_null(titleInfo)) { return; } - - const uint64_t applicationID = titleInfo->get_application_id(); - const FsSaveDataInfo *saveInfo = user->get_save_info_by_id(applicationID); - if (error::is_null(saveInfo)) { return; } + if (error::is_null(user) || error::is_null(titleInfo) || error::is_null(saveInfo)) { return; } { fs::ScopedSaveMount testMount{fs::DEFAULT_SAVE_MOUNT, saveInfo, false}; @@ -504,18 +500,13 @@ static void auto_backup(sys::ProgressTask *task, BackupMenuState::TaskData taskD std::string backupName = stringutil::get_formatted_string("AUTO - %s - %s", safeNickname, dateString.c_str()); if (zip) { backupName += STRING_ZIP_EXT; } - auto tempData = std::make_shared(); - tempData->task = task; - tempData->user = user; - tempData->titleInfo = titleInfo; - tempData->spawningState = spawningState; - tempData->killTask = false; + taskData->killTask = false; if (autoUpload && remote) { - tempData->remoteName = std::move(backupName); + taskData->remoteName = std::move(backupName); - tasks::backup::create_new_backup_remote(tempData); + tasks::backup::create_new_backup_remote(taskData); } else { @@ -525,22 +516,25 @@ static void auto_backup(sys::ProgressTask *task, BackupMenuState::TaskData taskD fslib::Path autoTarget{target.sub_path(lastSlash) / backupName}; - tempData->path = std::move(autoTarget); + // This is used to move and store the path before using the local auto path. + fslib::Path storePath = std::move(taskData->path); + // Swap em. + taskData->path = std::move(autoTarget); - tasks::backup::create_new_backup_local(tempData); + tasks::backup::create_new_backup_local(taskData); + + // Swap em back. + taskData->path = std::move(storePath); } } static bool read_and_process_meta(const fslib::Path &targetDir, BackupMenuState::TaskData taskData, sys::ProgressTask *task) { - data::User *user = taskData->user; - data::TitleInfo *titleInfo = taskData->titleInfo; + data::User *user = taskData->user; + data::TitleInfo *titleInfo = taskData->titleInfo; + const FsSaveDataInfo *saveInfo = taskData->saveInfo; if (error::is_null(task)) { return false; } - else if (error::is_null(user) || error::is_null(titleInfo)) { return false; } - - const uint64_t applicationID = titleInfo->get_application_id(); - const FsSaveDataInfo *saveInfo = user->get_save_info_by_id(applicationID); - if (error::is_null(saveInfo)) { return false; } + else if (error::is_null(user) || error::is_null(titleInfo) || error::is_null(saveInfo)) { return false; } const int popTicks = ui::PopMessageManager::DEFAULT_TICKS; { diff --git a/source/ui/Menu.cpp b/source/ui/Menu.cpp index e39381b..a929368 100644 --- a/source/ui/Menu.cpp +++ b/source/ui/Menu.cpp @@ -20,7 +20,7 @@ ui::Menu::Menu(int x, int y, int width, int fontSize, int renderTargetHeight) Menu::initialize_transition(); Menu::initialize_option_target(); Menu::initialize_ui_elements(); - Menu::initialize_cursor_sound(); + Menu::initialize_sounds(); } void ui::Menu::update(bool hasFocus) @@ -114,6 +114,8 @@ void ui::Menu::reset(bool full) bool ui::Menu::is_empty() const noexcept { return m_options.empty(); } +void ui::Menu::play_sound() noexcept { sm_cursor->play(); } + void ui::Menu::calculate_alignments() noexcept { m_optionHeight = std::floor(static_cast(m_fontSize) * 1.8f); @@ -156,7 +158,7 @@ void ui::Menu::initialize_ui_elements() false); } -void ui::Menu::initialize_cursor_sound() +void ui::Menu::initialize_sounds() { static constexpr std::string_view CURSOR_NAME = "MenuCursor"; static constexpr const char *CURSOR_PATH = "romfs:/Sound/MenuCursor.wav"; @@ -194,7 +196,7 @@ void ui::Menu::handle_input() if (m_selected < 0) { m_selected = 0; } else if (m_selected >= optionsSize) { m_selected = optionsSize - 1; } - if (m_selected != previousSelected) { sm_cursor->play(); } + if (m_selected != previousSelected) { Menu::play_sound(); } } void ui::Menu::update_scrolling() diff --git a/source/ui/TitleView.cpp b/source/ui/TitleView.cpp index f0a2bca..e8f41bf 100644 --- a/source/ui/TitleView.cpp +++ b/source/ui/TitleView.cpp @@ -112,6 +112,8 @@ void ui::TitleView::reset() for (ui::TitleTile ¤tTile : m_titleTiles) { currentTile.reset(); } } +void ui::TitleView::play_sound() noexcept { sm_cursor->play(); } + void ui::TitleView::initialize_static_members() { static constexpr std::string_view CURSOR_NAME = "MenuCursor";