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