summaryrefslogtreecommitdiffstats
path: root/src/client/qwaylandscreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/qwaylandscreen.cpp')
-rw-r--r--src/client/qwaylandscreen.cpp28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
index 2cc719776..6213da87f 100644
--- a/src/client/qwaylandscreen.cpp
+++ b/src/client/qwaylandscreen.cpp
@@ -95,6 +95,11 @@ QImage::Format QWaylandScreen::format() const
return mFormat;
}
+QSizeF QWaylandScreen::physicalSize() const
+{
+ return mPhysicalSize;
+}
+
QDpi QWaylandScreen::logicalDpi() const
{
static int force_dpi = !qgetenv("QT_WAYLAND_FORCE_DPI").isEmpty() ? qgetenv("QT_WAYLAND_FORCE_DPI").toInt() : -1;
@@ -153,16 +158,11 @@ void QWaylandScreen::output_mode(uint32_t flags, int width, int height, int refr
QSize size(width, height);
- if (size != mGeometry.size()) {
+ if (size != mGeometry.size())
mGeometry.setSize(size);
- QWindowSystemInterface::handleScreenGeometryChange(screen(), mGeometry);
- QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), mGeometry);
- }
- if (refresh != mRefreshRate) {
+ if (refresh != mRefreshRate)
mRefreshRate = refresh;
- QWindowSystemInterface::handleScreenRefreshRateChange(screen(), refreshRate());
- }
}
void QWaylandScreen::output_geometry(int32_t x, int32_t y,
@@ -202,14 +202,18 @@ void QWaylandScreen::output_geometry(int32_t x, int32_t y,
if (!model.isEmpty())
mOutputName = model;
- QRect geom(x, y, width, height);
-
- if (mGeometry == geom)
- return;
+ mPhysicalSize = QSize(width, height);
+ mGeometry.moveTopLeft(QPoint(x, y));
+}
- mGeometry = geom;
+void QWaylandScreen::output_done()
+{
+ // the done event is sent after all the geometry and the mode events are sent,
+ // and the last mode event to be sent is the active one, so we can trust the
+ // values of mGeometry and mRefreshRate here
QWindowSystemInterface::handleScreenGeometryChange(screen(), mGeometry);
QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(), mGeometry);
+ QWindowSystemInterface::handleScreenRefreshRateChange(screen(), refreshRate());
}
QT_END_NAMESPACE