diff --git a/panels/dock/taskmanager/CMakeLists.txt b/panels/dock/taskmanager/CMakeLists.txt index 7ace3bdd3..6cabad4ab 100644 --- a/panels/dock/taskmanager/CMakeLists.txt +++ b/panels/dock/taskmanager/CMakeLists.txt @@ -83,6 +83,7 @@ qt_generate_wayland_protocol_client_sources(dock-taskmanager target_link_libraries(dock-taskmanager PRIVATE dde-shell-frame Qt${QT_VERSION_MAJOR}::WaylandClientPrivate + Qt${QT_VERSION_MAJOR}::Concurrent yaml-cpp PkgConfig::WaylandClient ) diff --git a/panels/dock/taskmanager/x11preview.cpp b/panels/dock/taskmanager/x11preview.cpp index fc1866916..2bea2ccc8 100644 --- a/panels/dock/taskmanager/x11preview.cpp +++ b/panels/dock/taskmanager/x11preview.cpp @@ -11,22 +11,23 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include -#include -#include #include -#include +#include #include +#include +#include +#include +#include +#include +#include #include -#include +#include +#include +#include +#include +#include #include #include @@ -161,9 +162,13 @@ class AppItemWindowModel : public QAbstractListModel { m_previewPixmaps.clear(); if (!m_item.isNull()) { - for (const auto &window : m_item->getAppendWindows()) { + const auto previewPixmaps = QtConcurrent::blockingMapped(m_item->getAppendWindows(), [this](const QPointer &window) { auto previewPixmap = fetchWindowPreview(window->id()); - m_previewPixmaps.insert(window->id(), previewPixmap); + return QPair{window->id(), previewPixmap}; + }); + + for (const auto &item : previewPixmaps) { + m_previewPixmaps.insert(item.first, item.second); } } }