From b20a5df218bc2bfe632f67507bf8ba5d0c887c61 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Sat, 17 Nov 2012 13:52:47 +0100 Subject: [PATCH] Fixed issue #1459: Refreshing Log Dialog may freeze up to 20 seconds Signed-off-by: Sven Strickroth --- src/Changelog.txt | 1 + src/TortoiseProc/GitLogListBase.h | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Changelog.txt b/src/Changelog.txt index 8b416e9b1..859e51040 100644 --- a/src/Changelog.txt +++ b/src/Changelog.txt @@ -41,6 +41,7 @@ Released: unreleased * Fixed issue #1521: Directories with period at beginning are recognized as file extensions showing *.dir * Fixed issue #1519: Quotes in notes break Merge command * Fixed issue #1524: Log dialog failed to view revision in alternative editor of the same file more than once + * Fixed issue #1459: Refreshing Log Dialog may freeze up to 20 seconds = Release 1.7.14.0 = Released: 2012-10-14 diff --git a/src/TortoiseProc/GitLogListBase.h b/src/TortoiseProc/GitLogListBase.h index 34f3f3704..1a031caab 100644 --- a/src/TortoiseProc/GitLogListBase.h +++ b/src/TortoiseProc/GitLogListBase.h @@ -336,9 +336,11 @@ public: { if (m_LoadingThread!=NULL && InterlockedExchange(&m_bExitThread, TRUE) == FALSE) { - DWORD ret =::WaitForSingleObject(m_LoadingThread->m_hThread,20000); - if(ret == WAIT_TIMEOUT) - ::TerminateThread(m_LoadingThread,0); + DWORD ret = WAIT_TIMEOUT; + for (int i = 0; i < 200 && m_bThreadRunning; i++) + ret =::WaitForSingleObject(m_LoadingThread->m_hThread, 100); + if (ret == WAIT_TIMEOUT && m_bThreadRunning) + ::TerminateThread(m_LoadingThread, 0); m_LoadingThread = NULL; } }; -- 2.11.4.GIT