diff --git a/platform.h b/platform.h --- a/platform.h +++ b/platform.h @@ -65,17 +65,6 @@ class DecoratedClientImpl; } -class KWIN_EXPORT Outputs : public QVector -{ -public: - Outputs(){}; - template - Outputs(const QVector &other) { - resize(other.size()); - std::copy(other.constBegin(), other.constEnd(), begin()); - } -}; - class KWIN_EXPORT Platform : public QObject { Q_OBJECT @@ -419,13 +408,9 @@ } // outputs with connections (org_kde_kwin_outputdevice) - virtual Outputs outputs() const { - return Outputs(); - } + virtual QVector outputs() const; // actively compositing outputs (wl_output) - virtual Outputs enabledOutputs() const { - return Outputs(); - } + virtual QVector enabledOutputs() const; AbstractOutput *findOutput(const QByteArray &uuid); /** diff --git a/platform.cpp b/platform.cpp --- a/platform.cpp +++ b/platform.cpp @@ -547,6 +547,16 @@ new EffectsHandlerImpl(compositor, scene); } +QVector Platform::outputs() const +{ + return QVector(); +} + +QVector Platform::enabledOutputs() const +{ + return QVector(); +} + QString Platform::supportInformation() const { return QStringLiteral("Name: %1\n").arg(metaObject()->className()); diff --git a/plugins/platforms/drm/drm_backend.h b/plugins/platforms/drm/drm_backend.h --- a/plugins/platforms/drm/drm_backend.h +++ b/plugins/platforms/drm/drm_backend.h @@ -80,8 +80,8 @@ int fd() const { return m_fd; } - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; QVector drmOutputs() const { return m_outputs; } diff --git a/plugins/platforms/drm/drm_backend.cpp b/plugins/platforms/drm/drm_backend.cpp --- a/plugins/platforms/drm/drm_backend.cpp +++ b/plugins/platforms/drm/drm_backend.cpp @@ -132,14 +132,14 @@ Platform::prepareShutdown(); } -Outputs DrmBackend::outputs() const +QVector DrmBackend::outputs() const { - return m_outputs; + return qvector_cast(m_outputs); } -Outputs DrmBackend::enabledOutputs() const +QVector DrmBackend::enabledOutputs() const { - return m_enabledOutputs; + return qvector_cast(m_enabledOutputs); } void DrmBackend::createDpmsFilter() diff --git a/plugins/platforms/fbdev/fb_backend.h b/plugins/platforms/fbdev/fb_backend.h --- a/plugins/platforms/fbdev/fb_backend.h +++ b/plugins/platforms/fbdev/fb_backend.h @@ -82,8 +82,8 @@ return m_bgr; } - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; QVector supportedCompositors() const override { return QVector{QPainterCompositing}; diff --git a/plugins/platforms/fbdev/fb_backend.cpp b/plugins/platforms/fbdev/fb_backend.cpp --- a/plugins/platforms/fbdev/fb_backend.cpp +++ b/plugins/platforms/fbdev/fb_backend.cpp @@ -266,14 +266,14 @@ } } -Outputs FramebufferBackend::outputs() const +QVector FramebufferBackend::outputs() const { - return m_outputs; + return qvector_cast(m_outputs); } -Outputs FramebufferBackend::enabledOutputs() const +QVector FramebufferBackend::enabledOutputs() const { - return m_outputs; + return qvector_cast(m_outputs); } } diff --git a/plugins/platforms/hwcomposer/hwcomposer_backend.h b/plugins/platforms/hwcomposer/hwcomposer_backend.h --- a/plugins/platforms/hwcomposer/hwcomposer_backend.h +++ b/plugins/platforms/hwcomposer/hwcomposer_backend.h @@ -77,8 +77,8 @@ Screens *createScreens(QObject *parent = nullptr) override; OpenGLBackend *createOpenGLBackend() override; - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; QSize size() const; QSize screenSize() const override; diff --git a/plugins/platforms/hwcomposer/hwcomposer_backend.cpp b/plugins/platforms/hwcomposer/hwcomposer_backend.cpp --- a/plugins/platforms/hwcomposer/hwcomposer_backend.cpp +++ b/plugins/platforms/hwcomposer/hwcomposer_backend.cpp @@ -356,15 +356,15 @@ return new HwcomposerScreens(this, parent); } -Outputs HwcomposerBackend::outputs() const +QVector HwcomposerBackend::outputs() const { if (!m_output.isNull()) { - return QVector({m_output.data()}); + return { m_output.data() }; } return {}; } -Outputs HwcomposerBackend::enabledOutputs() const +QVector HwcomposerBackend::enabledOutputs() const { return outputs(); } diff --git a/plugins/platforms/virtual/virtual_backend.h b/plugins/platforms/virtual/virtual_backend.h --- a/plugins/platforms/virtual/virtual_backend.h +++ b/plugins/platforms/virtual/virtual_backend.h @@ -30,7 +30,6 @@ namespace KWin { -class VirtualOutput; class KWIN_EXPORT VirtualBackend : public Platform { @@ -54,8 +53,8 @@ Q_INVOKABLE void setVirtualOutputs(int count, QVector geometries = QVector(), QVector scales = QVector()); - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; QVector supportedCompositors() const override { if (selectedCompositor() != NoCompositing) { @@ -68,8 +67,8 @@ void virtualOutputsSet(bool countChanged); private: - QVector m_outputs; - QVector m_enabledOutputs; + QVector m_outputs; + QVector m_enabledOutputs; QScopedPointer m_screenshotDir; }; diff --git a/plugins/platforms/virtual/virtual_backend.cpp b/plugins/platforms/virtual/virtual_backend.cpp --- a/plugins/platforms/virtual/virtual_backend.cpp +++ b/plugins/platforms/virtual/virtual_backend.cpp @@ -102,12 +102,12 @@ return new EglGbmBackend(this); } -Outputs VirtualBackend::outputs() const +QVector VirtualBackend::outputs() const { return m_outputs; } -Outputs VirtualBackend::enabledOutputs() const +QVector VirtualBackend::enabledOutputs() const { return m_enabledOutputs; } diff --git a/plugins/platforms/wayland/wayland_backend.h b/plugins/platforms/wayland/wayland_backend.h --- a/plugins/platforms/wayland/wayland_backend.h +++ b/plugins/platforms/wayland/wayland_backend.h @@ -208,8 +208,8 @@ void checkBufferSwap(); WaylandOutput* getOutputAt(const QPointF globalPosition); - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; QVector waylandOutputs() const { return m_outputs; } diff --git a/plugins/platforms/wayland/wayland_backend.cpp b/plugins/platforms/wayland/wayland_backend.cpp --- a/plugins/platforms/wayland/wayland_backend.cpp +++ b/plugins/platforms/wayland/wayland_backend.cpp @@ -835,15 +835,15 @@ #endif } -Outputs WaylandBackend::outputs() const +QVector WaylandBackend::outputs() const { - return m_outputs; + return qvector_cast(m_outputs); } -Outputs WaylandBackend::enabledOutputs() const +QVector WaylandBackend::enabledOutputs() const { // all outputs are enabled - return m_outputs; + return qvector_cast(m_outputs); } } diff --git a/plugins/platforms/x11/standalone/x11_platform.h b/plugins/platforms/x11/standalone/x11_platform.h --- a/plugins/platforms/x11/standalone/x11_platform.h +++ b/plugins/platforms/x11/standalone/x11_platform.h @@ -75,8 +75,8 @@ void initOutputs(); void updateOutputs(); - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; protected: void doHideCursor() override; diff --git a/plugins/platforms/x11/standalone/x11_platform.cpp b/plugins/platforms/x11/standalone/x11_platform.cpp --- a/plugins/platforms/x11/standalone/x11_platform.cpp +++ b/plugins/platforms/x11/standalone/x11_platform.cpp @@ -548,14 +548,14 @@ } } -Outputs X11StandalonePlatform::outputs() const +QVector X11StandalonePlatform::outputs() const { - return m_outputs; + return qvector_cast(m_outputs); } -Outputs X11StandalonePlatform::enabledOutputs() const +QVector X11StandalonePlatform::enabledOutputs() const { - return m_outputs; + return qvector_cast(m_outputs); } } diff --git a/plugins/platforms/x11/windowed/x11windowed_backend.h b/plugins/platforms/x11/windowed/x11windowed_backend.h --- a/plugins/platforms/x11/windowed/x11windowed_backend.h +++ b/plugins/platforms/x11/windowed/x11windowed_backend.h @@ -81,8 +81,8 @@ return QVector{OpenGLCompositing, QPainterCompositing}; } - Outputs outputs() const override; - Outputs enabledOutputs() const override; + QVector outputs() const override; + QVector enabledOutputs() const override; Q_SIGNALS: void sizeChanged(); diff --git a/plugins/platforms/x11/windowed/x11windowed_backend.cpp b/plugins/platforms/x11/windowed/x11windowed_backend.cpp --- a/plugins/platforms/x11/windowed/x11windowed_backend.cpp +++ b/plugins/platforms/x11/windowed/x11windowed_backend.cpp @@ -534,14 +534,14 @@ return m_outputs.at(screen)->window(); } -Outputs X11WindowedBackend::outputs() const +QVector X11WindowedBackend::outputs() const { - return m_outputs; + return qvector_cast(m_outputs); } -Outputs X11WindowedBackend::enabledOutputs() const +QVector X11WindowedBackend::enabledOutputs() const { - return m_outputs; + return qvector_cast(m_outputs); } } diff --git a/utils.h b/utils.h --- a/utils.h +++ b/utils.h @@ -233,6 +233,15 @@ void setupChildProcess() override; }; +template +QVector qvector_cast(const QVector &collection) +{ + QVector mapped; + mapped.reserve(collection.size()); + std::copy(collection.constBegin(), collection.constEnd(), std::back_inserter(mapped)); + return mapped; +} + } // namespace // Must be outside namespace