mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Fix crashing on starting and quitting
QCollator (especially with Qt 5.14 and ICU 65.1) is very unhappy with threads. To avoid having to lock and unlock the mutex everywhere (and ensure it is unlocked before calling other things that might lock it, etc.), we do it as locally as possible. Even if for some reason Qt and ICU make QCollator threadsafe in the future locking here should have minimal impact. BUG: 419585 Differential Revision: https://phabricator.kde.org/D28659
This commit is contained in:
parent
d868568d81
commit
35b4c6d4df
|
@ -33,6 +33,9 @@
|
||||||
#include <QMimeData>
|
#include <QMimeData>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
#include <QMutex>
|
||||||
|
|
||||||
|
Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
|
||||||
|
|
||||||
// #define KFILEITEMMODEL_DEBUG
|
// #define KFILEITEMMODEL_DEBUG
|
||||||
|
|
||||||
|
@ -1878,6 +1881,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
|
||||||
|
|
||||||
int KFileItemModel::stringCompare(const QString& a, const QString& b, const QCollator& collator) const
|
int KFileItemModel::stringCompare(const QString& a, const QString& b, const QCollator& collator) const
|
||||||
{
|
{
|
||||||
|
QMutexLocker collatorLock(s_collatorMutex());
|
||||||
|
|
||||||
if (m_naturalSorting) {
|
if (m_naturalSorting) {
|
||||||
return collator.compare(a, b);
|
return collator.compare(a, b);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue