diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2014-03-20 14:33:06 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-20 22:15:50 +0100 |
commit | 20d9454ce6c32e61794f68d75fc82bd67737a306 (patch) | |
tree | 3068d43b78439014b0762a176c7ed2ebfeb2ac47 | |
parent | 63fb30eb29c26cd7ba0d9133610acb85cad83775 (diff) |
Fix QQuickView::grabWindow() on retina displays
Multiply by window->devicePixelRatio() at all
qt_gl_read_framebuffer() call sites.
Task-number: QTBUG-35962
Change-Id: If58e4f97fc5d931ba2e222f8cb1a0641d52c3257
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
-rw-r--r-- | src/quick/items/qquickrendercontrol.cpp | 2 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 2 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgrenderloop.cpp | 2 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgthreadedrenderloop.cpp | 2 | ||||
-rw-r--r-- | src/quick/scenegraph/qsgwindowsrenderloop.cpp | 2 |
5 files changed, 5 insertions, 5 deletions
diff --git a/src/quick/items/qquickrendercontrol.cpp b/src/quick/items/qquickrendercontrol.cpp index 10a9691b65..d919ae9a0f 100644 --- a/src/quick/items/qquickrendercontrol.cpp +++ b/src/quick/items/qquickrendercontrol.cpp @@ -217,7 +217,7 @@ QImage QQuickRenderControl::grab() return QImage(); render(); - QImage grabContent = qt_gl_read_framebuffer(d->window->size(), false, false); + QImage grabContent = qt_gl_read_framebuffer(d->window->size() * d->window->devicePixelRatio(), false, false); return grabContent; } diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index d7acc07908..b7fbd877b5 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -2986,7 +2986,7 @@ QImage QQuickWindow::grabWindow() d->syncSceneGraph(); d->renderSceneGraph(size()); - QImage image = qt_gl_read_framebuffer(size(), false, false); + QImage image = qt_gl_read_framebuffer(size() * devicePixelRatio(), false, false); d->cleanupNodesOnShutdown(); d->context->invalidate(); context.doneCurrent(); diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp index f3e879c354..d267fb086d 100644 --- a/src/quick/scenegraph/qsgrenderloop.cpp +++ b/src/quick/scenegraph/qsgrenderloop.cpp @@ -371,7 +371,7 @@ void QSGGuiThreadRenderLoop::renderWindow(QQuickWindow *window) renderTime = renderTimer.nsecsElapsed() - syncTime; if (data.grabOnly) { - grabContent = qt_gl_read_framebuffer(window->size(), false, false); + grabContent = qt_gl_read_framebuffer(window->size() * window->devicePixelRatio(), false, false); data.grabOnly = false; } diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp index de126fe40b..4adcb3ccfb 100644 --- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp +++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp @@ -452,7 +452,7 @@ bool QSGRenderThread::event(QEvent *e) QQuickWindowPrivate::get(window)->renderSceneGraph(windowSize); QSG_RT_DEBUG(" - grabbing result..."); - *ce->image = qt_gl_read_framebuffer(windowSize, false, false); + *ce->image = qt_gl_read_framebuffer(windowSize * window->devicePixelRatio(), false, false); } QSG_RT_DEBUG(" - waking gui to handle grab result"); waitCondition.wakeOne(); diff --git a/src/quick/scenegraph/qsgwindowsrenderloop.cpp b/src/quick/scenegraph/qsgwindowsrenderloop.cpp index 913b737798..9605eb8acc 100644 --- a/src/quick/scenegraph/qsgwindowsrenderloop.cpp +++ b/src/quick/scenegraph/qsgwindowsrenderloop.cpp @@ -341,7 +341,7 @@ QImage QSGWindowsRenderLoop::grab(QQuickWindow *window) d->syncSceneGraph(); d->renderSceneGraph(window->size()); - QImage image = qt_gl_read_framebuffer(window->size(), false, false); + QImage image = qt_gl_read_framebuffer(window->size() * window->devicePixelRatio(), false, false); return image; } |