Unload HF plugin before saving to avoid memory pressure

This commit is contained in:
CinderSocket
2026-03-27 23:35:55 -07:00
parent 86b6b49cef
commit b13a91576a
3 changed files with 9 additions and 10 deletions

View File

@@ -60,32 +60,27 @@ bool seader_scene_card_menu_on_event(void* context, SceneManagerEvent event) {
scene_manager_set_scene_state(
seader->scene_manager, SeaderSceneCardMenu, SubmenuIndexSave);
seader->credential->save_format = SeaderCredentialSaveFormatAgnostic;
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
consumed = true;
consumed = seader_hf_request_teardown(seader, SeaderHfTeardownActionPrepareSave);
} else if(event.event == SubmenuIndexSavePicopass) {
scene_manager_set_scene_state(
seader->scene_manager, SeaderSceneCardMenu, SubmenuIndexSavePicopass);
seader->credential->save_format = SeaderCredentialSaveFormatPicopass;
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
consumed = true;
consumed = seader_hf_request_teardown(seader, SeaderHfTeardownActionPrepareSave);
} else if(event.event == SubmenuIndexSaveRFID) {
scene_manager_set_scene_state(
seader->scene_manager, SeaderSceneCardMenu, SubmenuIndexSaveRFID);
seader->credential->save_format = SeaderCredentialSaveFormatRFID;
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
consumed = true;
consumed = seader_hf_request_teardown(seader, SeaderHfTeardownActionPrepareSave);
} else if(event.event == SubmenuIndexSaveSR) {
scene_manager_set_scene_state(
seader->scene_manager, SeaderSceneCardMenu, SubmenuIndexSaveSR);
seader->credential->save_format = SeaderCredentialSaveFormatSR;
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
consumed = true;
consumed = seader_hf_request_teardown(seader, SeaderHfTeardownActionPrepareSave);
} else if(event.event == SubmenuIndexSaveMFC) {
scene_manager_set_scene_state(
seader->scene_manager, SeaderSceneCardMenu, SubmenuIndexSaveMFC);
seader->credential->save_format = SeaderCredentialSaveFormatMFC;
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
consumed = true;
consumed = seader_hf_request_teardown(seader, SeaderHfTeardownActionPrepareSave);
}
} else if(event.type == SceneManagerEventTypeBack) {
consumed = scene_manager_previous_scene(seader->scene_manager);

View File

@@ -1412,6 +1412,9 @@ bool seader_hf_finish_teardown_action(Seader* seader) {
seader->board_status = SeaderBoardStatusRetryRequested;
scene_manager_next_scene(seader->scene_manager, SeaderSceneStart);
return true;
case SeaderHfTeardownActionPrepareSave:
scene_manager_next_scene(seader->scene_manager, SeaderSceneSaveName);
return true;
case SeaderHfTeardownActionRestartRead:
scene_manager_next_scene(seader->scene_manager, SeaderSceneRead);
return true;

View File

@@ -27,6 +27,7 @@ typedef enum {
SeaderHfTeardownActionSamPresent,
SeaderHfTeardownActionBoardMissing,
SeaderHfTeardownActionAutoRecover,
SeaderHfTeardownActionPrepareSave,
SeaderHfTeardownActionRestartRead,
SeaderHfTeardownActionStopApp,
} SeaderHfTeardownAction;