diff options
author | Tarja Sundqvist <[email protected]> | 2024-07-23 13:25:53 +0300 |
---|---|---|
committer | Tarja Sundqvist <[email protected]> | 2024-07-23 13:25:53 +0300 |
commit | 7c32569ad27b743b6cb50e2bcb67c9ca1674f238 (patch) | |
tree | 15b39c35a96707029dbd352e0e74cb78c59b3952 /src/quick/scenegraph/qsgthreadedrenderloop.cpp | |
parent | 5f4570b5164a828b20514b938957ce06b105ff3e (diff) | |
parent | e6e266221555bf3c5554427f7402f6e7e3087fa5 (diff) |
Merge tag 'v5.15.15-lts' into tqtc/lts-5.15-opensourcev5.15.15-lts-lgpl
Qt 5.15.15-lts release
Change-Id: I0272e1ec4b55be362e13e36cd48f532fe4b7c770
Diffstat (limited to 'src/quick/scenegraph/qsgthreadedrenderloop.cpp')
-rw-r--r-- | src/quick/scenegraph/qsgthreadedrenderloop.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp index d47b0d72a5..f5e3f2e864 100644 --- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp +++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp @@ -368,6 +368,7 @@ public: QQuickWindow *window; // Will be 0 when window is not exposed QSize windowSize; + QSize windowPixelSize; float dpr = 1; int rhiSampleCount = 1; bool rhiDeviceLost = false; @@ -406,6 +407,13 @@ bool QSGRenderThread::event(QEvent *e) stopEventProcessing = true; window = se->window; windowSize = se->size; + if (window) { + // Use platform window geometry to avoid introducing rounding errors + // due to fractonal Qt Gui scale factors. + QPlatformWindow *pw = window->handle(); + windowPixelSize = pw->geometry().size() * pw->devicePixelRatio(); + } + dpr = se->dpr; pendingUpdate |= SyncRequest; @@ -833,7 +841,8 @@ void QSGRenderThread::syncAndRender(QImage *grabImage) } } if (current) { - d->renderSceneGraph(windowSize, rhi ? cd->swapchain->currentPixelSize() : QSize()); + const QSize surfaceSize = rhi ? cd->swapchain->currentPixelSize() : windowPixelSize; + d->renderSceneGraph(windowSize, surfaceSize); if (profileFrames) renderTime = threadTimer.nsecsElapsed(); |