diff --git a/src/controllers/midi/midicontroller.cpp b/src/controllers/midi/midicontroller.cpp index a921287277a..5559d3713c9 100644 --- a/src/controllers/midi/midicontroller.cpp +++ b/src/controllers/midi/midicontroller.cpp @@ -39,7 +39,7 @@ MidiController::MidiController(const QString& deviceName) void MidiController::slotBeforeEngineShutdown() { Controller::slotBeforeEngineShutdown(); - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "slotBeforeEngineShutdown"); m_pMapping->removeInputHandlerMappings(); } @@ -58,15 +58,15 @@ QString MidiController::mappingExtension() { } void MidiController::setMapping(std::shared_ptr pMapping) { - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "setMapping"); m_pMapping = downcastAndClone(pMapping.get()); } std::shared_ptr MidiController::cloneMapping() { + const auto locker = MMutexLockerDebug(&m_mappingMutex, "cloneMapping"); if (!m_pMapping) { return nullptr; } - const auto locker = lockMutex(&m_mappingMutex); return std::make_shared(*m_pMapping); } @@ -97,12 +97,11 @@ bool MidiController::applyMapping(const QString& resourcePath) { } void MidiController::createOutputHandlers() { + const auto locker = MMutexLockerDebug(&m_mappingMutex, "createOutputHandlers"); if (!m_pMapping) { return; } - const auto locker = lockMutex(&m_mappingMutex); - if (m_pMapping->getOutputMappings().isEmpty()) { return; } @@ -230,11 +229,10 @@ void MidiController::clearTemporaryInputMappings() { } void MidiController::commitTemporaryInputMappings() { + const auto locker = MMutexLockerDebug(&m_mappingMutex, "commitTemporaryInputMappings"); if (!m_pMapping) { return; } - const auto locker = lockMutex(&m_mappingMutex); - // We want to replace duplicates that exist in m_mapping but allow duplicates // in m_temporaryInputMappings. To do this, we first remove every key in // m_temporaryInputMappings from m_mapping's input mappings. @@ -294,7 +292,7 @@ void MidiController::receivedShortMessage(unsigned char status, } } - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "receivedShortMessage"); auto it = m_pMapping->getInputMappings().constFind(mappingKey.key); for (; it != m_pMapping->getInputMappings().constEnd() && it.key() == mappingKey.key; ++it) { processInputMapping(it.value(), status, control, value, timestamp); @@ -597,7 +595,7 @@ void MidiController::receive(const QByteArray& data, mixxx::Duration timestamp) } } - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "receive"); const auto [inputMappingsBegin, inputMappingsEnd] = m_pMapping->getInputMappings().equal_range(mappingKey.key); std::for_each(inputMappingsBegin, inputMappingsEnd, [&](const auto& inputMapping) { @@ -649,7 +647,7 @@ QJSValue MidiController::makeInputHandler(int status, int midino, const QJSValue const auto midiKey = MidiKey(status, midino); - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "makeInputHandler"); auto it = m_pMapping->getInputMappings().constFind(midiKey.key); if (it != m_pMapping->getInputMappings().constEnd() && it.value().options.testFlag(MidiOption::Script) && @@ -676,6 +674,6 @@ QJSValue MidiController::makeInputHandler(int status, int midino, const QJSValue bool MidiController::removeInputMapping( uint16_t key, const MidiInputMapping& mapping) { - const auto locker = lockMutex(&m_mappingMutex); + const auto locker = MMutexLockerDebug(&m_mappingMutex, "removeInputMapping"); return m_pMapping->removeInputMapping(key, mapping); } diff --git a/src/controllers/midi/midicontroller.h b/src/controllers/midi/midicontroller.h index 81f5df8fdb5..7d0d94469d8 100644 --- a/src/controllers/midi/midicontroller.h +++ b/src/controllers/midi/midicontroller.h @@ -6,7 +6,7 @@ #include "controllers/midi/legacymidicontrollermapping.h" #include "controllers/midi/midimessage.h" #include "controllers/softtakeover.h" -#include "util/compatibility/qmutex.h" +#include "util/mutex.h" class MidiOutputHandler; class MidiController; @@ -48,10 +48,10 @@ class MidiController : public Controller { } bool isMappable() const override { + const auto locker = MMutexLockerDebug(&m_mappingMutex, "isMappable"); if (!m_pMapping) { return false; } - const auto locker = lockMutex(&m_mappingMutex); return m_pMapping->isMappable(); } @@ -113,7 +113,7 @@ class MidiController : public Controller { QHash m_temporaryInputMappings; QList m_outputs; - mutable QMutex m_mappingMutex; + mutable MMutex m_mappingMutex; std::unique_ptr m_pMapping; SoftTakeoverCtrl m_st; QList> m_fourteen_bit_queued_mappings;