Mercurial > hg > svcore
comparison rdf/PluginRDFIndexer.cpp @ 476:acddcc3cca36
* Avoid deadlock in indexer
author | Chris Cannam |
---|---|
date | Fri, 07 Nov 2008 20:25:57 +0000 |
parents | a70dcfed59c1 |
children | e0784311a103 |
comparison
equal
deleted
inserted
replaced
475:a70dcfed59c1 | 476:acddcc3cca36 |
---|---|
159 } | 159 } |
160 | 160 |
161 QString | 161 QString |
162 PluginRDFIndexer::getIdForPluginURI(QString uri) | 162 PluginRDFIndexer::getIdForPluginURI(QString uri) |
163 { | 163 { |
164 QMutexLocker locker(&m_mutex); | 164 m_mutex.lock(); |
165 | 165 |
166 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { | 166 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { |
167 | |
168 m_mutex.unlock(); | |
167 | 169 |
168 // Haven't found this uri referenced in any document on the | 170 // Haven't found this uri referenced in any document on the |
169 // local filesystem; try resolving the pre-fragment part of | 171 // local filesystem; try resolving the pre-fragment part of |
170 // the uri as a document URL and reading that if possible. | 172 // the uri as a document URL and reading that if possible. |
171 | 173 |
176 | 178 |
177 QString baseUrl = QUrl(uri).toString(QUrl::RemoveFragment); | 179 QString baseUrl = QUrl(uri).toString(QUrl::RemoveFragment); |
178 | 180 |
179 indexURL(baseUrl); | 181 indexURL(baseUrl); |
180 | 182 |
183 m_mutex.lock(); | |
184 | |
181 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { | 185 if (m_uriToIdMap.find(uri) == m_uriToIdMap.end()) { |
182 m_uriToIdMap[uri] = ""; | 186 m_uriToIdMap[uri] = ""; |
183 } | 187 } |
184 } | 188 } |
185 | 189 |
186 return m_uriToIdMap[uri]; | 190 QString id = m_uriToIdMap[uri]; |
191 m_mutex.unlock(); | |
192 return id; | |
187 } | 193 } |
188 | 194 |
189 QString | 195 QString |
190 PluginRDFIndexer::getDescriptionURLForPluginId(QString pluginId) | 196 PluginRDFIndexer::getDescriptionURLForPluginId(QString pluginId) |
191 { | 197 { |