From e17d5ebb91714f2680c8699b22f460e26501fc0a Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Tue, 5 Feb 2019 17:51:03 +0100 Subject: [PATCH] Deduplicate code Signed-off-by: Sven Strickroth --- src/TortoiseProc/ChangedDlg.cpp | 33 ++++---------- src/TortoiseProc/SyncDlg.cpp | 96 ++++++++--------------------------------- src/TortoiseProc/SyncDlg.h | 6 ++- 3 files changed, 31 insertions(+), 104 deletions(-) diff --git a/src/TortoiseProc/ChangedDlg.cpp b/src/TortoiseProc/ChangedDlg.cpp index 3f58ee5c8..e87d6ea37 100644 --- a/src/TortoiseProc/ChangedDlg.cpp +++ b/src/TortoiseProc/ChangedDlg.cpp @@ -1,6 +1,6 @@ // TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2008-2018 - TortoiseGit +// Copyright (C) 2008-2019 - TortoiseGit // Copyright (C) 2003-2008 - TortoiseSVN // This program is free software; you can redistribute it and/or @@ -135,10 +135,7 @@ BOOL CChangedDlg::OnInitDialog() // first start a thread to obtain the status without // blocking the dialog - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - { - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); - } + OnBnClickedRefresh(); return TRUE; } @@ -272,10 +269,7 @@ void CChangedDlg::OnBnClickedShowunversioned() else { if(m_bShowUnversioned) - { - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); - } + OnBnClickedRefresh(); } UpdateStatistics(); } @@ -296,10 +290,7 @@ void CChangedDlg::OnBnClickedShowignored() if (m_FileListCtrl.m_FileLoaded & CGitStatusListCtrl::FILELIST_IGNORE) m_FileListCtrl.Show(UpdateShowFlags()); else if (m_bShowIgnored) - { - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); - } + OnBnClickedRefresh(); UpdateStatistics(); } @@ -310,17 +301,13 @@ void CChangedDlg::OnBnClickedShowlocalchangesignored() if (m_FileListCtrl.m_FileLoaded & CGitStatusListCtrl::FILELIST_LOCALCHANGESIGNORED) m_FileListCtrl.Show(UpdateShowFlags()); else if (m_bShowLocalChangesIgnored) - { - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); - } + OnBnClickedRefresh(); UpdateStatistics(); } LRESULT CChangedDlg::OnSVNStatusListCtrlNeedsRefresh(WPARAM, LPARAM) { - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); + OnBnClickedRefresh(); return 0; } @@ -338,12 +325,8 @@ BOOL CChangedDlg::PreTranslateMessage(MSG* pMsg) { case VK_F5: { - if (m_bBlock) - return CResizableStandAloneDialog::PreTranslateMessage(pMsg); - if (!AfxBeginThread(ChangedStatusThreadEntry, this)) - { - CMessageBox::Show(GetSafeHwnd(), IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); - } + if (!m_bBlock) + OnBnClickedRefresh(); } break; } diff --git a/src/TortoiseProc/SyncDlg.cpp b/src/TortoiseProc/SyncDlg.cpp index 5472e1a1e..28f5879d2 100644 --- a/src/TortoiseProc/SyncDlg.cpp +++ b/src/TortoiseProc/SyncDlg.cpp @@ -370,17 +370,7 @@ void CSyncDlg::OnBnClickedButtonPull() m_CurrentCmd = GIT_COMMAND_PULL; m_GitCmdList.push_back(cmd); - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { - // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } - + StartWorkerThread(); } ///Fetch @@ -433,16 +423,7 @@ void CSyncDlg::OnBnClickedButtonPull() m_GitCmdList.push_back(cmd); - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { - // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } } @@ -459,19 +440,7 @@ void CSyncDlg::OnBnClickedButtonPull() cmd = L"git.exe remote update"; m_GitCmdList.push_back(cmd); - InterlockedExchange(&m_bBlock, TRUE); - - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { - // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - InterlockedExchange(&m_bBlock, FALSE); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } ///Cleanup stale remote banches @@ -481,19 +450,7 @@ void CSyncDlg::OnBnClickedButtonPull() cmd.Format(L"git.exe remote prune \"%s\"", (LPCTSTR)m_strURL); m_GitCmdList.push_back(cmd); - InterlockedExchange(&m_bBlock, TRUE); - - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { - // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - InterlockedExchange(&m_bBlock, FALSE); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } } @@ -779,16 +736,7 @@ void CSyncDlg::OnBnClickedButtonPush() CAppUtils::LaunchPAgent(this->GetSafeHwnd(), nullptr, &m_strURL); } - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { -// ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } void CSyncDlg::OnBnClickedButtonApply() @@ -1766,16 +1714,7 @@ void CSyncDlg::OnBnClickedButtonSubmodule() m_CurrentCmd = GIT_COMMAND_SUBMODULE; - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED); - if (!m_pThread) - { -// ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } void CSyncDlg::OnBnClickedButtonStash() @@ -1824,16 +1763,7 @@ void CSyncDlg::OnBnClickedButtonStash() m_GitCmdList.push_back(cmd); m_CurrentCmd = GIT_COMMAND_STASH; - m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); - if (!m_pThread) - { - //ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED))); - } - else - { - m_pThread->m_bAutoDelete = TRUE; - m_pThread->ResumeThread(); - } + StartWorkerThread(); } void CSyncDlg::OnTimer(UINT_PTR nIDEvent) @@ -1937,3 +1867,15 @@ void CSyncDlg::OnEnscrollLog() { m_tooltips.DelTool(&m_ctrlCmdOut, 1); } + +void CSyncDlg::StartWorkerThread() +{ + InterlockedExchange(&m_bBlock, TRUE); + + m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL); + if (!m_pThread) + { + InterlockedExchange(&m_bBlock, FALSE); + CMessageBox::Show(this->m_hWnd, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR); + } +} diff --git a/src/TortoiseProc/SyncDlg.h b/src/TortoiseProc/SyncDlg.h index 15cf65f34..95d002f95 100644 --- a/src/TortoiseProc/SyncDlg.h +++ b/src/TortoiseProc/SyncDlg.h @@ -1,6 +1,6 @@ -// TortoiseGit - a Windows shell extension for easy version control +// TortoiseGit - a Windows shell extension for easy version control -// Copyright (C) 2008-2009, 2012-2018 - TortoiseGit +// Copyright (C) 2008-2009, 2012-2019 - TortoiseGit // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -213,6 +213,8 @@ protected: static UINT ProgressThreadEntry(LPVOID pVoid) { return reinterpret_cast(pVoid)->ProgressThread(); }; UINT ProgressThread(); + void StartWorkerThread(); + CHistoryCombo m_ctrlURL; CButton m_ctrlDumyButton; CMenuButton m_ctrlPull; -- 2.11.4.GIT