(re-)discovered QMutexLocker, good for tightening up the code a bit

This commit is contained in:
Heather Anderson 2020-05-28 00:03:39 -07:00
parent 3cff3f8b5d
commit 47c96fcff5

View file

@ -12,6 +12,7 @@
#include "ContextAwareProfile.h" #include "ContextAwareProfile.h"
#include <cassert> #include <cassert>
#include <QtCore/QMutexLocker>
#include <QtCore/QThread> #include <QtCore/QThread>
#include <QtQml/QQmlContext> #include <QtQml/QQmlContext>
@ -24,18 +25,17 @@ QMutex RestrictedContextMonitor::gl_monitorMapProtect;
RestrictedContextMonitor::TMonitorMap RestrictedContextMonitor::gl_monitorMap; RestrictedContextMonitor::TMonitorMap RestrictedContextMonitor::gl_monitorMap;
RestrictedContextMonitor::~RestrictedContextMonitor() { RestrictedContextMonitor::~RestrictedContextMonitor() {
gl_monitorMapProtect.lock(); QMutexLocker locker(&gl_monitorMapProtect);
TMonitorMap::iterator lookup = gl_monitorMap.find(_context); TMonitorMap::iterator lookup = gl_monitorMap.find(_context);
if (lookup != gl_monitorMap.end()) { if (lookup != gl_monitorMap.end()) {
gl_monitorMap.erase(lookup); gl_monitorMap.erase(lookup);
} }
gl_monitorMapProtect.unlock();
} }
RestrictedContextMonitor::TSharedPointer RestrictedContextMonitor::getMonitor(QQmlContext* context, bool createIfMissing) { RestrictedContextMonitor::TSharedPointer RestrictedContextMonitor::getMonitor(QQmlContext* context, bool createIfMissing) {
TSharedPointer monitor; TSharedPointer monitor;
gl_monitorMapProtect.lock(); QMutexLocker locker(&gl_monitorMapProtect);
TMonitorMap::const_iterator lookup = gl_monitorMap.find(context); TMonitorMap::const_iterator lookup = gl_monitorMap.find(context);
if (lookup != gl_monitorMap.end()) { if (lookup != gl_monitorMap.end()) {
monitor = lookup.value().lock(); monitor = lookup.value().lock();
@ -45,7 +45,6 @@ RestrictedContextMonitor::TSharedPointer RestrictedContextMonitor::getMonitor(QQ
monitor->_selfPointer = monitor; monitor->_selfPointer = monitor;
gl_monitorMap.insert(context, monitor); gl_monitorMap.insert(context, monitor);
} }
gl_monitorMapProtect.unlock();
return monitor; return monitor;
} }