Index: src/plugin/PluginClassThread.cpp |
=================================================================== |
deleted file mode 100644 |
--- a/src/plugin/PluginClassThread.cpp |
+++ /dev/null |
@@ -1,268 +0,0 @@ |
-#include "PluginStdAfx.h" |
- |
-#include <ctime> |
- |
-#include "PluginClass.h" |
-#include "PluginSettings.h" |
-#include "PluginSystem.h" |
-#include "PluginConfiguration.h" |
-#ifdef SUPPORT_FILTER |
-#include "PluginFilter.h" |
-#endif |
-#ifdef SUPPORT_CONFIG |
-#include "PluginConfig.h" |
-#endif |
-#include "PluginMimeFilterClient.h" |
- |
-#include "PluginClient.h" |
-#include "PluginClientFactory.h" |
-#include "PluginWbPassThrough.h" |
-#include "PluginHttpRequest.h" |
- |
-#include "ProtocolImpl.h" |
-#include "ProtocolCF.h" |
- |
-HANDLE CPluginClass::s_hMainThread = NULL; |
-bool CPluginClass::s_isMainThreadDone = false; |
- |
- |
-DWORD WINAPI CPluginClass::MainThreadProc(LPVOID pParam) |
-{ |
- |
- CPluginTab* tab = static_cast<CPluginTab*>(pParam); |
- |
- // Force loading/creation of settings |
- CPluginSettings* settings = CPluginSettings::GetInstance(); |
- |
- CPluginSystem* system = CPluginSystem::GetInstance(); |
- |
- settings->SetMainThreadId(); |
- |
- CString debugText; |
- |
- CString threadInfo; |
- threadInfo.Format(L"%d.%d", ::GetCurrentProcessId(), ::GetCurrentThreadId()); |
- |
- debugText += L"================================================================================"; |
- debugText += L"\nMAIN THREAD " + threadInfo + L" Plugin version:" + CString(IEPLUGIN_VERSION); |
- debugText += L"\n================================================================================"; |
- |
- debugText += L"\nPlugin version: " + CString(IEPLUGIN_VERSION); |
- debugText += L"\nBrowser version: " + system->GetBrowserVersion(); |
- debugText += L"\nBrowser language: " + system->GetBrowserLanguage(); |
- |
- DWORD osVersion = ::GetVersion(); |
- |
- CString ver; |
- ver.Format(L"%d.%d", LOBYTE(LOWORD(osVersion)), HIBYTE(LOWORD(osVersion))); |
- |
- |
- debugText += L"\nWindows version: " + ver; |
- |
- CString proxyName; |
- CString proxyBypass; |
- |
- if (CPluginHttpRequest::GetProxySettings(proxyName, proxyBypass)) |
- { |
- if (!proxyName.IsEmpty()) |
- { |
- debugText += L"\nHTTP proxy name: " + proxyName; |
- } |
- if (!proxyBypass.IsEmpty()) |
- { |
- debugText += L"\nHTTP proxy bypass: " + proxyBypass; |
- } |
- } |
- |
- debugText += L"\n================================================================================"; |
- |
- DEBUG_GENERAL(debugText) |
- |
- HANDLE hMainThread = GetMainThreadHandle(); |
- |
- CPluginClient* client = CPluginClient::GetInstance(); |
- client->SetLocalization(); |
- |
- DWORD nNextUserTimerBase = GetTickCount() / TIMER_INTERVAL_USER_REGISTRATION + 1; |
- DWORD nUserTimerBaseStep = 1; |
- |
- bool isConfigutationLoaded = false; |
- |
- std::auto_ptr<CPluginConfiguration> configuration = std::auto_ptr<CPluginConfiguration>(new CPluginConfiguration); |
- |
- // -------------------------------------------------------------------- |
- // Welcome / Info page |
- // -------------------------------------------------------------------- |
- |
- DEBUG_THREAD("Thread::Set welcome/info page"); |
- |
- if (!IsMainThreadDone(hMainThread)) |
- { |
- WORD wInfo = 0; |
- WORD wInfoSettings = 0; |
- |
- wInfo = wInfoSettings = settings->GetValue(SETTING_PLUGIN_INFO_PANEL, 0); |
- if (wInfo == 1) |
- { |
- DEBUG_GENERAL("*** Display welcome page") |
- } |
- else if (wInfo == 2) |
- { |
- DEBUG_GENERAL("*** Display update page") |
- } |
- else if (wInfo != 0) |
- { |
- DEBUG_GENERAL("*** Display info page") |
- } |
- |
- if (wInfo != 0) |
- { |
- DEBUG_THREAD("Thread::Set info page (action)"); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- ::PostMessage(tab->m_plugin->m_hPaneWnd, WM_LAUNCH_INFO, wInfo, NULL); |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- if (wInfoSettings == wInfo) |
- { |
- settings->Remove(SETTING_PLUGIN_INFO_PANEL); |
- settings->Write(); |
- } |
- } |
- } |
- |
- // -------------------------------------------------------------------- |
- // Main loop |
- // -------------------------------------------------------------------- |
- |
- DWORD mainLoopIteration = 1; |
- |
- while (!IsMainThreadDone(hMainThread)) |
- { |
- CString sMainLoopIteration; |
- sMainLoopIteration.Format(L"%u", mainLoopIteration); |
- |
- CString debugText; |
- |
- debugText += L"--------------------------------------------------------------------------------"; |
- debugText += L"\nLoop iteration " + sMainLoopIteration; |
- debugText += L"\n--------------------------------------------------------------------------------"; |
- |
- DEBUG_GENERAL(debugText) |
- |
- // -------------------------------------------------------------------- |
- // Update settings |
- // -------------------------------------------------------------------- |
- |
- if (!IsMainThreadDone(hMainThread)) |
- { |
- DEBUG_THREAD("Thread::Update settings"); |
- |
- if (configuration->IsValid()) |
- { |
- bool isNewDictionaryVersion = false; |
-#ifdef SUPPORT_FILTER |
- bool isNewFilterVersion = false; |
-#endif |
-#ifdef SUPPORT_CONFIG |
- bool isNewConfig = false; |
-#endif |
- |
- DEBUG_THREAD("Thread::Update settings (action)"); |
- |
- settings->ForceConfigurationUpdateOnStart(false); |
- |
- if (configuration->IsValidPluginInfoPanel()) |
- { |
- settings->SetValue(SETTING_PLUGIN_INFO_PANEL, configuration->GetPluginInfoPanel()); |
- } |
- |
-#ifdef SUPPORT_FILTER |
- // Update filter URL list |
- if (configuration->IsValidFilter()) |
- { |
- isNewFilterVersion = true; |
- } |
-#endif // SUPPORT_FILTER |
- |
- settings->Write(); |
- |
- configuration->Invalidate(); |
- |
-#ifdef SUPPORT_FILTER |
- DEBUG_GENERAL("*** before isNewFilterVersion"); |
- |
- // Update filters, if needed (5 days * (random() * 0.4 + 0.8)) |
- if (isNewFilterVersion) |
- { |
- |
- DEBUG_GENERAL("*** before CheckFilterAndDownload"); |
- settings->RefreshFilterlist(); |
- |
- |
- settings->Write(); |
- |
- tab->OnUpdate(); |
- } |
-#endif // SUPPORT_FILTER |
- } |
- } |
- |
- |
- // ---------------------------------------------------------------- |
- // End loop |
- // ---------------------------------------------------------------- |
- |
- if (!IsMainThreadDone(hMainThread)) |
- { |
- bool isDone = false; |
- DWORD sleepLoopIteration = 1; |
- |
- // Sleep loop |
- while (!isDone && !IsMainThreadDone(hMainThread)) |
- { |
- // Non-hanging sleep |
- Sleep(5000); |
- |
- if (sleepLoopIteration++ % (TIMER_THREAD_SLEEP_USER_REGISTRATION) == 0) |
- { |
- isDone = true; |
- } |
- } |
- } |
- |
- mainLoopIteration++; |
- } |
- |
- return 0; |
-} |
- |
- |
-HANDLE CPluginClass::GetMainThreadHandle() |
-{ |
- HANDLE handle = NULL; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- handle = s_hMainThread; |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return handle; |
-} |
- |
- |
-bool CPluginClass::IsMainThreadDone(HANDLE mainThread) |
-{ |
- bool isDone = false; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- isDone = s_isMainThreadDone || mainThread != s_hMainThread; |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return isDone; |
-} |