aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/scenegraph/qsgthreadedrenderloop.cpp
diff options
context:
space:
mode:
authorTarja Sundqvist <[email protected]>2024-07-23 13:25:53 +0300
committerTarja Sundqvist <[email protected]>2024-07-23 13:25:53 +0300
commit7c32569ad27b743b6cb50e2bcb67c9ca1674f238 (patch)
tree15b39c35a96707029dbd352e0e74cb78c59b3952 /src/quick/scenegraph/qsgthreadedrenderloop.cpp
parent5f4570b5164a828b20514b938957ce06b105ff3e (diff)
parente6e266221555bf3c5554427f7402f6e7e3087fa5 (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.cpp11
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();