summaryrefslogtreecommitdiff
path: root/plugins/DbChecker/src/worker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/DbChecker/src/worker.cpp')
-rw-r--r--plugins/DbChecker/src/worker.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/plugins/DbChecker/src/worker.cpp b/plugins/DbChecker/src/worker.cpp
index 379a702613..b77bb94469 100644
--- a/plugins/DbChecker/src/worker.cpp
+++ b/plugins/DbChecker/src/worker.cpp
@@ -21,13 +21,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
void ProcessingDone(void);
-static void Finalize()
-{
- opts.dbChecker->Destroy();
- opts.dbChecker = nullptr;
-}
-
-void __cdecl WorkerThread(void *)
+void __cdecl WorkerThread(DbToolOptions *opts)
{
time_t ts = time(nullptr);
@@ -37,22 +31,24 @@ void __cdecl WorkerThread(void *)
DBCHeckCallback callback;
callback.pfnAddLogMessage = AddToStatus;
- opts.dbChecker->Start(&callback);
+ opts->dbChecker->Start(&callback);
for (int task = 0;; task++) {
if (callback.spaceProcessed / (callback.spaceUsed / 1000 + 1) > sp) {
sp = callback.spaceProcessed / (callback.spaceUsed / 1000 + 1);
SetProgressBar(sp);
}
- WaitForSingleObject(hEventRun, INFINITE);
- if (WaitForSingleObject(hEventAbort, 0) == WAIT_OBJECT_0) {
+ WaitForSingleObject(opts->hEventRun, INFINITE);
+ if (WaitForSingleObject(opts->hEventAbort, 0) == WAIT_OBJECT_0) {
AddToStatus(STATUS_FATAL, TranslateT("Processing aborted by user"));
break;
}
- int ret = opts.dbChecker->CheckDb(task);
+ int ret = opts->dbChecker->CheckDb(task);
if (ret == ERROR_OUT_OF_PAPER) {
- Finalize();
+ opts->dbChecker->Destroy();
+ opts->dbChecker = nullptr;
+
AddToStatus(STATUS_MESSAGE, TranslateT("Elapsed time: %d sec"), time(nullptr) - ts);
if (errorCount)
AddToStatus(STATUS_SUCCESS, TranslateT("All tasks completed but with errors (%d)"), errorCount);
@@ -64,5 +60,6 @@ void __cdecl WorkerThread(void *)
break;
}
+ opts->bFinished = true;
ProcessingDone();
}