Solve the problem that the dir watcher's dbus crashed because of deadlock.
This commit is contained in:
parent
a088d7cf86
commit
37b06c3421
|
@ -252,6 +252,7 @@ void DirWatcher::mountRemoveCallback(GVolumeMonitor *monitor, GMount *gmount, Di
|
||||||
if (removedUri.startsWith("file:///")) {
|
if (removedUri.startsWith("file:///")) {
|
||||||
QString removedMountPoint = g_filename_from_uri(removedUri.toUtf8().constData(), nullptr, nullptr);
|
QString removedMountPoint = g_filename_from_uri(removedUri.toUtf8().constData(), nullptr, nullptr);
|
||||||
pThis->m_blackListOfIndex.removeAll(removedMountPoint);
|
pThis->m_blackListOfIndex.removeAll(removedMountPoint);
|
||||||
|
locker.unlock();
|
||||||
QStringList indexableDirList = pThis->currentIndexableDir();
|
QStringList indexableDirList = pThis->currentIndexableDir();
|
||||||
//卸载目录下存在已索引目录时,通知索引服务删除对应目录
|
//卸载目录下存在已索引目录时,通知索引服务删除对应目录
|
||||||
for (const QString &indexableDir : indexableDirList) {
|
for (const QString &indexableDir : indexableDirList) {
|
||||||
|
@ -260,6 +261,7 @@ void DirWatcher::mountRemoveCallback(GVolumeMonitor *monitor, GMount *gmount, Di
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//处理子卷情况
|
//处理子卷情况
|
||||||
|
locker.relock();
|
||||||
for (auto t = pThis->m_infoOfSubvolume.constBegin(); t != pThis->m_infoOfSubvolume.constEnd(); t++) {
|
for (auto t = pThis->m_infoOfSubvolume.constBegin(); t != pThis->m_infoOfSubvolume.constEnd(); t++) {
|
||||||
if (removedMountPoint.startsWith(t.value() + "/")) {
|
if (removedMountPoint.startsWith(t.value() + "/")) {
|
||||||
pThis->m_blackListOfIndex.removeAll(removedMountPoint.replace(t.value(), t.key()));
|
pThis->m_blackListOfIndex.removeAll(removedMountPoint.replace(t.value(), t.key()));
|
||||||
|
|
Loading…
Reference in New Issue