diff --git a/src/plugins/platforms/virtual/virtual_backend.cpp b/src/plugins/platforms/virtual/virtual_backend.cpp index dfaffaf679..835e3f7957 100644 --- a/src/plugins/platforms/virtual/virtual_backend.cpp +++ b/src/plugins/platforms/virtual/virtual_backend.cpp @@ -116,16 +116,8 @@ void VirtualBackend::setVirtualOutputs(int count, QVector geometries, QVe Q_ASSERT(geometries.size() == 0 || geometries.size() == count); Q_ASSERT(scales.size() == 0 || scales.size() == count); - while (!m_outputsEnabled.isEmpty()) { - VirtualOutput *output = m_outputsEnabled.takeLast(); - Q_EMIT outputDisabled(output); - } - - while (!m_outputs.isEmpty()) { - VirtualOutput *output = m_outputs.takeLast(); - Q_EMIT outputRemoved(output); - delete output; - } + const QVector disabled = m_outputsEnabled; + const QVector removed = m_outputs; int sumWidth = 0; for (int i = 0; i < count; i++) { @@ -146,6 +138,17 @@ void VirtualBackend::setVirtualOutputs(int count, QVector geometries, QVe Q_EMIT outputEnabled(vo); } + for (VirtualOutput *output : disabled) { + m_outputsEnabled.removeOne(output); + Q_EMIT outputDisabled(output); + } + + for (VirtualOutput *output : removed) { + m_outputs.removeOne(output); + Q_EMIT outputRemoved(output); + delete output; + } + Q_EMIT screensQueried(); }