summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBe <be@mixxx.org>2021-09-17 14:06:27 -0500
committerBe <be@mixxx.org>2021-09-17 14:16:36 -0500
commit44170cc85cc2ff4298265a58e07ef2d9004a4c3d (patch)
tree4edc7e50591e184c9e30278fb95fa98cf611df8a
parent62daaf7f845d0084a44d4b57eacdfe486c81438a (diff)
use Qt5/6 QMutex & QMutexLocker compatibility macros
-rw-r--r--src/controllers/controllermanager.cpp11
-rw-r--r--src/engine/cachingreader/cachingreaderworker.cpp5
-rw-r--r--src/engine/controls/cuecontrol.cpp52
-rw-r--r--src/engine/controls/cuecontrol.h7
-rw-r--r--src/engine/engineworkerscheduler.cpp7
-rw-r--r--src/errordialoghandler.cpp9
-rw-r--r--src/library/scanner/scannerglobal.h9
-rw-r--r--src/mixer/playerinfo.cpp13
-rw-r--r--src/mixer/playermanager.cpp45
-rw-r--r--src/mixer/playermanager.h7
-rw-r--r--src/track/cue.cpp41
-rw-r--r--src/track/keyutils.cpp12
-rw-r--r--src/track/track.cpp4
-rw-r--r--src/util/logging.cpp7
-rw-r--r--src/util/mutex.h5
-rw-r--r--src/util/sandbox.cpp10
-rw-r--r--src/util/sandbox.h7
-rw-r--r--src/util/statsmanager.cpp5
-rw-r--r--src/util/tapfilter.cpp3
-rw-r--r--src/vinylcontrol/vinylcontrolprocessor.cpp16
-rw-r--r--src/vinylcontrol/vinylcontrolprocessor.h11
-rw-r--r--src/waveform/waveform.h24
-rw-r--r--src/widget/wlibrary.cpp10
-rw-r--r--src/widget/wlibrary.h9
24 files changed, 158 insertions, 171 deletions
diff --git a/src/controllers/controllermanager.cpp b/src/controllers/controllermanager.cpp
index 48472ae69f..606a45132a 100644
--- a/src/controllers/controllermanager.cpp
+++ b/src/controllers/controllermanager.cpp
@@ -8,6 +8,7 @@
#include "controllers/midi/portmidienumerator.h"
#include "moc_controllermanager.cpp"
#include "util/cmdlineargs.h"
+#include "util/qtmutex.h"
#include "util/time.h"
#include "util/trace.h"
#ifdef __HSS1394__
@@ -162,7 +163,7 @@ void ControllerManager::slotShutdown() {
// Clear m_enumerators before deleting the enumerators to prevent other code
// paths from accessing them.
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
QList<ControllerEnumerator*> enumerators = m_enumerators;
m_enumerators.clear();
locker.unlock();
@@ -177,7 +178,7 @@ void ControllerManager::slotShutdown() {
}
void ControllerManager::updateControllerList() {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
if (m_enumerators.isEmpty()) {
qWarning() << "updateControllerList called but no enumerators have been added!";
return;
@@ -199,14 +200,14 @@ void ControllerManager::updateControllerList() {
}
QList<Controller*> ControllerManager::getControllers() const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
return m_controllers;
}
QList<Controller*> ControllerManager::getControllerList(bool bOutputDevices, bool bInputDevices) {
qDebug() << "ControllerManager::getControllerList";
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
QList<Controller*> controllers = m_controllers;
locker.unlock();
@@ -294,7 +295,7 @@ void ControllerManager::slotSetUpDevices() {
}
void ControllerManager::maybeStartOrStopPolling() {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
QList<Controller*> controllers = m_controllers;
locker.unlock();
diff --git a/src/engine/cachingreader/cachingreaderworker.cpp b/src/engine/cachingreader/cachingreaderworker.cpp
index 3a9fd507a2..515b8d7e9c 100644
--- a/src/engine/cachingreader/cachingreaderworker.cpp
+++ b/src/engine/cachingreader/cachingreaderworker.cpp
@@ -11,6 +11,7 @@
#include "util/compatibility.h"
#include "util/event.h"
#include "util/logger.h"
+#include "util/qtmutex.h"
namespace {
@@ -78,7 +79,7 @@ ReaderStatusUpdate CachingReaderWorker::processReadRequest(
// WARNING: Always called from a different thread (GUI)
void CachingReaderWorker::newTrack(TrackPointer pTrack) {
{
- QMutexLocker locker(&m_newTrackMutex);
+ const auto locker = lockMutex(&m_newTrackMutex);
m_pNewTrack = pTrack;
m_newTrackAvailable = true;
}
@@ -96,7 +97,7 @@ void CachingReaderWorker::run() {
if (m_newTrackAvailable) {
TrackPointer pLoadTrack;
{ // locking scope
- QMutexLocker locker(&m_newTrackMutex);
+ const auto locker = lockMutex(&m_newTrackMutex);
pLoadTrack = m_pNewTrack;
m_pNewTrack.reset();
m_newTrackAvailable = false;
diff --git a/src/engine/controls/cuecontrol.cpp b/src/engine/controls/cuecontrol.cpp
index ffd16e752b..a41068631b 100644
--- a/src/engine/controls/cuecontrol.cpp
+++ b/src/engine/controls/cuecontrol.cpp
@@ -84,12 +84,8 @@ CueControl::CueControl(const QString& group,
m_pStopButton(ControlObject::getControl(ConfigKey(group, "stop"))),
m_bypassCueSetByPlay(false),
m_iNumHotCues(NUM_HOT_CUES),
- m_pCurrentSavedLoopControl(nullptr)
-#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
- ,
- m_trackMutex(QMutex::Recursive)
-#endif
-{
+ m_pCurrentSavedLoopControl(nullptr),
+ m_trackMutex(QT_RECURSIVE_MUTEX_INIT) {
// To silence a compiler warning about CUE_MODE_PIONEER.
Q_UNUSED(CUE_MODE_PIONEER);
createControls();
@@ -418,7 +414,7 @@ void CueControl::detachCue(HotcueControl* pControl) {
// via seekOnLoad(). There is the theoretical and pending issue of a delayed control
// command intended for the old track that might be performed instead.
void CueControl::trackLoaded(TrackPointer pNewTrack) {
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
if (m_pLoadedTrack) {
disconnect(m_pLoadedTrack.get(), nullptr, this, nullptr);
@@ -532,12 +528,12 @@ void CueControl::seekOnLoad(mixxx::audio::FramePos seekOnLoadPosition) {
}
void CueControl::cueUpdated() {
- //QMutexLocker lock(&m_mutex);
+ //auto lock = lockMutex(&m_mutex);
// We should get a trackCuesUpdated call anyway, so do nothing.
}
void CueControl::loadCuesFromTrack() {
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
if (!m_pLoadedTrack) {
return;
}
@@ -752,7 +748,7 @@ void CueControl::hotcueSet(HotcueControl* pControl, double value, HotcueSetMode
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
if (!m_pLoadedTrack) {
return;
}
@@ -1095,7 +1091,7 @@ void CueControl::hotcueClear(HotcueControl* pControl, double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
if (!m_pLoadedTrack) {
return;
}
@@ -1111,7 +1107,7 @@ void CueControl::hotcueClear(HotcueControl* pControl, double value) {
void CueControl::hotcuePositionChanged(
HotcueControl* pControl, double value) {
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
if (!m_pLoadedTrack) {
return;
}
@@ -1198,7 +1194,7 @@ void CueControl::cueSet(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const mixxx::audio::FramePos position = getQuantizedCurrentPosition();
TrackPointer pLoadedTrack = m_pLoadedTrack;
lock.unlock();
@@ -1229,7 +1225,7 @@ void CueControl::cueGoto(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
// Seek to cue point
const auto mainCuePosition =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
@@ -1251,7 +1247,7 @@ void CueControl::cueGotoAndPlay(double value) {
}
cueGoto(value);
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
// Start playing if not already
// End previewing to not jump back if a sticking finger on a cue
@@ -1466,7 +1462,7 @@ void CueControl::cueDefault(double v) {
}
void CueControl::pause(double v) {
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
//qDebug() << "CueControl::pause()" << v;
if (v > 0.0) {
m_pPlay->set(0.0);
@@ -1474,7 +1470,7 @@ void CueControl::pause(double v) {
}
void CueControl::playStutter(double v) {
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
//qDebug() << "playStutter" << v;
if (v > 0.0) {
if (m_pPlay->toBool()) {
@@ -1496,7 +1492,7 @@ void CueControl::introStartSet(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const mixxx::audio::FramePos position = getQuantizedCurrentPosition();
if (!position.isValid()) {
@@ -1555,7 +1551,7 @@ void CueControl::introStartClear(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto introEndPosition =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pIntroEndPosition->get());
@@ -1596,7 +1592,7 @@ void CueControl::introEndSet(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const mixxx::audio::FramePos position = getQuantizedCurrentPosition();
if (!position.isValid()) {
@@ -1655,7 +1651,7 @@ void CueControl::introEndClear(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto introStart =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pIntroStartPosition->get());
@@ -1681,7 +1677,7 @@ void CueControl::introEndActivate(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto introEnd =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pIntroEndPosition->get());
@@ -1699,7 +1695,7 @@ void CueControl::outroStartSet(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const mixxx::audio::FramePos position = getQuantizedCurrentPosition();
if (!position.isValid()) {
@@ -1758,7 +1754,7 @@ void CueControl::outroStartClear(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto outroEnd =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pOutroEndPosition->get());
@@ -1784,7 +1780,7 @@ void CueControl::outroStartActivate(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto outroStart =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pOutroStartPosition->get());
@@ -1802,7 +1798,7 @@ void CueControl::outroEndSet(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const mixxx::audio::FramePos position = getQuantizedCurrentPosition();
if (!position.isValid()) {
@@ -1861,7 +1857,7 @@ void CueControl::outroEndClear(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto outroStart =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pOutroStartPosition->get());
@@ -1887,7 +1883,7 @@ void CueControl::outroEndActivate(double value) {
return;
}
- QMutexLocker lock(&m_trackMutex);
+ auto lock = lockMutex(&m_trackMutex);
const auto outroEnd =
mixxx::audio::FramePos::fromEngineSamplePosMaybeInvalid(
m_pOutroEndPosition->get());
diff --git a/src/engine/controls/cuecontrol.h b/src/engine/controls/cuecontrol.h
index bcaf81629e..2d26732f91 100644
--- a/src/engine/controls/cuecontrol.h
+++ b/src/engine/controls/cuecontrol.h
@@ -12,6 +12,7 @@
#include "track/cue.h"
#include "track/track_decl.h"
#include "util/parented_ptr.h"
+#include "util/qtmutex.h"
#define NUM_HOT_CUES 37
@@ -348,11 +349,7 @@ class CueControl : public EngineControl {
QMap<QObject*, int> m_controlMap;
// Must be locked when using the m_pLoadedTrack and it's properties
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
- QRecursiveMutex m_trackMutex;
-#else
- QMutex m_trackMutex;
-#endif
+ QT_RECURSIVE_MUTEX m_trackMutex;
TrackPointer m_pLoadedTrack; // is written from an engine worker thread
friend class HotcueControlTest;
diff --git a/src/engine/engineworkerscheduler.cpp b/src/engine/engineworkerscheduler.cpp
index 9f3a3ad7f6..120ff794ad 100644
--- a/src/engine/engineworkerscheduler.cpp
+++ b/src/engine/engineworkerscheduler.cpp
@@ -5,6 +5,7 @@
#include "engine/engineworker.h"
#include "moc_engineworkerscheduler.cpp"
#include "util/event.h"
+#include "util/qtmutex.h"
EngineWorkerScheduler::EngineWorkerScheduler(QObject* pParent)
: m_bWakeScheduler(false),
@@ -24,7 +25,7 @@ void EngineWorkerScheduler::workerReady() {
void EngineWorkerScheduler::addWorker(EngineWorker* pWorker) {
DEBUG_ASSERT(pWorker);
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
m_workers.push_back(pWorker);
}
@@ -43,14 +44,14 @@ void EngineWorkerScheduler::run() {
while (!m_bQuit) {
Event::start(tag);
{
- QMutexLocker lock(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
for(const auto& pWorker: m_workers) {
pWorker->wakeIfReady();
}
}
Event::end(tag);
{
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
if (!m_bQuit) {
// Wait for next runWorkers() call
m_waitCondition.wait(&m_mutex); // unlock mutex and wait
diff --git a/src/errordialoghandler.cpp b/src/errordialoghandler.cpp
index abea6f618e..276e898632 100644
--- a/src/errordialoghandler.cpp
+++ b/src/errordialoghandler.cpp
@@ -8,6 +8,7 @@
#include "moc_errordialoghandler.cpp"
#include "util/assert.h"
+#include "util/qtmutex.h"
#include "util/versionstore.h"
ErrorDialogProperties::ErrorDialogProperties()
@@ -115,7 +116,7 @@ bool ErrorDialogHandler::requestErrorDialog(ErrorDialogProperties* props) {
}
// Skip if a dialog with the same key is already displayed
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
bool keyExists = m_dialogKeys.contains(props->getKey());
locker.unlock();
if (keyExists) {
@@ -163,7 +164,7 @@ void ErrorDialogHandler::errorDialog(ErrorDialogProperties* pProps) {
// This deletes the msgBox automatically, avoiding a memory leak
pMsgBox->setAttribute(Qt::WA_DeleteOnClose, true);
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
// To avoid duplicate dialogs on the same error
m_dialogKeys.append(props->m_key);
@@ -201,7 +202,7 @@ void ErrorDialogHandler::errorDialog(ErrorDialogProperties* pProps) {
}
void ErrorDialogHandler::boxClosed(const QString& key, QMessageBox* msgBox) {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
locker.unlock();
QMessageBox::StandardButton whichStdButton = msgBox->standardButton(msgBox->clickedButton());
@@ -215,7 +216,7 @@ void ErrorDialogHandler::boxClosed(const QString& key, QMessageBox* msgBox) {
return;
}
- QMutexLocker locker2(&m_mutex);
+ const auto locker2 = lockMutex(&m_mutex);
if (m_dialogKeys.contains(key)) {
if (!m_dialogKeys.removeOne(key)) {
qWarning() << "Error dialog key removal from list failed!";
diff --git a/src/library/scanner/scannerglobal.h b/src/library/scanner/scannerglobal.h
index ed89f03118..18aaa4ad45 100644
--- a/src/library/scanner/scannerglobal.h
+++ b/src/library/scanner/scannerglobal.h
@@ -12,6 +12,7 @@
#include "util/cache.h"
#include "util/fileaccess.h"
#include "util/performancetimer.h"
+#include "util/qtmutex.h"
#include "util/task.h"
class ScannerGlobal {
@@ -56,7 +57,7 @@ class ScannerGlobal {
bool testAndMarkDirectoryScanned(const QDir& dir) {
const QString canonicalPath(dir.canonicalPath());
- QMutexLocker locker(&m_directoriesScannedMutex);
+ const auto locker = lockMutex(&m_directoriesScannedMutex);
if (m_directoriesScanned.contains(canonicalPath)) {
return true;
} else {
@@ -66,7 +67,7 @@ class ScannerGlobal {
}
void addUnhashedDir(const mixxx::FileAccess& dirAccess) {
- QMutexLocker locker(&m_directoriesUnhashedMutex);
+ const auto locker = lockMutex(&m_directoriesUnhashedMutex);
m_directoriesUnhashed.append(dirAccess);
}
@@ -78,7 +79,7 @@ class ScannerGlobal {
// TODO(rryan) test whether tasks should create their own QRegExp.
bool isAudioFileSupported(const QString& fileName) const {
- QMutexLocker locker(&m_supportedExtensionsMatcherMutex);
+ const auto locker = lockMutex(&m_supportedExtensionsMatcherMutex);
return m_supportedExtensionsMatcher.indexIn(fileName) != -1;
}
@@ -88,7 +89,7 @@ class ScannerGlobal {
// TODO(rryan) test whether tasks should create their own QRegExp.
bool isCoverFileSupported(const QString& fileName) const {
- QMutexLocker locker(&m_supportedCoverExtensionsMatcherMutex);
+ const auto locker = lockMutex(&m_supportedCoverExtensionsMatcherMutex);
return m_supportedCoverExtensionsMatcher.indexIn(fileName) != -1;
}
diff --git a/src/mixer/playerinfo.cpp b/src/mixer/playerinfo.cpp
index 8d0aa4a31a..3b8085e2dd 100644
--- a/src/mixer/playerinfo.cpp
+++ b/src/mixer/playerinfo.cpp
@@ -9,6 +9,7 @@
#include "mixer/playermanager.h"
#include "moc_playerinfo.cpp"
#include "track/track.h"
+#include "util/qtmutex.h"
namespace {
@@ -52,14 +53,14 @@ void PlayerInfo::destroy() {
}
TrackPointer PlayerInfo::getTrackInfo(const QString& group) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
return m_loadedTrackMap.value(group);
}
void PlayerInfo::setTrackInfo(const QString& group, const TrackPointer& pTrack) {
TrackPointer pOld;
{ // Scope
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
pOld = m_loadedTrackMap.value(group);
m_loadedTrackMap.insert(group, pTrack);
}
@@ -77,7 +78,7 @@ void PlayerInfo::setTrackInfo(const QString& group, const TrackPointer& pTrack)
}
bool PlayerInfo::isTrackLoaded(const TrackPointer& pTrack) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
QMapIterator<QString, TrackPointer> it(m_loadedTrackMap);
while (it.hasNext()) {
it.next();
@@ -89,13 +90,13 @@ bool PlayerInfo::isTrackLoaded(const TrackPointer& pTrack) const {
}
QMap<QString, TrackPointer> PlayerInfo::getLoadedTracks() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
QMap<QString, TrackPointer> ret = m_loadedTrackMap;
return ret;
}
bool PlayerInfo::isFileLoaded(const QString& track_location) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
QMapIterator<QString, TrackPointer> it(m_loadedTrackMap);
while (it.hasNext()) {
it.next();
@@ -115,7 +116,7 @@ void PlayerInfo::timerEvent(QTimerEvent* pTimerEvent) {
}
void PlayerInfo::updateCurrentPlayingDeck() {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
double maxVolume = 0;
int maxDeck = -1;
diff --git a/src/mixer/playermanager.cpp b/src/mixer/playermanager.cpp
index cce731dbaa..a3340cd210 100644
--- a/src/mixer/playermanager.cpp
+++ b/src/mixer/playermanager.cpp
@@ -43,10 +43,7 @@ PlayerManager::PlayerManager(UserSettingsPointer pConfig,
SoundManager* pSoundManager,
EffectsManager* pEffectsManager,
EngineMaster* pEngine)
- :
-#if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
- m_mutex(QMutex::Recursive),
-#endif
+ : m_mutex(QT_RECURSIVE_MUTEX_INIT),
m_pConfig(pConfig),
m_pSoundManager(pSoundManager),
m_pEffectsManager(pEffectsManager),
@@ -84,7 +81,7 @@ PlayerManager::PlayerManager(UserSettingsPointer pConfig,
PlayerManager::~PlayerManager() {
kLogger.debug() << "Destroying";
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
m_pSamplerBank->saveSamplerBankToPath(
m_pConfig->getSettingsPath() + "/samplers.xml");
@@ -113,7 +110,7 @@ PlayerManager::~PlayerManager() {
}
void PlayerManager::bindToLibrary(Library* pLibrary) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
connect(pLibrary, &Library::loadTrackToPlayer, this, &PlayerManager::slotLoadTrackToPlayer);
connect(pLibrary,
&Library::loadTrack,
@@ -279,7 +276,7 @@ unsigned int PlayerManager::numPreviewDecks() {
}
void PlayerManager::slotChangeNumDecks(double v) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
int num = (int)v;
VERIFY_OR_DEBUG_ASSERT(num <= kMaxNumberOfDecks) {
@@ -309,7 +306,7 @@ void PlayerManager::slotChangeNumDecks(double v) {
}
void PlayerManager::slotChangeNumSamplers(double v) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
int num = (int)v;
if (num < m_samplers.size()) {
// The request was invalid -- don't set the value.
@@ -324,7 +321,7 @@ void PlayerManager::slotChangeNumSamplers(double v) {
}
void PlayerManager::slotChangeNumPreviewDecks(double v) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
int num = (int)v;
if (num < m_previewDecks.size()) {
// The request was invalid -- don't set the value.
@@ -338,7 +335,7 @@ void PlayerManager::slotChangeNumPreviewDecks(double v) {
}
void PlayerManager::slotChangeNumMicrophones(double v) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
int num = (int)v;
if (num < m_microphones.size()) {
// The request was invalid -- don't set the value.
@@ -352,7 +349,7 @@ void PlayerManager::slotChangeNumMicrophones(double v) {
}
void PlayerManager::slotChangeNumAuxiliaries(double v) {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
int num = (int)v;
if (num < m_auxiliaries.size()) {
// The request was invalid -- don't set the value.
@@ -366,7 +363,7 @@ void PlayerManager::slotChangeNumAuxiliaries(double v) {
}
void PlayerManager::addDeck() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
double count = m_pCONumDecks->get() + 1;
slotChangeNumDecks(count);
}
@@ -446,7 +443,7 @@ void PlayerManager::loadSamplers() {
}
void PlayerManager::addSampler() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
double count = m_pCONumSamplers->get() + 1;
slotChangeNumSamplers(count);
}
@@ -480,7 +477,7 @@ void PlayerManager::addSamplerInner() {
}
void PlayerManager::addPreviewDeck() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
slotChangeNumPreviewDecks(m_pCONumPreviewDecks->get() + 1);
}
@@ -513,7 +510,7 @@ void PlayerManager::addPreviewDeckInner() {
}
void PlayerManager::addMicrophone() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
slotChangeNumMicrophones(m_pCONumMicrophones->get() + 1);
}
@@ -535,7 +532,7 @@ void PlayerManager::addMicrophoneInner() {
}
void PlayerManager::addAuxiliary() {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
slotChangeNumAuxiliaries(m_pCONumAuxiliaries->get() + 1);
}
@@ -558,7 +555,7 @@ BaseTrackPlayer* PlayerManager::getPlayer(const QString& group) const {
}
BaseTrackPlayer* PlayerManager::getPlayer(const ChannelHandle& handle) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
if (m_players.contains(handle)) {
return m_players[handle];
@@ -567,7 +564,7 @@ BaseTrackPlayer* PlayerManager::getPlayer(const ChannelHandle& handle) const {
}
Deck* PlayerManager::getDeck(unsigned int deck) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
VERIFY_OR_DEBUG_ASSERT(deck > 0 && deck <= numDecks()) {
qWarning() << "getDeck() called with invalid number:" << deck;
return nullptr;
@@ -576,7 +573,7 @@ Deck* PlayerManager::getDeck(unsigned int deck) const {
}
PreviewDeck* PlayerManager::getPreviewDeck(unsigned int libPreviewPlayer) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
if (libPreviewPlayer < 1 || libPreviewPlayer > numPreviewDecks()) {
kLogger.warning() << "Warning getPreviewDeck() called with invalid index: "
<< libPreviewPlayer;
@@ -586,7 +583,7 @@ PreviewDeck* PlayerManager::getPreviewDeck(unsigned int libPreviewPlayer) const
}
Sampler* PlayerManager::getSampler(unsigned int sampler) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
if (sampler < 1 || sampler > numSamplers()) {
kLogger.warning() << "Warning getSampler() called with invalid index: "
<< sampler;
@@ -596,7 +593,7 @@ Sampler* PlayerManager::getSampler(unsigned int sampler) const {
}
Microphone* PlayerManager::getMicrophone(unsigned int microphone) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
if (microphone < 1 || microphone >= static_cast<unsigned int>(m_microphones.size())) {
kLogger.warning() << "Warning getMicrophone() called with invalid index: "
<< microphone;
@@ -606,7 +603,7 @@ Microphone* PlayerManager::getMicrophone(unsigned int microphone) const {
}
Auxiliary* PlayerManager::getAuxiliary(unsigned int auxiliary) const {
- QMutexLocker locker(&m_mutex);
+ const auto locker = lockMutex(&m_mutex);
if (auxiliary < 1 || auxiliary > static_cast<unsigned int>(m_auxiliaries.size())) {
kLogger.warning() << "Warning getAuxiliary() called with invalid index: "
<< auxiliary;
@@ -685,7 +682,7 @@ void PlayerManager::slotLoadToSampler(const QString& location, int sampler) {
}
void PlayerManager::slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack) {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
QList<Deck*>::iterator it = m_decks.begin();
while (it != m_decks.end()) {
Deck* pDeck = *it;
@@ -704,7 +701,7 @@ void PlayerManager::slotLoadTrackIntoNextAvailableDeck(TrackPointer pTrack) {
}
void PlayerManager::slotLoadTrackIntoNextAvailableSampler(TrackPointer pTrack) {
- QMutexLocker locker(&m_mutex);
+ auto locker = lockMutex(&m_mutex);
QList<Sampler*>::iterator it = m_samplers.begin();
while (it != m_samplers.end()) {
Sampler* pSampler = *it;
diff --git a/src/mixer/playermanager.h b/src/mixer/playermanager.h
index 661579e0ca..f1bba67615 100644
--- a/src/mixer/playermanager.h
+++ b/src/mixer/playermanager.h
@@ -11,6 +11,7 @@
#include "track/track_decl.h"
#include "util/parented_ptr.h"
#include "util/performancetimer.h"
+#include "util/qtmutex.h"
class Auxiliary;
class BaseTrackPlayer;
@@ -251,11 +252,7 @@ class PlayerManager : public QObject, public PlayerManagerInterface {
void addAuxiliaryInner();
// Used to protect access to PlayerManager state across threads.
-#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
- mutable QRecursiveMutex m_mutex;
-#else
- mutable QMutex m_mutex;
-#endif
+ mutable QT_RECURSIVE_MUTEX m_mutex;
PerformanceTimer m_cloneTimer;
QString m_lastLoadedPlayer;
diff --git a/src/track/cue.cpp b/src/track/cue.cpp
index 74c7e52148..9b50216ec3 100644
--- a/src/track/cue.cpp
+++ b/src/track/cue.cpp
@@ -9,6 +9,7 @@
#include "util/assert.h"
#include "util/color/color.h"
#include "util/color/predefinedcolorpalettes.h"
+#include "util/qtmutex.h"
namespace {
@@ -111,7 +112,7 @@ Cue::Cue(
mixxx::CueInfo Cue::getCueInfo(
mixxx::audio::SampleRate sampleRate) const {
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
return mixxx::CueInfo(
m_type,
positionFramesToMillis(m_startPosition, sampleRate),
@@ -122,12 +123,12 @@ mixxx::CueInfo Cue::getCueInfo(
}
DbId Cue::getId() const {
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
return m_dbId;
}
void Cue::setId(DbId cueId) {
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
m_dbId = cueId;
// Neither mark as dirty nor do emit the updated() signal.
// This function is only called after adding the Cue object
@@ -138,12 +139,12 @@ void Cue::setId(DbId cueId) {
}
mixxx::CueType Cue::getType() const {
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
return m_type;
}
void Cue::setType(mixxx::CueType type) {
- QMutexLocker lock(&m_mutex);
+ auto lock = lockMutex(&m_mutex);
if (m_type == type) {
return;
}
@@ -154,12 +155,12 @@ void Cue::setType(mixxx::CueType type) {
}
mixxx::audio::FramePos Cue::getPosition() const {
- QMutexLocker lock(&m_mutex);
+ const auto lock = lockMutex(&m_mutex);
return m_startPosition;
}
void Cue::setStartPosition(mixxx::audio::FramePos position) {
- QMutexLocker lock(&m_mutex);
+ auto lock = lockMutex(&m_mutex);
if (m_startPosition == position) {
return;
}
@@ -170,7 +171,7 @@ void Cue::setStartPosition(mixxx::audio::FramePos position) {
}
void Cue::setEndPosition(mixxx::audio::FramePos position) {
- QMutexLocker loc