summaryrefslogtreecommitdiff
path: root/plugins/Db_autobackups/src/backup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Db_autobackups/src/backup.cpp')
-rw-r--r--plugins/Db_autobackups/src/backup.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/plugins/Db_autobackups/src/backup.cpp b/plugins/Db_autobackups/src/backup.cpp
index 5a175ba098..34b13ca302 100644
--- a/plugins/Db_autobackups/src/backup.cpp
+++ b/plugins/Db_autobackups/src/backup.cpp
@@ -304,18 +304,21 @@ static void BackupThread(void *backup_filename)
mir_free(backup_filename);
}
-void BackupStart(wchar_t *backup_filename)
+void BackupStart(wchar_t *backup_filename, bool bInThread)
{
LONG cur_state = InterlockedCompareExchange(&g_iState, 1, 0);
if (cur_state != 0) { // Backup allready in process.
ShowPopup(TranslateT("Database back up in process..."), TranslateT("Error"), nullptr);
return;
}
-
- wchar_t *tm = mir_wstrdup(backup_filename);
- if (mir_forkthread(BackupThread, tm) == INVALID_HANDLE_VALUE) {
+
+ if (bInThread) {
+ if (mir_forkthread(BackupThread, mir_wstrdup(backup_filename)) == INVALID_HANDLE_VALUE)
+ InterlockedExchange(&g_iState, 0); // Backup done.
+ }
+ else {
+ Backup(backup_filename);
InterlockedExchange(&g_iState, 0); // Backup done.
- mir_free(tm);
}
}