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 device = weakDevice.lock()) - device->shutdown(); - } + m_existingDevices.read([](const std::vector> &devices) { + for (const std::weak_ptr &weakDevice : devices) { + if (std::shared_ptr device = weakDevice.lock()) + device->shutdown(); + } + }); } expected_str> 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 #include -#include +#include namespace Docker::Internal { @@ -92,8 +92,7 @@ public: void shutdownExistingDevices(); private: - QMutex m_deviceListMutex; - std::vector> m_existingDevices; + Utils::SynchronizedValue>> m_existingDevices; }; } // namespace Docker::Internal