From 6ad1ec9658e356820368e338032a23eb6b5e7c46 Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Tue, 26 Aug 2014 21:21:22 +0200 Subject: [PATCH] Use libgit2 with threads Signed-off-by: Sven Strickroth --- ext/build/libgit2.vcxproj | 2 +- src/TGitCache/TGITCache.cpp | 3 ++- src/TortoiseGitBlame/TortoiseGitBlame.cpp | 7 ++++++- src/TortoiseGitBlame/TortoiseGitBlame.h | 1 + src/TortoiseMerge/TortoiseMerge.cpp | 9 ++++++++- src/TortoiseMerge/TortoiseMerge.h | 1 + src/TortoiseProc/TortoiseProc.cpp | 2 ++ src/TortoiseShell/TortoiseGIT.cpp | 1 + 8 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ext/build/libgit2.vcxproj b/ext/build/libgit2.vcxproj index c26b03d4a..8d37fc32d 100644 --- a/ext/build/libgit2.vcxproj +++ b/ext/build/libgit2.vcxproj @@ -46,7 +46,7 @@ ..\zlib;..\libgit2\src;..\libgit2\include;..\libgit2\deps\regex;..\libgit2\deps\http-parser;%(AdditionalIncludeDirectories) - GIT_WINHTTP;WIN32_SHA1;%(PreprocessorDefinitions) + GIT_WINHTTP;GIT_THREADS;WIN32_SHA1;%(PreprocessorDefinitions) precompiled.h CompileAsC precompiled.h;%(ForcedIncludeFiles) diff --git a/src/TGitCache/TGITCache.cpp b/src/TGitCache/TGITCache.cpp index e01e74d7b..ad048e78b 100644 --- a/src/TGitCache/TGITCache.cpp +++ b/src/TGitCache/TGITCache.cpp @@ -138,6 +138,7 @@ void HandleRestart() int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR lpCmdLine, int /*cmdShow*/) { SetDllDirectory(L""); + git_threads_init(); HandleCommandLine(lpCmdLine); CAutoGeneralHandle hReloadProtection = ::CreateMutex(NULL, FALSE, GetCacheMutexName()); @@ -261,7 +262,7 @@ int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR lp Shell_NotifyIcon(NIM_DELETE,&niData); CGitStatusCache::Destroy(); HandleRestart(); - + git_threads_shutdown(); return 0; } diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.cpp b/src/TortoiseGitBlame/TortoiseGitBlame.cpp index 373a41aeb..815bae372 100644 --- a/src/TortoiseGitBlame/TortoiseGitBlame.cpp +++ b/src/TortoiseGitBlame/TortoiseGitBlame.cpp @@ -63,12 +63,17 @@ CTortoiseGitBlameApp::CTortoiseGitBlameApp() CCrashReport::Instance().AddUserInfoToReport(L"CommandLine", GetCommandLine()); #endif EnableHtmlHelp(); - + git_threads_init(); m_nAppLook = 0; m_gdiplusToken = NULL; m_bHiColorIcons = TRUE; } +CTortoiseGitBlameApp::~CTortoiseGitBlameApp() +{ + git_threads_shutdown(); +} + // The one and only CTortoiseGitBlameApp object CTortoiseGitBlameApp theApp; CString sOrigCWD; diff --git a/src/TortoiseGitBlame/TortoiseGitBlame.h b/src/TortoiseGitBlame/TortoiseGitBlame.h index bca6976dd..b7ddf7fcb 100644 --- a/src/TortoiseGitBlame/TortoiseGitBlame.h +++ b/src/TortoiseGitBlame/TortoiseGitBlame.h @@ -37,6 +37,7 @@ class CTortoiseGitBlameApp : public CWinAppEx { public: CTortoiseGitBlameApp(); + ~CTortoiseGitBlameApp(); ULONG_PTR m_gdiplusToken; // Overrides diff --git a/src/TortoiseMerge/TortoiseMerge.cpp b/src/TortoiseMerge/TortoiseMerge.cpp index 2a52ac13b..e16d54ecc 100644 --- a/src/TortoiseMerge/TortoiseMerge.cpp +++ b/src/TortoiseMerge/TortoiseMerge.cpp @@ -1,6 +1,6 @@ // TortoiseGitMerge - a Diff/Patch program -// Copyright (C) 2013 - TortoiseGit +// Copyright (C) 2013-2014 - TortoiseGit // Copyright (C) 2006-2014 - TortoiseSVN // This program is free software; you can redistribute it and/or @@ -32,6 +32,7 @@ #include "FileDlgEventHandler.h" #include "TempFile.h" #include "TaskbarUUID.h" +#include "git2/threads.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -69,6 +70,12 @@ CTortoiseMergeApp::CTortoiseMergeApp() { EnableHtmlHelp(); m_bHiColorIcons = TRUE; + git_threads_init(); +} + +CTortoiseMergeApp::~CTortoiseMergeApp() +{ + git_threads_shutdown(); } // The one and only CTortoiseMergeApp object diff --git a/src/TortoiseMerge/TortoiseMerge.h b/src/TortoiseMerge/TortoiseMerge.h index b31e83744..c0d69fe21 100644 --- a/src/TortoiseMerge/TortoiseMerge.h +++ b/src/TortoiseMerge/TortoiseMerge.h @@ -32,6 +32,7 @@ class CTortoiseMergeApp : public CWinAppEx { public: CTortoiseMergeApp(); + ~CTortoiseMergeApp(); // Overrides diff --git a/src/TortoiseProc/TortoiseProc.cpp b/src/TortoiseProc/TortoiseProc.cpp index e3f641854..dbe184b8c 100644 --- a/src/TortoiseProc/TortoiseProc.cpp +++ b/src/TortoiseProc/TortoiseProc.cpp @@ -68,6 +68,7 @@ CTortoiseProcApp::CTortoiseProcApp() EnableHtmlHelp(); SYS_IMAGE_LIST(); CHooks::Create(); + git_threads_init(); m_bLoadUserToolbars = FALSE; m_bSaveState = FALSE; retSuccess = false; @@ -81,6 +82,7 @@ CTortoiseProcApp::~CTortoiseProcApp() { CHooks::Destroy(); SYS_IMAGE_LIST().Cleanup(); + git_threads_shutdown(); } // The one and only CTortoiseProcApp object diff --git a/src/TortoiseShell/TortoiseGIT.cpp b/src/TortoiseShell/TortoiseGIT.cpp index bef9375cb..f2612edc3 100644 --- a/src/TortoiseShell/TortoiseGIT.cpp +++ b/src/TortoiseShell/TortoiseGIT.cpp @@ -155,6 +155,7 @@ STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvOut) if (pcf == NULL) return E_OUTOFMEMORY; // refcount currently set to 0 + git_threads_init(); const HRESULT hr = pcf->QueryInterface(riid, ppvOut); if(FAILED(hr)) delete pcf; -- 2.11.4.GIT