Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginClass.cpp

Issue 5113230347206656: Issue #1356 - Improve detection of the issuer of the request (Closed)
Patch Set: Fix the deadlock Created Oct. 7, 2014, 11:22 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginClass.h" 3 #include "PluginClass.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginSystem.h" 5 #include "PluginSystem.h"
6 #ifdef SUPPORT_FILTER 6 #ifdef SUPPORT_FILTER
7 #include "PluginFilter.h" 7 #include "PluginFilter.h"
8 #endif 8 #endif
9 #include "PluginMimeFilterClient.h" 9 #include "PluginMimeFilterClient.h"
10 #include "PluginClient.h" 10 #include "PluginClient.h"
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1129 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(dw ThreadId); 1129 std::map<DWORD,CPluginClass*>::const_iterator it = s_threadInstances.find(dw ThreadId);
1130 if (it != s_threadInstances.end()) 1130 if (it != s_threadInstances.end())
1131 { 1131 {
1132 tab = it->second->m_tab; 1132 tab = it->second->m_tab;
1133 } 1133 }
1134 } 1134 }
1135 s_criticalSectionLocal.Unlock(); 1135 s_criticalSectionLocal.Unlock();
1136 1136
1137 return tab; 1137 return tab;
1138 } 1138 }
1139 1139
Eric 2014/10/08 17:37:54 I'm mildly concerned that this version of GetTab i
sergei 2014/10/09 13:46:22 I think it should be fast enough with linear searc
1140 CPluginTab* CPluginClass::GetTab(const std::wstring& url)
1141 {
1142 CPluginTab* tab = NULL;
1143
1144 s_criticalSectionLocal.Lock();
1145 {
1146 std::map<DWORD,CPluginClass*>::const_iterator it;
1147 for (it = s_threadInstances.begin(); it != s_threadInstances.end(); ++it)
Eric 2014/10/08 17:37:54 We can use the range-for syntax here. It's support
1148 {
1149 if (it->second->GetBrowserUrl() == url.c_str())
1150 {
1151 s_criticalSectionLocal.Unlock();
1152 return it->second->m_tab;
Eric 2014/10/08 17:37:54 If we were using a sentry object to control the mu
sergei 2014/10/09 13:46:22 +1 for scoped lock I also don't like return if it'
1153 }
1154 }
1155 }
1156 s_criticalSectionLocal.Unlock();
1157
1158 return tab;
1159 }
1160
1140 1161
1141 STDMETHODIMP CPluginClass::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, O LECMD prgCmds[], OLECMDTEXT* pCmdText) 1162 STDMETHODIMP CPluginClass::QueryStatus(const GUID* pguidCmdGroup, ULONG cCmds, O LECMD prgCmds[], OLECMDTEXT* pCmdText)
1142 { 1163 {
1143 if (cCmds == 0) return E_INVALIDARG; 1164 if (cCmds == 0) return E_INVALIDARG;
1144 if (prgCmds == 0) return E_POINTER; 1165 if (prgCmds == 0) return E_POINTER;
1145 1166
1146 prgCmds[0].cmdf = OLECMDF_ENABLED; 1167 prgCmds[0].cmdf = OLECMDF_ENABLED;
1147 1168
1148 return S_OK; 1169 return S_OK;
1149 } 1170 }
(...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after
2001 } 2022 }
2002 } 2023 }
2003 } 2024 }
2004 2025
2005 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 2026 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
2006 } 2027 }
2007 2028
2008 return hTabWnd; 2029 return hTabWnd;
2009 2030
2010 } 2031 }
OLDNEW

Powered by Google App Engine
This is Rietveld