File indexing completed on 2024-05-12 17:02:07
0001 /* 0002 KWin - the KDE window manager 0003 This file is part of the KDE project. 0004 0005 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #include "outputbackend.h" 0011 0012 #include "dmabuftexture.h" 0013 #include "inputbackend.h" 0014 #include "openglbackend.h" 0015 #include "output.h" 0016 #include "outputconfiguration.h" 0017 #include "qpainterbackend.h" 0018 0019 namespace KWin 0020 { 0021 0022 OutputBackend::OutputBackend(QObject *parent) 0023 : QObject(parent) 0024 , m_eglDisplay(EGL_NO_DISPLAY) 0025 { 0026 } 0027 0028 OutputBackend::~OutputBackend() 0029 { 0030 } 0031 0032 std::unique_ptr<InputBackend> OutputBackend::createInputBackend() 0033 { 0034 return nullptr; 0035 } 0036 0037 std::unique_ptr<OpenGLBackend> OutputBackend::createOpenGLBackend() 0038 { 0039 return nullptr; 0040 } 0041 0042 std::unique_ptr<QPainterBackend> OutputBackend::createQPainterBackend() 0043 { 0044 return nullptr; 0045 } 0046 0047 std::optional<DmaBufParams> OutputBackend::testCreateDmaBuf(const QSize &size, quint32 format, const QVector<uint64_t> &modifiers) 0048 { 0049 return {}; 0050 } 0051 0052 std::shared_ptr<DmaBufTexture> OutputBackend::createDmaBufTexture(const QSize &size, quint32 format, uint64_t modifier) 0053 { 0054 return {}; 0055 } 0056 0057 std::shared_ptr<DmaBufTexture> OutputBackend::createDmaBufTexture(const DmaBufParams &attribs) 0058 { 0059 return createDmaBufTexture({attribs.width, attribs.height}, attribs.format, attribs.modifier); 0060 } 0061 0062 bool OutputBackend::applyOutputChanges(const OutputConfiguration &config) 0063 { 0064 const auto availableOutputs = outputs(); 0065 QVector<Output *> toBeEnabledOutputs; 0066 QVector<Output *> toBeDisabledOutputs; 0067 for (const auto &output : availableOutputs) { 0068 if (config.constChangeSet(output)->enabled) { 0069 toBeEnabledOutputs << output; 0070 } else { 0071 toBeDisabledOutputs << output; 0072 } 0073 } 0074 for (const auto &output : toBeEnabledOutputs) { 0075 output->applyChanges(config); 0076 } 0077 for (const auto &output : toBeDisabledOutputs) { 0078 output->applyChanges(config); 0079 } 0080 return true; 0081 } 0082 0083 Output *OutputBackend::findOutput(const QString &name) const 0084 { 0085 const auto candidates = outputs(); 0086 for (Output *candidate : candidates) { 0087 if (candidate->name() == name) { 0088 return candidate; 0089 } 0090 } 0091 return nullptr; 0092 } 0093 0094 Output *OutputBackend::createVirtualOutput(const QString &name, const QSize &size, double scale) 0095 { 0096 return nullptr; 0097 } 0098 0099 void OutputBackend::removeVirtualOutput(Output *output) 0100 { 0101 Q_ASSERT(!output); 0102 } 0103 0104 EGLDisplay KWin::OutputBackend::sceneEglDisplay() const 0105 { 0106 return m_eglDisplay; 0107 } 0108 0109 void OutputBackend::setSceneEglDisplay(EGLDisplay display) 0110 { 0111 m_eglDisplay = display; 0112 } 0113 0114 QString OutputBackend::supportInformation() const 0115 { 0116 return QStringLiteral("Name: %1\n").arg(metaObject()->className()); 0117 } 0118 0119 EGLContext OutputBackend::sceneEglGlobalShareContext() const 0120 { 0121 return m_globalShareContext; 0122 } 0123 0124 void OutputBackend::setSceneEglGlobalShareContext(EGLContext context) 0125 { 0126 m_globalShareContext = context; 0127 } 0128 0129 } // namespace KWin