linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #04899
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2709: WindowManager doesn't need a lock (always called from the main thread)
------------------------------------------------------------
revno: 2709
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Thu 2011-12-08 19:56:13 +0100
message:
WindowManager doesn't need a lock (always called from the main thread)
modified:
dcpp/WindowManager.cpp
dcpp/WindowManager.h
win32/MainWindow.cpp
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/WindowManager.cpp'
--- dcpp/WindowManager.cpp 2011-05-06 22:46:06 +0000
+++ dcpp/WindowManager.cpp 2011-12-08 18:56:13 +0000
@@ -40,10 +40,6 @@
SettingsManager::getInstance()->removeListener(this);
}
-Lock WindowManager::lock() {
- return Lock(cs);
-}
-
void WindowManager::add(const string& id, const WindowParams& params) {
list.push_back(WindowInfo(id, params));
}
@@ -57,7 +53,6 @@
}
void WindowManager::addRecent(const string& id, const WindowParams& params) {
- Lock l(cs);
addRecent_(id, params, true);
}
@@ -97,7 +92,6 @@
}
void WindowManager::updateRecent(const string& id, const WindowParams& params) {
- Lock l(cs);
RecentList::iterator ri = recent.find(id);
if(ri != recent.end()) {
WindowInfo info(id, params);
@@ -108,7 +102,6 @@
}
void WindowManager::setMaxRecentItems(const string& id, unsigned max) {
- Lock l(cs);
maxRecentItems[id] = max;
RecentList::iterator i = recent.find(id);
@@ -123,7 +116,6 @@
}
unsigned WindowManager::getMaxRecentItems(const string& id) const {
- Lock l(cs);
MaxRecentItems::const_iterator i = maxRecentItems.find(id);
if(i == maxRecentItems.end())
return MAX_RECENTS_DEFAULT;
@@ -131,7 +123,6 @@
}
void WindowManager::prepareSave() const {
- Lock l(cs);
prepareSave(list);
for(RecentList::const_iterator i = recent.begin(), iend = recent.end(); i != iend; ++i)
prepareSave(i->second);
@@ -213,7 +204,6 @@
}
void WindowManager::on(SettingsManagerListener::Load, SimpleXML& xml) noexcept {
- Lock l(cs);
clear();
xml.resetCurrentChild();
@@ -234,8 +224,6 @@
}
void WindowManager::on(SettingsManagerListener::Save, SimpleXML& xml) noexcept {
- Lock l(cs);
-
xml.addTag("Windows");
xml.stepIn();
for(WindowInfoList::const_iterator i = list.begin(), iend = list.end(); i != iend; ++i)
=== modified file 'dcpp/WindowManager.h'
--- dcpp/WindowManager.h 2011-12-03 21:53:57 +0000
+++ dcpp/WindowManager.h 2011-12-08 18:56:13 +0000
@@ -34,8 +34,6 @@
typedef std::vector<WindowInfo> WindowInfoList;
typedef std::unordered_map<string, WindowInfoList> RecentList;
- Lock lock();
-
void add(const string& id, const WindowParams& params);
void clear();
const WindowInfoList& getList();
@@ -57,7 +55,6 @@
private:
friend class Singleton<WindowManager>;
- mutable CriticalSection cs;
WindowInfoList list;
RecentList recent;
MaxRecentItems maxRecentItems;
=== modified file 'win32/MainWindow.cpp'
--- win32/MainWindow.cpp 2011-12-04 22:17:45 +0000
+++ win32/MainWindow.cpp 2011-12-08 18:56:13 +0000
@@ -182,9 +182,7 @@
{
bool skipHubCon = WinUtil::isShift();
- WindowManager* wm = WindowManager::getInstance();
- auto lock = wm->lock();
- const auto& list = wm->getList();
+ const auto& list = WindowManager::getInstance()->getList();
for(auto i = list.cbegin(), iend = list.cend(); i != iend; ++i) {
auto id = i->getId();
@@ -651,14 +649,13 @@
}
template<typename T, typename configureF>
-void addRecentMenu(const WindowManager::RecentList& recent, MenuPtr& menu, MainWindow* mainWindow,
- const tstring& text, unsigned iconId, unsigned favIconId, configureF f)
-{
+void addRecentMenu(MenuPtr& menu, MainWindow* mainWindow, const tstring& text, unsigned iconId, unsigned favIconId, configureF f) {
MenuPtr popup = menu->appendPopup(text, WinUtil::menuIcon(iconId));
popup->appendItem(T_("&Configure..."), std::bind(f, mainWindow, T::id, text),
WinUtil::menuIcon(IDI_SETTINGS), true, true);
popup->appendSeparator();
+ const auto& recent = WindowManager::getInstance()->getRecent();
auto it = recent.find(T::id);
if(it == recent.end()) {
popup->appendItem(T_("(No recent item found)"), 0, 0, false);
@@ -686,16 +683,10 @@
void MainWindow::handleRecent(const dwt::ScreenCoordinate& pt) {
MenuPtr menu = addChild(WinUtil::Seeds::menu);
- {
- WindowManager* wm = WindowManager::getInstance();
- auto lock = wm->lock();
- const auto& recent = wm->getRecent();
-
- auto f = &MainWindow::handleConfigureRecent;
- addRecentMenu<HubFrame>(recent, menu, this, T_("Recent hubs"), IDI_HUB, IDI_FAVORITE_HUBS, f);
- addRecentMenu<PrivateFrame>(recent, menu, this, T_("Recent PMs"), IDI_PRIVATE, IDI_FAVORITE_USER_ON, f);
- addRecentMenu<DirectoryListingFrame>(recent, menu, this, T_("Recent file lists"), IDI_DIRECTORY, IDI_FAVORITE_USER_ON, f);
- }
+ auto f = &MainWindow::handleConfigureRecent;
+ addRecentMenu<HubFrame>(menu, this, T_("Recent hubs"), IDI_HUB, IDI_FAVORITE_HUBS, f);
+ addRecentMenu<PrivateFrame>(menu, this, T_("Recent PMs"), IDI_PRIVATE, IDI_FAVORITE_USER_ON, f);
+ addRecentMenu<DirectoryListingFrame>(menu, this, T_("Recent file lists"), IDI_DIRECTORY, IDI_FAVORITE_USER_ON, f);
menu->open(pt);
}
@@ -889,8 +880,7 @@
const auto& views = tabs->getChildren();
auto active = tabs->getActive();
- WindowManager* wm = WindowManager::getInstance();
- auto lock = wm->lock();
+ auto wm = WindowManager::getInstance();
wm->clear();
for(auto i = views.cbegin(), iend = views.cend(); i != iend; ++i) {