summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Edmundson <davidedmundson@kde.org>2017-05-05 17:29:13 +0200
committerDavid Edmundson <davidedmundson@kde.org>2017-05-18 09:53:05 +0000
commite80979756369a19236a9a90ca0bfb0210670b327 (patch)
treeea11493d7a7f834970d2142d2e25e9c8837b43ab
parent6e199d1018cb569e1ffaa6ad4d3203333280650d (diff)
Match WaylandWindow scale to what we set on the buffer, not the screen
Currently if the screen scale changes we report a new devicePixelRatio to rendering but we don't send a new set_buffer_scale nor do we update the buffer sizes. This leaves us in a corrupt state. Change-Id: I5bb2bd5eec440cd1ce9080cd3a3dc65448f68298 Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
-rw-r--r--src/client/qwaylandwindow.cpp8
-rw-r--r--src/client/qwaylandwindow_p.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index a70a4f54b..18470913b 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -92,6 +92,7 @@ QWaylandWindow::QWaylandWindow(QWindow *window)
, mResizeDirty(false)
, mResizeAfterSwap(qEnvironmentVariableIsSet("QT_WAYLAND_RESIZE_AFTER_SWAP"))
, mSentInitialResize(false)
+ , mScale(1)
, mState(Qt::WindowNoState)
, mMask()
, mBackingStore(Q_NULLPTR)
@@ -189,9 +190,12 @@ void QWaylandWindow::initWindow()
}
}
+ mScale = screen()->scale();
+
// Enable high-dpi rendering. Scale() returns the screen scale factor and will
// typically be integer 1 (normal-dpi) or 2 (high-dpi). Call set_buffer_scale()
// to inform the compositor that high-resolution buffers will be provided.
+ //FIXME this needs to be changed when the screen changes along with a resized backing store
if (mDisplay->compositorVersion() >= 3)
set_buffer_scale(scale());
@@ -847,12 +851,12 @@ bool QWaylandWindow::isExposed() const
int QWaylandWindow::scale() const
{
- return screen()->scale();
+ return mScale;
}
qreal QWaylandWindow::devicePixelRatio() const
{
- return screen()->devicePixelRatio();
+ return mScale;
}
bool QWaylandWindow::setMouseGrabEnabled(bool grab)
diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
index 8e72b1076..29eb6c596 100644
--- a/src/client/qwaylandwindow_p.h
+++ b/src/client/qwaylandwindow_p.h
@@ -235,6 +235,7 @@ protected:
bool mSentInitialResize;
QPoint mOffset;
+ int mScale;
QIcon mWindowIcon;