From 2c2e28046ed2d35c86db83b42a068ad9878c0241 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Tue, 25 Dec 2012 19:02:16 +0000 Subject: creatig backup in separate thread git-svn-id: http://svn.miranda-ng.org/main/trunk@2841 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db_autobackups/src/backup.cpp | 20 +++++++++++--------- plugins/Db_autobackups/src/headers.h | 1 + plugins/Db_autobackups/src/main.cpp | 12 ++++++------ 3 files changed, 18 insertions(+), 15 deletions(-) (limited to 'plugins/Db_autobackups') diff --git a/plugins/Db_autobackups/src/backup.cpp b/plugins/Db_autobackups/src/backup.cpp index a6b78dace2..40373ed461 100644 --- a/plugins/Db_autobackups/src/backup.cpp +++ b/plugins/Db_autobackups/src/backup.cpp @@ -30,11 +30,10 @@ INT_PTR DBSaveAs(WPARAM wParam, LPARAM lParam) { HWND progress_dialog = 0; TCHAR fname_buff[MAX_PATH], szFilter[128]; - int i; OPENFILENAME ofn = {0}; CallService(MS_DB_GETPROFILENAMET,MAX_PATH,(LPARAM)fname_buff); - i = mir_sntprintf(szFilter, 64, _T("%s (*.dat)"), TranslateT("Miranda Databases")) + 1; + int i = mir_sntprintf(szFilter, 64, _T("%s (*.dat)"), TranslateT("Miranda Databases")) + 1; _tcscpy(szFilter + i, _T("*.dat")); i += 6; i += mir_sntprintf(szFilter + i, 48, _T("%s (*.*)"), TranslateT("All Files")) + 1; @@ -50,7 +49,7 @@ INT_PTR DBSaveAs(WPARAM wParam, LPARAM lParam) ofn.lpstrDefExt = _T("dat"); if (GetSaveFileName(&ofn)) - Backup(fname_buff); + mir_forkthread(BackupThread, (void*)fname_buff); return 0; } @@ -64,18 +63,16 @@ struct FileNameFound_Tag int RotateBackups(HWND progress_dialog, DWORD start_time) { TCHAR backupfilename1[MAX_PATH] = {0}, backupfilename2[MAX_PATH] = {0}, backupfolderTmp[MAX_PATH] = {0}; - TCHAR* backupfolder; unsigned int i = 0; HWND prog = GetDlgItem(progress_dialog, IDC_PROGRESS); MSG msg; WIN32_FIND_DATA FindFileData; - HANDLE hFind; - backupfolder = Utils_ReplaceVarsT(options.folder); + TCHAR *backupfolder = Utils_ReplaceVarsT(options.folder); mir_sntprintf(backupfolderTmp, SIZEOF(backupfolderTmp), _T("%s\\*"), backupfolder); - hFind = FindFirstFile(backupfolderTmp, &FindFileData); + HANDLE hFind = FindFirstFile(backupfolderTmp, &FindFileData); if (hFind == INVALID_HANDLE_VALUE) return 0; _tcscpy(FileNameFound.Name, _T("")); @@ -120,6 +117,11 @@ int RotateBackups(HWND progress_dialog, DWORD start_time) return 0; } +void BackupThread(void* backup_filename) +{ + Backup((TCHAR*)backup_filename); +} + int Backup(TCHAR* backup_filename) { TCHAR source_file[MAX_PATH] = {0}, dest_file[MAX_PATH] = {0}; @@ -205,7 +207,7 @@ int Backup(TCHAR* backup_filename) VOID CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime) { time_t t = time(0), diff = t - (time_t)DBGetContactSettingDword(0, "AutoBackups", "LastBackupTimestamp", (DWORD)t); if(diff > (time_t)(options.period * (options.period_type == PT_MINUTES ? 60 : (options.period_type == PT_HOURS ? 60 * 60 : 60 * 60 * 24 )))) - Backup(NULL); + mir_forkthread(BackupThread, NULL); } int SetBackupTimer(void) @@ -225,6 +227,6 @@ int SetBackupTimer(void) INT_PTR ABService(WPARAM wParam, LPARAM lParam) { - Backup((TCHAR*)wParam); + mir_forkthread(BackupThread, (void*)wParam); return 0; } diff --git a/plugins/Db_autobackups/src/headers.h b/plugins/Db_autobackups/src/headers.h index eab2ffc667..966bdcde73 100644 --- a/plugins/Db_autobackups/src/headers.h +++ b/plugins/Db_autobackups/src/headers.h @@ -43,6 +43,7 @@ int SetBackupTimer(void); int OptionsInit(WPARAM wParam, LPARAM lParam); int LoadOptions(void); HWND CreateToolTip(HWND hwndParent, LPTSTR ptszText, LPTSTR ptszTitle); +void BackupThread(void* backup_filename); extern HINSTANCE hInst; extern TCHAR* profilePath; diff --git a/plugins/Db_autobackups/src/main.cpp b/plugins/Db_autobackups/src/main.cpp index 055fc80df2..e494f0a5d9 100644 --- a/plugins/Db_autobackups/src/main.cpp +++ b/plugins/Db_autobackups/src/main.cpp @@ -35,9 +35,9 @@ static IconItem iconList[] = { INT_PTR BackupServiceTrgr(WPARAM wParam, LPARAM lParam) { - if(wParam & ACT_PERFORM) { - return Backup(NULL); - } + if(wParam & ACT_PERFORM) + mir_forkthread(BackupThread, NULL); + return 0; } @@ -101,7 +101,7 @@ static int ModulesLoad(WPARAM wParam, LPARAM lParam) hHooks[1] = HookEvent(ME_OPT_INITIALISE, OptionsInit); if(options.backup_types & BT_START) - Backup(NULL); + mir_forkthread(BackupThread, NULL); return 0; } @@ -111,14 +111,14 @@ int PreShutdown(WPARAM wParam, LPARAM lParam) { if(options.backup_types & BT_EXIT) { options.disable_popups = 1; // Don't try to show popups on exit - Backup(NULL); + mir_forkthread(BackupThread, NULL); } return 0; } void SysInit() { - mir_getLP( &pluginInfo ); + mir_getLP(&pluginInfo); OleInitialize(0); hServices[0] = CreateServiceFunction(MS_AB_BACKUP, ABService); -- cgit v1.2.3