From 31e3091e345ba89a9f178cc0748efd1d4f50f68c Mon Sep 17 00:00:00 2001 From: spx Date: Mon, 23 May 2011 20:21:19 +0000 Subject: [PATCH] Reverted r815 and stopped changing the working directory for the plugins. --- Library/MeasurePlugin.cpp | 21 ++++----------------- Library/MeterWindow.cpp | 16 ---------------- Library/MeterWindow.h | 4 ---- Library/System.cpp | 25 +++++++++++++++++-------- Library/System.h | 4 +--- 5 files changed, 22 insertions(+), 48 deletions(-) diff --git a/Library/MeasurePlugin.cpp b/Library/MeasurePlugin.cpp index f362f1a6..0eaf1c58 100644 --- a/Library/MeasurePlugin.cpp +++ b/Library/MeasurePlugin.cpp @@ -68,15 +68,6 @@ bool CMeasurePlugin::Update() { if (!CMeasure::PreUpdate()) return false; - bool bulkUpdating = (m_MeterWindow && m_MeterWindow->IsBulkUpdating()); - - if (!bulkUpdating) - { - std::wstring dir = Rainmeter->GetSkinPath(); - if (m_MeterWindow) dir += m_MeterWindow->GetSkinName(); - CSystem::SetWorkingDirectory(dir); - } - if (UpdateFunc) { // Update the plugin @@ -88,10 +79,8 @@ bool CMeasurePlugin::Update() m_Value = UpdateFunc2(m_ID); } - if (!bulkUpdating) - { - CSystem::ResetWorkingDirectory(); - } + // Reset to default + CSystem::ResetWorkingDirectory(); return PostUpdate(); } @@ -186,13 +175,11 @@ void CMeasurePlugin::ReadConfig(CConfigParser& parser, const WCHAR* section) // Remove current directory from DLL search path SetDllDirectory(L""); - std::wstring dir = Rainmeter->GetSkinPath(); - if (m_MeterWindow) dir += m_MeterWindow->GetSkinName(); - CSystem::SetWorkingDirectory(dir); - double maxValue; maxValue = InitializeFunc(m_Plugin, parser.GetFilename().c_str(), section, m_ID); + // Reset to default + SetDllDirectory(L""); CSystem::ResetWorkingDirectory(); std::wstring szMaxValue = parser.ReadString(section, L"MaxValue", L"NotSet"); diff --git a/Library/MeterWindow.cpp b/Library/MeterWindow.cpp index b73cc81c..b61f8e6d 100644 --- a/Library/MeterWindow.cpp +++ b/Library/MeterWindow.cpp @@ -99,7 +99,6 @@ CMeterWindow::CMeterWindow(const std::wstring& path, const std::wstring& config, m_TransitionUpdate(100), m_ActiveTransition(false), m_HasNetMeasures(false), - m_HasPluginMeasures(false), m_HasButtons(false), m_WindowHide(HIDEMODE_NONE), m_WindowStartHidden(false), @@ -127,7 +126,6 @@ CMeterWindow::CMeterWindow(const std::wstring& path, const std::wstring& config, m_FadeEndValue(), m_TransparencyValue(), m_Refreshing(false), - m_BulkUpdating(false), m_Hidden(false), m_ResetRegion(false), m_UpdateCounter(), @@ -2113,7 +2111,6 @@ bool CMeterWindow::ReadSkin() // Create the meters and measures m_HasNetMeasures = false; - m_HasPluginMeasures = false; m_HasButtons = false; // Get all the sections (i.e. different meters, measures and the other stuff) @@ -2156,11 +2153,6 @@ bool CMeterWindow::ReadSkin() { m_HasNetMeasures = true; } - - if (!m_HasPluginMeasures && dynamic_cast(measure)) - { - m_HasPluginMeasures = true; - } } } } @@ -2832,8 +2824,6 @@ void CMeterWindow::Update(bool nodraw) { ++m_UpdateCounter; - m_BulkUpdating = true; - if (!m_Measures.empty()) { // Pre-updates @@ -2841,15 +2831,11 @@ void CMeterWindow::Update(bool nodraw) CMeasureCalc::UpdateVariableMap(*this); // Update all measures - if (m_HasPluginMeasures) CSystem::SetWorkingDirectory(m_SkinPath + m_SkinName); - std::list::const_iterator i = m_Measures.begin(); for ( ; i != m_Measures.end(); ++i) { UpdateMeasure((*i), false); } - - if (m_HasPluginMeasures) CSystem::ResetWorkingDirectory(); } // Update all meters @@ -2884,8 +2870,6 @@ void CMeterWindow::Update(bool nodraw) // Post-updates PostUpdate(bActiveTransition); - m_BulkUpdating = false; - // if (m_MeasuresToVariables) // BUG: LSSetVariable doens't seem to work for some reason. // { // std::list::iterator i = m_Measures.begin(); diff --git a/Library/MeterWindow.h b/Library/MeterWindow.h index 3116851b..de6062c5 100644 --- a/Library/MeterWindow.h +++ b/Library/MeterWindow.h @@ -182,8 +182,6 @@ public: void Refresh(bool init, bool all = false); void Redraw(); - bool IsBulkUpdating() { return m_BulkUpdating; } - void SetMouseLeaveEvent(bool cancel); void MoveWindow(int x, int y); @@ -385,7 +383,6 @@ private: int m_TransitionUpdate; // Transition redraw frequency bool m_ActiveTransition; bool m_HasNetMeasures; - bool m_HasPluginMeasures; bool m_HasButtons; HIDEMODE m_WindowHide; // If true, the window is hidden when mouse is over it bool m_WindowStartHidden; // If true, the window is hidden at startup @@ -418,7 +415,6 @@ private: int m_TransparencyValue; bool m_Refreshing; // This is true, when the meter is refreshing - bool m_BulkUpdating; bool m_Hidden; // True, if Rainmeter is hidden bool m_ResetRegion; // If true, the window region is recalculated during the next update diff --git a/Library/System.cpp b/Library/System.cpp index 2a8b43d5..412e0ef0 100644 --- a/Library/System.cpp +++ b/Library/System.cpp @@ -120,14 +120,6 @@ void CSystem::Initialize(HINSTANCE instance) WCHAR directory[MAX_PATH] = {0}; GetCurrentDirectory(MAX_PATH, directory); c_WorkingDirectory = directory; - if (!c_WorkingDirectory.empty()) - { - WCHAR ch = c_WorkingDirectory[c_WorkingDirectory.size() - 1]; - if (ch != L'\\' && ch != L'/') - { - c_WorkingDirectory += L"\\"; - } - } SetTimer(c_Window, TIMER_SHOWDESKTOP, INTERVAL_SHOWDESKTOP, NULL); SetTimer(c_Window, TIMER_NETSTATS, INTERVAL_NETSTATS, NULL); @@ -999,6 +991,23 @@ HMODULE CSystem::RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError, bool ignor return hLib; } +/* +** ResetWorkingDirectory +** +** Resets working directory to default. +** +*/ +void CSystem::ResetWorkingDirectory() +{ + WCHAR directory[MAX_PATH] = {0}; + GetCurrentDirectory(MAX_PATH, directory); + + if (_wcsicmp(directory, c_WorkingDirectory.c_str()) != 0) + { + SetCurrentDirectory(c_WorkingDirectory.c_str()); + } +} + /* ** CopyFiles ** diff --git a/Library/System.h b/Library/System.h index 36e0be4f..6ed36cc6 100644 --- a/Library/System.h +++ b/Library/System.h @@ -74,9 +74,7 @@ public: static OSPLATFORM GetOSPlatform(); static HMODULE RmLoadLibrary(LPCWSTR lpLibFileName, DWORD* dwError = NULL, bool ignoreErrors = false); - - static void SetWorkingDirectory(const std::wstring& directory) { SetCurrentDirectory(directory.c_str()); } - static void ResetWorkingDirectory() { SetWorkingDirectory(c_WorkingDirectory); } + static void ResetWorkingDirectory(); static bool CopyFiles(const std::wstring& strFrom, const std::wstring& strTo, bool bMove = false); static bool RemoveFile(const std::wstring& file);