OSDN Git Service

Remove IBugTraqProvider intermediate files from repository
[tortoisegit/TortoiseGitJp.git] / src / TGitCache / ShellUpdater.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // External Cache Copyright (C) 2005 - 2006 - Will Dean, Stefan Kueng\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #pragma once\r
20 \r
21 #include "TGitPath.h"\r
22 \r
23 /**\r
24  * \ingroup TSVNCache\r
25  * Handles notifications to the shell about status changes. This is done\r
26  * in a separate thread to avoid deadlocks.\r
27  */\r
28 class CShellUpdater\r
29 {\r
30 public:\r
31         CShellUpdater(void);\r
32         ~CShellUpdater(void);\r
33 \r
34 public:\r
35         void Initialise();\r
36         void AddPathForUpdate(const CTGitPath& path);\r
37         void Stop();\r
38 \r
39 private:\r
40         static unsigned int __stdcall ThreadEntry(void* pContext);\r
41         void WorkerThread();\r
42 \r
43 private:\r
44         CComAutoCriticalSection m_critSec;\r
45         HANDLE m_hThread;\r
46         std::deque<CTGitPath> m_pathsToUpdate;\r
47         HANDLE m_hTerminationEvent;\r
48         HANDLE m_hWakeEvent;\r
49         \r
50         bool m_bItemsAddedSinceLastUpdate;\r
51         volatile LONG m_bRunning;\r
52 };\r
53 \r
54 \r