From f0fbf330fc6e4987866cfa0c9aee982d28854fa1 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Sun, 30 Dec 2012 13:38:23 +0100 Subject: [PATCH] Limit GUI updates the the main thread Signed-off-by: Sven Strickroth --- src/TortoiseProc/ChooseVersion.h | 20 +++++++++++++------- src/TortoiseProc/GitSwitchDlg.h | 1 + src/TortoiseProc/ResetDlg.h | 1 + 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/TortoiseProc/ChooseVersion.h b/src/TortoiseProc/ChooseVersion.h index c45059ec1..8742fd49c 100644 --- a/src/TortoiseProc/ChooseVersion.h +++ b/src/TortoiseProc/ChooseVersion.h @@ -22,6 +22,8 @@ #include "BrowseRefsDlg.h" #include "MessageBox.h" +static UINT WM_GUIUPDATES = RegisterWindowMessage(_T("TORTOISEGIT_CHOOSEVERSION_GUIUPDATES")); + class CChooseVersion { public: @@ -184,22 +186,25 @@ protected: m_ChooseVersioinBranch.AddString(list, false); m_ChooseVersioinBranch.SetCurSel(current); - m_RadioBranch.EnableWindow(TRUE); - list.clear(); g_Git.GetTagList(list); m_ChooseVersioinTags.AddString(list, false); m_ChooseVersioinTags.SetCurSel(0); + m_pWin->SendMessage(WM_GUIUPDATES); + + InterlockedExchange(&m_bLoadingThreadRunning, FALSE); + return 0; + } + void UpdateGUI() + { + m_RadioBranch.EnableWindow(TRUE); m_RadioTag.EnableWindow(TRUE); - if(m_initialRefName.IsEmpty()) + if (m_initialRefName.IsEmpty()) OnVersionChanged(); else SelectRef(m_initialRefName); - - InterlockedExchange(&m_bLoadingThreadRunning, FALSE); - return 0; } void Init() { @@ -237,7 +242,6 @@ public: }; - #define CHOOSE_VERSION_DDX \ DDX_Control(pDX, IDC_COMBOBOXEX_BRANCH, m_ChooseVersioinBranch); \ DDX_Control(pDX, IDC_COMBOBOXEX_TAGS, m_ChooseVersioinTags); \ @@ -246,6 +250,7 @@ public: DDX_Control(pDX, IDC_RADIO_TAGS, m_RadioTag); #define CHOOSE_VERSION_EVENT\ + ON_REGISTERED_MESSAGE(WM_GUIUPDATES, OnUpdateGUIHost)\ ON_BN_CLICKED(IDC_RADIO_HEAD, OnBnClickedChooseRadioHost)\ ON_BN_CLICKED(IDC_RADIO_BRANCH, OnBnClickedChooseRadioHost)\ ON_BN_CLICKED(IDC_RADIO_TAGS, OnBnClickedChooseRadioHost)\ @@ -264,6 +269,7 @@ public: } #define CHOOSE_EVENT_RADIO() \ + LRESULT OnUpdateGUIHost(WPARAM, LPARAM) { UpdateGUI(); return 0; } \ afx_msg void OnBnClickedChooseRadioHost(){OnBnClickedChooseRadio();}\ afx_msg void OnBnClickedShow(){OnBnClickedChooseVersion();}\ afx_msg void OnBnClickedButtonBrowseRefHost(){OnBnClickedButtonBrowseRef();} diff --git a/src/TortoiseProc/GitSwitchDlg.h b/src/TortoiseProc/GitSwitchDlg.h index 26120937a..b94766d4e 100644 --- a/src/TortoiseProc/GitSwitchDlg.h +++ b/src/TortoiseProc/GitSwitchDlg.h @@ -51,6 +51,7 @@ protected: afx_msg void OnBnClickedChooseRadioHost(); afx_msg void OnBnClickedShow(); afx_msg void OnBnClickedButtonBrowseRefHost(){OnBnClickedButtonBrowseRef();} + LRESULT OnUpdateGUIHost(WPARAM, LPARAM) { UpdateGUI(); return 0; } DECLARE_MESSAGE_MAP() diff --git a/src/TortoiseProc/ResetDlg.h b/src/TortoiseProc/ResetDlg.h index e7e81b653..ad2e5c7d0 100644 --- a/src/TortoiseProc/ResetDlg.h +++ b/src/TortoiseProc/ResetDlg.h @@ -39,6 +39,7 @@ protected: afx_msg void OnBnClickedChooseRadioHost(); afx_msg void OnBnClickedShow(); afx_msg void OnBnClickedButtonBrowseRefHost(){OnBnClickedButtonBrowseRef();} + LRESULT OnUpdateGUIHost(WPARAM, LPARAM) { UpdateGUI(); return 0; } virtual void OnVersionChanged(); virtual void OnOK(); virtual void OnBnClickedHelp(); -- 2.11.4.GIT