File indexing completed on 2024-05-12 05:33:54
0001 // SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org 0002 // 0003 // SPDX-License-Identifier: LGPL-2.1-or-later 0004 0005 #include "dpms.h" 0006 #include "kscreendpms_debug.h" 0007 #include "waylanddpmshelper_p.h" 0008 #include "xcbdpmshelper_p.h" 0009 0010 #include <QGuiApplication> 0011 #include <QtGui/private/qtx11extras_p.h> 0012 0013 KScreen::Dpms::Dpms(QObject *parent) 0014 : QObject(parent) 0015 { 0016 if (QX11Info::isPlatformX11()) { 0017 m_helper.reset(new XcbDpmsHelper); 0018 } else if (QGuiApplication::platformName().startsWith(QLatin1String("wayland"), Qt::CaseInsensitive)) { 0019 m_helper.reset(new WaylandDpmsHelper); 0020 } else { 0021 qCWarning(KSCREEN_DPMS) << "dpms unsupported on this system"; 0022 return; 0023 } 0024 0025 connect(m_helper.data(), &AbstractDpmsHelper::supportedChanged, this, &Dpms::supportedChanged); 0026 connect(m_helper.data(), &AbstractDpmsHelper::modeChanged, this, &Dpms::modeChanged); 0027 connect(m_helper.data(), &AbstractDpmsHelper::hasPendingChangesChanged, this, &Dpms::hasPendingChangesChanged); 0028 } 0029 0030 KScreen::Dpms::~Dpms() 0031 { 0032 } 0033 0034 void KScreen::Dpms::switchMode(KScreen::Dpms::Mode mode, const QList<QScreen *> &screens) 0035 { 0036 m_helper->trigger(mode, screens.isEmpty() ? qGuiApp->screens() : screens); 0037 } 0038 0039 bool KScreen::Dpms::isSupported() const 0040 { 0041 return m_helper->isSupported(); 0042 } 0043 0044 bool KScreen::Dpms::hasPendingChanges() const 0045 { 0046 return m_helper->hasPendingChanges(); 0047 } 0048 0049 #include "moc_dpms.cpp"