MythTV master
mythdisplaymutter.h
Go to the documentation of this file.
1#ifndef MYTHMUTTERDISPLAYCONFIG_H
2#define MYTHMUTTERDISPLAYCONFIG_H
3
4// Qt
5#include <QDBusArgument>
6#include <QDBusInterface>
7#include <QDBusMetaType>
8#include <QDBusReply>
9#include <QDBusVariant>
10#include <QObject>
11
12// MythTV
13#include "mythdisplay.h"
14
15#define DISP_CONFIG_SERVICE (QString("org.gnome.Mutter.DisplayConfig"))
16#define DISP_CONFIG_PATH (QString("/org/gnome/Mutter/DisplayConfig"))
17#define DISP_CONFIG_SIG (QString("ua(uxiiiiiuaua{sv})a(uxiausauaua{sv})a(uxuudu)ii"))
18
19using MythMutterMap = QMap<QString,QDBusVariant>;
20using MythMutterProperty = QPair<QString,QDBusVariant>;
21using MythMutterProperties = QList<MythMutterProperty>;
22
23// GetResources CRTCs signature a(uxiiiiiuaua{sv})
25{
26 uint32_t id {};
27 qint64 sys_id {}; // N.B. needs to be a Qt type here
28 int32_t x {};
29 int32_t y {};
30 int32_t width {};
31 int32_t height {};
32 int32_t currentmode {};
33 uint32_t currenttransform {};
34 QList<uint32_t> transforms;
36};
37
38// GetResources Outputs signature a(uxiausauaua{sv})
40{
41 uint32_t id {};
42 qint64 sys_id {};
43 int32_t current_crtc {};
44 QList<uint32_t> possible_crtcs;
45 QString name;
46 QList<uint32_t> modes;
47 QList<uint32_t> clones;
49
50 // MythTV properties
51 QString serialnumber;
52 QByteArray edid;
53 int widthmm {};
54 int heightmm {};
55};
56
57// GetResources Modes signature a(uxuudu)
59{
60 uint32_t id;
61 qint64 sys_id;
62 uint32_t width;
63 uint32_t height;
64 double frequency;
65 uint32_t flags;
66};
67
68using MythMutterCRTCList = QList<MythMutterCRTC>;
71using MythMutterOutputList = QList<MythMutterOutput>;
74using MythMutterModeList = QList<MythMutterMode>;
77
79{
80 Q_OBJECT
81
82 public:
83 static MythDisplayMutter* Create();
84 ~MythDisplayMutter() override;
85
86 void UpdateCurrentMode () override;
87 bool VideoModesAvailable () override { return true; }
88 bool UsingVideoModes () override;
89 const MythDisplayModes& GetVideoModes(void) override;
90 bool SwitchToVideoMode (QSize Size, double DesiredRate) override;
91
92 public slots:
93 void MonitorsChanged();
94
95 private:
97 bool IsValid();
99 void UpdateResources();
100
101 QDBusInterface* m_interface { nullptr };
102 uint32_t m_serialVal { 0 };
106 int m_outputIdx { -1 };
107 QMap<uint64_t, uint32_t> m_modeMap;
108};
109
110#endif
A subclass of MythDisplay using the org.gnome.Mutter.DisplayConfig DBUS interface.
void UpdateCurrentMode() override
Retrieve screen details.
const MythDisplayModes & GetVideoModes(void) override
QMap< uint64_t, uint32_t > m_modeMap
bool VideoModesAvailable() override
bool UsingVideoModes() override
MythMutterCRTCList m_crtcs
MythMutterOutputList m_outputs
bool SwitchToVideoMode(QSize Size, double DesiredRate) override
static MythDisplayMutter * Create()
Create a valid instance.
MythMutterModeList m_modes
QDBusInterface * m_interface
std::vector< MythDisplayMode > MythDisplayModes
Q_DECLARE_METATYPE(MythMutterCRTC)
QList< MythMutterCRTC > MythMutterCRTCList
QList< MythMutterOutput > MythMutterOutputList
QList< MythMutterProperty > MythMutterProperties
QMap< QString, QDBusVariant > MythMutterMap
QPair< QString, QDBusVariant > MythMutterProperty
QList< MythMutterMode > MythMutterModeList
MythMutterProperties properties
QList< uint32_t > transforms
uint32_t currenttransform
QList< uint32_t > modes
MythMutterProperties properties
QList< uint32_t > possible_crtcs
QList< uint32_t > clones