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 
19 using MythMutterMap = QMap<QString,QDBusVariant>;
20 using MythMutterProperty = QPair<QString,QDBusVariant>;
21 using 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 
68 using MythMutterCRTCList = QList<MythMutterCRTC>;
71 using MythMutterOutputList = QList<MythMutterOutput>;
74 using 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();
98  void InitialiseInterface();
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
MythMutterCRTC::transforms
QList< uint32_t > transforms
Definition: mythdisplaymutter.h:34
MythDisplayMutter::VideoModesAvailable
bool VideoModesAvailable() override
Definition: mythdisplaymutter.h:87
MythMutterOutput
Definition: mythdisplaymutter.h:39
MythMutterOutput::heightmm
int heightmm
Definition: mythdisplaymutter.h:54
MythDisplayMutter::MythDisplayMutter
MythDisplayMutter()
Definition: mythdisplaymutter.cpp:270
MythMutterProperty
QPair< QString, QDBusVariant > MythMutterProperty
Definition: mythdisplaymutter.h:20
MythMutterOutput::properties
MythMutterProperties properties
Definition: mythdisplaymutter.h:48
MythMutterMap
QMap< QString, QDBusVariant > MythMutterMap
Definition: mythdisplaymutter.h:19
MythMutterCRTC::properties
MythMutterProperties properties
Definition: mythdisplaymutter.h:35
MythDisplayMutter::IsValid
bool IsValid()
Definition: mythdisplaymutter.cpp:281
MythDisplayModes
std::vector< MythDisplayMode > MythDisplayModes
Definition: mythdisplaymode.h:18
MythMutterCRTC::currentmode
int32_t currentmode
Definition: mythdisplaymutter.h:32
MythDisplayMutter::UpdateResources
void UpdateResources()
Definition: mythdisplaymutter.cpp:464
MythDisplayMutter::MonitorsChanged
void MonitorsChanged()
Definition: mythdisplaymutter.cpp:286
MythMutterOutput::serialnumber
QString serialnumber
Definition: mythdisplaymutter.h:51
MythMutterOutput::name
QString name
Definition: mythdisplaymutter.h:45
MythMutterMode::sys_id
qint64 sys_id
Definition: mythdisplaymutter.h:61
MythDisplayMutter::SwitchToVideoMode
bool SwitchToVideoMode(QSize Size, double DesiredRate) override
Definition: mythdisplaymutter.cpp:391
MythMutterCRTC::x
int32_t x
Definition: mythdisplaymutter.h:28
MythMutterOutput::clones
QList< uint32_t > clones
Definition: mythdisplaymutter.h:47
MythDisplayMutter::GetVideoModes
const MythDisplayModes & GetVideoModes(void) override
Definition: mythdisplaymutter.cpp:299
MythMutterCRTC::y
int32_t y
Definition: mythdisplaymutter.h:29
MythDisplayMutter::UsingVideoModes
bool UsingVideoModes() override
Definition: mythdisplaymutter.cpp:292
mythdisplay.h
MythMutterMode::flags
uint32_t flags
Definition: mythdisplaymutter.h:65
MythMutterCRTC::width
int32_t width
Definition: mythdisplaymutter.h:30
MythMutterOutput::modes
QList< uint32_t > modes
Definition: mythdisplaymutter.h:46
MythMutterOutput::possible_crtcs
QList< uint32_t > possible_crtcs
Definition: mythdisplaymutter.h:44
MythMutterOutputList
QList< MythMutterOutput > MythMutterOutputList
Definition: mythdisplaymutter.h:71
MythDisplayMutter::m_outputs
MythMutterOutputList m_outputs
Definition: mythdisplaymutter.h:104
MythDisplayMutter::m_outputIdx
int m_outputIdx
Definition: mythdisplaymutter.h:106
MythMutterMode::id
uint32_t id
Definition: mythdisplaymutter.h:60
MythDisplayMutter::m_crtcs
MythMutterCRTCList m_crtcs
Definition: mythdisplaymutter.h:103
MythDisplayMutter::m_serialVal
uint32_t m_serialVal
Definition: mythdisplaymutter.h:102
MythDisplayMutter::InitialiseInterface
void InitialiseInterface()
Definition: mythdisplaymutter.cpp:356
MythDisplayMutter::m_interface
QDBusInterface * m_interface
Definition: mythdisplaymutter.h:101
MythDisplay
Definition: mythdisplay.h:22
MythMutterCRTC
Definition: mythdisplaymutter.h:24
MythMutterMode::height
uint32_t height
Definition: mythdisplaymutter.h:63
MythMutterCRTC::height
int32_t height
Definition: mythdisplaymutter.h:31
MythMutterMode::frequency
double frequency
Definition: mythdisplaymutter.h:64
MythMutterOutput::current_crtc
int32_t current_crtc
Definition: mythdisplaymutter.h:43
MythMutterMode
Definition: mythdisplaymutter.h:58
MythDisplayMutter::~MythDisplayMutter
~MythDisplayMutter() override
Definition: mythdisplaymutter.cpp:276
MythMutterCRTCList
QList< MythMutterCRTC > MythMutterCRTCList
Definition: mythdisplaymutter.h:68
MythMutterOutput::widthmm
int widthmm
Definition: mythdisplaymutter.h:53
MythDisplayMutter::Create
static MythDisplayMutter * Create()
Create a valid instance.
Definition: mythdisplaymutter.cpp:191
MythMutterCRTC::sys_id
qint64 sys_id
Definition: mythdisplaymutter.h:27
Q_DECLARE_METATYPE
Q_DECLARE_METATYPE(MythMutterCRTC)
MythMutterOutput::edid
QByteArray edid
Definition: mythdisplaymutter.h:52
MythDisplayMutter::m_modes
MythMutterModeList m_modes
Definition: mythdisplaymutter.h:105
MythMutterOutput::sys_id
qint64 sys_id
Definition: mythdisplaymutter.h:42
MythDisplayMutter
A subclass of MythDisplay using the org.gnome.Mutter.DisplayConfig DBUS interface.
Definition: mythdisplaymutter.h:78
MythMutterModeList
QList< MythMutterMode > MythMutterModeList
Definition: mythdisplaymutter.h:74
MythMutterCRTC::currenttransform
uint32_t currenttransform
Definition: mythdisplaymutter.h:33
MythMutterProperties
QList< MythMutterProperty > MythMutterProperties
Definition: mythdisplaymutter.h:21
MythDisplayMutter::m_modeMap
QMap< uint64_t, uint32_t > m_modeMap
Definition: mythdisplaymutter.h:107
MythMutterMode::width
uint32_t width
Definition: mythdisplaymutter.h:62
MythDisplayMutter::UpdateCurrentMode
void UpdateCurrentMode() override
Retrieve screen details.
Definition: mythdisplaymutter.cpp:344