diff options
-rw-r--r-- | src/plugins/docker/dockerdevice.cpp | 14 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevice.h | 5 |
2 files changed, 9 insertions, 10 deletions
diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index a2696c8ee61..361c09639dc 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -1385,19 +1385,19 @@ DockerDeviceFactory::DockerDeviceFactory() }); setConstructionFunction([this] { auto device = DockerDevice::create(); - QMutexLocker lk(&m_deviceListMutex); - m_existingDevices.push_back(device); + m_existingDevices.writeLocked()->push_back(device); return device; }); } void DockerDeviceFactory::shutdownExistingDevices() { - QMutexLocker lk(&m_deviceListMutex); - for (const auto &weakDevice : m_existingDevices) { - if (std::shared_ptr<DockerDevice> device = weakDevice.lock()) - device->shutdown(); - } + m_existingDevices.read([](const std::vector<std::weak_ptr<DockerDevice>> &devices) { + for (const std::weak_ptr<DockerDevice> &weakDevice : devices) { + if (std::shared_ptr<DockerDevice> device = weakDevice.lock()) + device->shutdown(); + } + }); } expected_str<QPair<Utils::OsType, Utils::OsArch>> DockerDevicePrivate::osTypeAndArch() const diff --git a/src/plugins/docker/dockerdevice.h b/src/plugins/docker/dockerdevice.h index ea2f0d21feb..8c575b08ad6 100644 --- a/src/plugins/docker/dockerdevice.h +++ b/src/plugins/docker/dockerdevice.h @@ -8,7 +8,7 @@ #include <projectexplorer/devicesupport/idevice.h> #include <projectexplorer/devicesupport/idevicefactory.h> -#include <QMutex> +#include <utils/synchronizedvalue.h> namespace Docker::Internal { @@ -92,8 +92,7 @@ public: void shutdownExistingDevices(); private: - QMutex m_deviceListMutex; - std::vector<std::weak_ptr<DockerDevice>> m_existingDevices; + Utils::SynchronizedValue<std::vector<std::weak_ptr<DockerDevice>>> m_existingDevices; }; } // namespace Docker::Internal |