File indexing completed on 2024-05-19 13:20:40
0001 /* 0002 * SPDX-FileCopyrightText: 2014-2015 Sebastian Kügler <sebas@kde.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 #include "waylandscreen.h" 0007 0008 #include "waylandconfig.h" 0009 #include "waylandoutputdevice.h" 0010 0011 #include <mode.h> 0012 #include <screen.h> 0013 0014 using namespace KScreen; 0015 0016 WaylandScreen::WaylandScreen(WaylandConfig *config) 0017 : QObject(config) 0018 , m_outputCount(0) 0019 { 0020 } 0021 0022 ScreenPtr WaylandScreen::toKScreenScreen(KScreen::ConfigPtr &parent) const 0023 { 0024 Q_UNUSED(parent); 0025 0026 KScreen::ScreenPtr kscreenScreen(new KScreen::Screen); 0027 updateKScreenScreen(kscreenScreen); 0028 return kscreenScreen; 0029 } 0030 0031 void WaylandScreen::setOutputs(const QList<WaylandOutputDevice *> &outputs) 0032 { 0033 m_outputCount = outputs.count(); 0034 0035 QRect r; 0036 for (const auto *out : outputs) { 0037 if (out->enabled()) { 0038 r |= QRect(out->globalPosition(), out->pixelSize() / out->scale()); 0039 } 0040 } 0041 m_size = r.size(); 0042 } 0043 0044 void WaylandScreen::updateKScreenScreen(KScreen::ScreenPtr &screen) const 0045 { 0046 screen->setMinSize(QSize(0, 0)); 0047 0048 // 64000^2 should be enough for everyone. 0049 screen->setMaxSize(QSize(64000, 64000)); 0050 0051 screen->setCurrentSize(m_size); 0052 screen->setMaxActiveOutputsCount(m_outputCount); 0053 }