File indexing completed on 2024-04-28 16:49:42
0001 /* 0002 * SPDX-FileCopyrightText: 2012, 2013 Daniel Vrátil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 #pragma once 0007 0008 #include <QObject> 0009 #include <cstdint> 0010 0011 #include "xrandrcrtc.h" 0012 #include "xrandroutput.h" 0013 0014 class XRandRScreen; 0015 namespace KScreen 0016 { 0017 class Config; 0018 } 0019 0020 class XRandRConfig : public QObject 0021 { 0022 Q_OBJECT 0023 0024 public: 0025 XRandRConfig(); 0026 ~XRandRConfig() override; 0027 0028 XRandROutput::Map outputs() const; 0029 XRandROutput *output(xcb_randr_output_t output) const; 0030 0031 XRandRCrtc::Map crtcs() const; 0032 XRandRCrtc *crtc(xcb_randr_crtc_t crtc) const; 0033 0034 XRandRScreen *screen() const; 0035 0036 void addNewOutput(xcb_randr_output_t id); 0037 void addNewCrtc(xcb_randr_crtc_t crtc); 0038 void removeOutput(xcb_randr_output_t id); 0039 0040 KScreen::ConfigPtr toKScreenConfig() const; 0041 void applyKScreenConfig(const KScreen::ConfigPtr &config); 0042 0043 private: 0044 QSize screenSize(const KScreen::ConfigPtr &config) const; 0045 bool setScreenSize(const QSize &size) const; 0046 0047 void setOutputPriority(xcb_randr_output_t outputId, uint32_t priority) const; 0048 0049 bool disableOutput(const KScreen::OutputPtr &output) const; 0050 bool enableOutput(const KScreen::OutputPtr &output) const; 0051 bool changeOutput(const KScreen::OutputPtr &output) const; 0052 0053 bool sendConfig(const KScreen::OutputPtr &kscreenOutput, XRandRCrtc *crtc) const; 0054 0055 /** 0056 * We need to print stuff to discover the damn bug 0057 * where currentMode is null 0058 */ 0059 void printConfig(const KScreen::ConfigPtr &config) const; 0060 void printInternalCond() const; 0061 0062 XRandROutput::Map m_outputs; 0063 XRandRCrtc::Map m_crtcs; 0064 XRandRScreen *m_screen; 0065 };