/* KWin - the KDE window manager This file is part of the KDE project. SPDX-FileCopyrightText: 2015 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include "core/outputbackend.h" #include "utils/filedescriptor.h" #include namespace KWin { class VirtualBackend; class VirtualOutput; class DrmDevice; class KWIN_EXPORT VirtualBackend : public OutputBackend { Q_OBJECT public: VirtualBackend(QObject *parent = nullptr); ~VirtualBackend() override; bool initialize() override; std::unique_ptr createQPainterBackend() override; std::unique_ptr createOpenGLBackend() override; struct OutputInfo { QRect geometry; double scale = 1; bool internal = false; }; Output *addOutput(const OutputInfo &info); void setVirtualOutputs(const QList &infos); Outputs outputs() const override; QList supportedCompositors() const override; void setEglDisplay(std::unique_ptr &&display); EglDisplay *sceneEglDisplayObject() const override; DrmDevice *drmDevice() const; Q_SIGNALS: void virtualOutputsSet(bool countChanged); private: VirtualOutput *createOutput(const OutputInfo &info); QList m_outputs; std::unique_ptr m_drmDevice; std::unique_ptr m_display; }; } // namespace KWin