File indexing completed on 2024-04-28 16:49:42
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@redhat.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 * 0006 */ 0007 #pragma once 0008 0009 #include <QMap> 0010 #include <QObject> 0011 #include <QRect> 0012 #include <QVector> 0013 0014 #include <xcb/randr.h> 0015 0016 class XRandRConfig; 0017 0018 class XRandRCrtc : public QObject 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 typedef QMap<xcb_randr_crtc_t, XRandRCrtc *> Map; 0024 0025 XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config); 0026 0027 xcb_randr_crtc_t crtc() const; 0028 xcb_randr_mode_t mode() const; 0029 0030 QRect geometry() const; 0031 xcb_randr_rotation_t rotation() const; 0032 0033 QVector<xcb_randr_output_t> possibleOutputs(); 0034 QVector<xcb_randr_output_t> outputs() const; 0035 0036 bool connectOutput(xcb_randr_output_t output); 0037 void disconectOutput(xcb_randr_output_t output); 0038 0039 bool isFree() const; 0040 0041 void update(); 0042 void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom); 0043 0044 void updateTimestamp(const xcb_timestamp_t tmstamp); 0045 void updateConfigTimestamp(const xcb_timestamp_t tmstamp); 0046 bool isChangedFromOutside() const; 0047 0048 private: 0049 xcb_randr_crtc_t m_crtc; 0050 xcb_randr_mode_t m_mode; 0051 0052 QRect m_geometry; 0053 xcb_randr_rotation_t m_rotation; 0054 0055 QVector<xcb_randr_output_t> m_possibleOutputs; 0056 QVector<xcb_randr_output_t> m_outputs; 0057 0058 xcb_timestamp_t m_timestamp; 0059 xcb_timestamp_t m_configTimestamp; 0060 };