diff --git a/src/libcalamares/GlobalStorage.cpp b/src/libcalamares/GlobalStorage.cpp index 9f394e245..6064a9fdb 100644 --- a/src/libcalamares/GlobalStorage.cpp +++ b/src/libcalamares/GlobalStorage.cpp @@ -11,33 +11,34 @@ #include "GlobalStorage.h" +#include "compat/Mutex.h" + #include "utils/Logger.h" #include "utils/Units.h" #include "utils/Yaml.h" #include #include -#include using namespace CalamaresUtils::Units; namespace Calamares { -class GlobalStorage::ReadLock : public QMutexLocker +class GlobalStorage::ReadLock : public MutexLocker { public: ReadLock( const GlobalStorage* gs ) - : QMutexLocker( &gs->m_mutex ) + : MutexLocker( &gs->m_mutex ) { } }; -class GlobalStorage::WriteLock : public QMutexLocker +class GlobalStorage::WriteLock : public MutexLocker { public: WriteLock( GlobalStorage* gs ) - : QMutexLocker( &gs->m_mutex ) + : MutexLocker( &gs->m_mutex ) , m_gs( gs ) { } diff --git a/src/libcalamares/JobQueue.cpp b/src/libcalamares/JobQueue.cpp index e15df345e..64cb10e88 100644 --- a/src/libcalamares/JobQueue.cpp +++ b/src/libcalamares/JobQueue.cpp @@ -13,10 +13,10 @@ #include "CalamaresConfig.h" #include "GlobalStorage.h" #include "Job.h" +#include "compat/Mutex.h" #include "utils/Logger.h" #include -#include #include #include @@ -61,8 +61,8 @@ public: void finalize() { Q_ASSERT( m_runningJobs->isEmpty() ); - QMutexLocker qlock( &m_enqueMutex ); - QMutexLocker rlock( &m_runMutex ); + Calamares::MutexLocker qlock( &m_enqueMutex ); + Calamares::MutexLocker rlock( &m_runMutex ); std::swap( m_runningJobs, m_queuedJobs ); m_overallQueueWeight = m_runningJobs->isEmpty() ? 0.0 : ( m_runningJobs->last().cumulative + m_runningJobs->last().weight ); @@ -83,7 +83,7 @@ public: void enqueue( int moduleWeight, const JobList& jobs ) { - QMutexLocker qlock( &m_enqueMutex ); + Calamares::MutexLocker qlock( &m_enqueMutex ); qreal cumulative = m_queuedJobs->isEmpty() ? 0.0 : ( m_queuedJobs->last().cumulative + m_queuedJobs->last().weight ); @@ -108,7 +108,7 @@ public: void run() override { - QMutexLocker rlock( &m_runMutex ); + Calamares::MutexLocker rlock( &m_runMutex ); bool failureEncountered = false; QString message; ///< Filled in with errors QString details; @@ -159,7 +159,7 @@ public: */ QStringList queuedJobs() const { - QMutexLocker qlock( &m_enqueMutex ); + Calamares::MutexLocker qlock( &m_enqueMutex ); QStringList l; l.reserve( m_queuedJobs->count() ); for ( const auto& j : *m_queuedJobs ) diff --git a/src/libcalamares/compat/Mutex.h b/src/libcalamares/compat/Mutex.h new file mode 100644 index 000000000..36a14730b --- /dev/null +++ b/src/libcalamares/compat/Mutex.h @@ -0,0 +1,30 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2023 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + * + */ +#ifndef CALAMARES_COMPAT_MUTEX_H +#define CALAMARES_COMPAT_MUTEX_H + +#include + +namespace Calamares +{ + +/* + * In Qt5, QMutexLocker is a class and operates implicitly on + * QMutex but in Qt6 it is a template and needs a specialization. + */ +#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 ) +using MutexLocker = QMutexLocker; +#else +using MutexLocker = QMutexLocker< QMutex >; +#endif + +} // namespace Calamares + +#endif diff --git a/src/libcalamares/modulesystem/RequirementsChecker.cpp b/src/libcalamares/modulesystem/RequirementsChecker.cpp index 4e4a40ec4..cae69bc93 100644 --- a/src/libcalamares/modulesystem/RequirementsChecker.cpp +++ b/src/libcalamares/modulesystem/RequirementsChecker.cpp @@ -10,6 +10,7 @@ #include "RequirementsChecker.h" +#include "compat/Mutex.h" #include "modulesystem/Module.h" #include "modulesystem/Requirement.h" #include "modulesystem/RequirementsModel.h" @@ -61,7 +62,7 @@ void RequirementsChecker::finished() { static QMutex finishedMutex; - QMutexLocker lock( &finishedMutex ); + Calamares::MutexLocker lock( &finishedMutex ); if ( m_progressTimer && std::all_of( diff --git a/src/libcalamares/modulesystem/RequirementsModel.cpp b/src/libcalamares/modulesystem/RequirementsModel.cpp index b9a091014..3ad98ae88 100644 --- a/src/libcalamares/modulesystem/RequirementsModel.cpp +++ b/src/libcalamares/modulesystem/RequirementsModel.cpp @@ -10,6 +10,7 @@ #include "RequirementsModel.h" +#include "compat/Mutex.h" #include "utils/Logger.h" namespace Calamares @@ -18,7 +19,7 @@ namespace Calamares void RequirementsModel::clear() { - QMutexLocker l( &m_addLock ); + Calamares::MutexLocker l( &m_addLock ); beginResetModel(); m_requirements.clear(); endResetModel(); @@ -28,7 +29,7 @@ RequirementsModel::clear() void RequirementsModel::addRequirementsList( const Calamares::RequirementsList& requirements ) { - QMutexLocker l( &m_addLock ); + Calamares::MutexLocker l( &m_addLock ); beginResetModel(); for ( const auto& r : requirements ) diff --git a/src/libcalamares/network/Manager.cpp b/src/libcalamares/network/Manager.cpp index 330d23139..66c009222 100644 --- a/src/libcalamares/network/Manager.cpp +++ b/src/libcalamares/network/Manager.cpp @@ -9,11 +9,11 @@ #include "Manager.h" +#include "compat/Mutex.h" #include "utils/Logger.h" #include #include -#include #include #include #include @@ -84,7 +84,7 @@ namMutex() QNetworkAccessManager* Manager::Private::nam() { - QMutexLocker lock( namMutex() ); + Calamares::MutexLocker lock( namMutex() ); auto* thread = QThread::currentThread(); for ( const auto& n : m_perThreadNams ) @@ -106,7 +106,7 @@ Manager::Private::nam() void Manager::Private::cleanupNam() { - QMutexLocker lock( namMutex() ); + Calamares::MutexLocker lock( namMutex() ); auto* thread = QThread::currentThread(); bool cleanupFound = false; diff --git a/src/libcalamares/utils/Logger.cpp b/src/libcalamares/utils/Logger.cpp index 10f7cad8c..6f6379844 100644 --- a/src/libcalamares/utils/Logger.cpp +++ b/src/libcalamares/utils/Logger.cpp @@ -14,6 +14,7 @@ #include "Logger.h" #include "CalamaresVersionX.h" +#include "compat/Mutex.h" #include "utils/Dirs.h" #include @@ -84,7 +85,7 @@ log_enabled( unsigned int level ) static void log_implementation( const char* msg, unsigned int debugLevel, const bool withTime ) { - QMutexLocker lock( &s_mutex ); + Calamares::MutexLocker lock( &s_mutex ); const auto date = QDate::currentDate().toString( Qt::ISODate ); const auto time = QTime::currentTime().toString(); @@ -173,7 +174,7 @@ setupLogfile() // Lock while (re-)opening the logfile { - QMutexLocker lock( &s_mutex ); + Calamares::MutexLocker lock( &s_mutex ); logfile.open( logFile().toLocal8Bit(), std::ios::app ); if ( logfile.tellp() ) {