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"