From 8a42ccf9c0c2e69c6a24a365894e1e6c745587d8 Mon Sep 17 00:00:00 2001 From: localhorst Date: Fri, 12 Dec 2025 22:56:28 +0100 Subject: [PATCH] Refactor start of delete thread (#90) Reviewed-on: https://git.mosad.xyz/localhorst/reHDD/pulls/90 Co-authored-by: localhorst Co-committed-by: localhorst --- include/reHDD.h | 2 +- src/reHDD.cpp | 21 +++++++++------------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/include/reHDD.h b/include/reHDD.h index 86edc09..746f62b 100644 --- a/include/reHDD.h +++ b/include/reHDD.h @@ -95,7 +95,7 @@ private: static void ThreadScanDevices(); static void ThreadUserInput(); static void ThreadShred(Drive *const pDrive); - static void ThreadDelete(); + static void ThreadDelete(Drive *const pDrive); static void ThreadCheckFrozenDrives(); static void handleArrowKey(TUI::UserInput userInput); static void handleEnter(); diff --git a/src/reHDD.cpp b/src/reHDD.cpp index d362463..ab00ef5 100644 --- a/src/reHDD.cpp +++ b/src/reHDD.cpp @@ -284,16 +284,16 @@ void reHDD::ThreadShred(Drive *const pDrive) } } -void reHDD::ThreadDelete() +void reHDD::ThreadDelete(Drive *const pDrive) { - Drive *tmpSelectedDrive = getSelectedDrive(); - if (tmpSelectedDrive != nullptr) + if (pDrive != nullptr) { - tmpSelectedDrive->setActionStartTimestamp(); // save timestamp at start of deleting - Delete::deleteDrive(tmpSelectedDrive); // blocking, no thread - tmpSelectedDrive->state = Drive::TaskState::NONE; // delete finished - tmpSelectedDrive->bWasDeleted = true; - Logger::logThis()->info("Finished delete for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial()); + pDrive->state = Drive::TaskState::DELETE_ACTIVE; + pDrive->setActionStartTimestamp(); // save timestamp at start of deleting + Delete::deleteDrive(pDrive); // blocking, no thread + pDrive->state = Drive::TaskState::NONE; // delete finished + pDrive->bWasDeleted = true; + Logger::logThis()->info("Finished delete for: " + pDrive->getModelName() + "-" + pDrive->getSerial()); ui->updateTUI(&listDrives, u16SelectedEntry); } } @@ -693,16 +693,13 @@ void reHDD::handleEnter() if (tmpSelectedDrive->state == Drive::TaskState::SHRED_SELECTED) { Logger::logThis()->info("Started shred/check for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial()); - // task for drive is running --> don't show more task option thread(ThreadShred, tmpSelectedDrive).detach(); } if (tmpSelectedDrive->state == Drive::TaskState::DELETE_SELECTED) { Logger::logThis()->info("Started delete for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial()); - tmpSelectedDrive->state = Drive::TaskState::DELETE_ACTIVE; - // task for drive is running --> don't show more task options - thread(ThreadDelete).detach(); + thread(ThreadDelete, tmpSelectedDrive).detach(); } } }