Changeset View
Changeset View
Standalone View
Standalone View
plugins/platforms/drm/screens_drm.cpp
Show First 20 Lines • Show All 73 Lines • ▼ Show 20 Line(s) | |||||
74 | } | 74 | } | ||
75 | 75 | | |||
76 | int DrmScreens::number(const QPoint &pos) const | 76 | int DrmScreens::number(const QPoint &pos) const | ||
77 | { | 77 | { | ||
78 | int bestScreen = 0; | 78 | int bestScreen = 0; | ||
79 | int minDistance = INT_MAX; | 79 | int minDistance = INT_MAX; | ||
80 | const auto outputs = m_backend->enabledOutputs(); | 80 | const auto outputs = m_backend->enabledOutputs(); | ||
81 | for (int i = 0; i < outputs.size(); ++i) { | 81 | for (int i = 0; i < outputs.size(); ++i) { | ||
82 | const QRect &geo = outputs.at(i)->geometry(); | 82 | auto o = qobject_cast<DrmOutput*>(outputs.at(i)); | ||
83 | const QRect &geo = o->geometry(); | ||||
83 | if (geo.contains(pos)) { | 84 | if (geo.contains(pos)) { | ||
84 | return i; | 85 | return i; | ||
85 | } | 86 | } | ||
86 | int distance = QPoint(geo.topLeft() - pos).manhattanLength(); | 87 | int distance = QPoint(geo.topLeft() - pos).manhattanLength(); | ||
87 | distance = qMin(distance, QPoint(geo.topRight() - pos).manhattanLength()); | 88 | distance = qMin(distance, QPoint(geo.topRight() - pos).manhattanLength()); | ||
88 | distance = qMin(distance, QPoint(geo.bottomRight() - pos).manhattanLength()); | 89 | distance = qMin(distance, QPoint(geo.bottomRight() - pos).manhattanLength()); | ||
89 | distance = qMin(distance, QPoint(geo.bottomLeft() - pos).manhattanLength()); | 90 | distance = qMin(distance, QPoint(geo.bottomLeft() - pos).manhattanLength()); | ||
90 | if (distance < minDistance) { | 91 | if (distance < minDistance) { | ||
Show All 14 Lines | |||||
105 | } | 106 | } | ||
106 | 107 | | |||
107 | float DrmScreens::refreshRate(int screen) const | 108 | float DrmScreens::refreshRate(int screen) const | ||
108 | { | 109 | { | ||
109 | const auto outputs = m_backend->enabledOutputs(); | 110 | const auto outputs = m_backend->enabledOutputs(); | ||
110 | if (screen >= outputs.size()) { | 111 | if (screen >= outputs.size()) { | ||
111 | return Screens::refreshRate(screen); | 112 | return Screens::refreshRate(screen); | ||
112 | } | 113 | } | ||
113 | return outputs.at(screen)->currentRefreshRate() / 1000.0f; | 114 | auto *o = qobject_cast<DrmOutput*>(outputs.at(screen)); | ||
115 | return o->currentRefreshRate() / 1000.0f; | ||||
114 | } | 116 | } | ||
115 | 117 | | |||
116 | QSizeF DrmScreens::physicalSize(int screen) const | 118 | QSizeF DrmScreens::physicalSize(int screen) const | ||
117 | { | 119 | { | ||
118 | const auto outputs = m_backend->enabledOutputs(); | 120 | const auto outputs = m_backend->enabledOutputs(); | ||
119 | if (screen >= outputs.size()) { | 121 | if (screen >= outputs.size()) { | ||
120 | return Screens::physicalSize(screen); | 122 | return Screens::physicalSize(screen); | ||
121 | } | 123 | } | ||
122 | return outputs.at(screen)->physicalSize(); | 124 | auto *o = qobject_cast<DrmOutput*>(outputs.at(screen)); | ||
125 | return o->physicalSize(); | ||||
123 | } | 126 | } | ||
124 | 127 | | |||
125 | bool DrmScreens::isInternal(int screen) const | 128 | bool DrmScreens::isInternal(int screen) const | ||
126 | { | 129 | { | ||
127 | const auto outputs = m_backend->enabledOutputs(); | 130 | const auto outputs = m_backend->enabledOutputs(); | ||
128 | if (screen >= outputs.size()) { | 131 | if (screen >= outputs.size()) { | ||
129 | return false; | 132 | return false; | ||
130 | } | 133 | } | ||
131 | return outputs.at(screen)->isInternal(); | 134 | return outputs.at(screen)->isInternal(); | ||
132 | } | 135 | } | ||
133 | 136 | | |||
134 | bool DrmScreens::supportsTransformations(int screen) const | 137 | bool DrmScreens::supportsTransformations(int screen) const | ||
135 | { | 138 | { | ||
136 | const auto outputs = m_backend->enabledOutputs(); | 139 | const auto outputs = m_backend->enabledOutputs(); | ||
137 | if (screen >= outputs.size()) { | 140 | if (screen >= outputs.size()) { | ||
138 | return false; | 141 | return false; | ||
139 | } | 142 | } | ||
140 | return outputs.at(screen)->supportsTransformations(); | 143 | auto *o = qobject_cast<DrmOutput*>(outputs.at(screen)); | ||
144 | return o->supportsTransformations(); | ||||
141 | } | 145 | } | ||
142 | 146 | | |||
143 | Qt::ScreenOrientation DrmScreens::orientation(int screen) const | 147 | Qt::ScreenOrientation DrmScreens::orientation(int screen) const | ||
144 | { | 148 | { | ||
145 | const auto outputs = m_backend->outputs(); | 149 | const auto outputs = m_backend->outputs(); | ||
146 | if (screen >= outputs.size()) { | 150 | if (screen >= outputs.size()) { | ||
147 | return Qt::PrimaryOrientation; | 151 | return Qt::PrimaryOrientation; | ||
148 | } | 152 | } | ||
149 | return outputs.at(screen)->orientation(); | 153 | auto *o = qobject_cast<DrmOutput*>(outputs.at(screen)); | ||
154 | return o->orientation(); | ||||
150 | } | 155 | } | ||
151 | 156 | | |||
152 | } | 157 | } |