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(); } } }