diff options
author | David Edmundson <davidedmundson@kde.org> | 2017-05-05 17:29:13 +0200 |
---|---|---|
committer | David Edmundson <davidedmundson@kde.org> | 2017-05-18 09:53:05 +0000 |
commit | e80979756369a19236a9a90ca0bfb0210670b327 (patch) | |
tree | ea11493d7a7f834970d2142d2e25e9c8837b43ab | |
parent | 6e199d1018cb569e1ffaa6ad4d3203333280650d (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.cpp | 8 | ||||
-rw-r--r-- | src/client/qwaylandwindow_p.h | 1 |
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; |