diff options
author | Gabriel de Dietrich <gabriel.dedietrich@digia.com> | 2013-05-21 18:22:27 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-23 12:49:39 +0200 |
commit | 004f25df78160d1caba2375fb2e6511a0c344bc8 (patch) | |
tree | 7d2bfd6054e38c5266a1b35f446cbde6e695c582 | |
parent | 602bd9873786ccadcb67da3036329f3122555cf8 (diff) |
QGLWidget: Support retina framebuffer grabbing
And update the opengl/grabber example.
Task-number: QTBUG-31173
Change-Id: If09f1f3634b353d034f51240fc68be6ee7aabb48
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
-rw-r--r-- | examples/opengl/grabber/mainwindow.cpp | 2 | ||||
-rw-r--r-- | src/opengl/qgl.cpp | 7 |
2 files changed, 5 insertions, 4 deletions
diff --git a/examples/opengl/grabber/mainwindow.cpp b/examples/opengl/grabber/mainwindow.cpp index 9f31733856..9f82ee10ba 100644 --- a/examples/opengl/grabber/mainwindow.cpp +++ b/examples/opengl/grabber/mainwindow.cpp @@ -175,7 +175,7 @@ QSlider *MainWindow::createSlider(const char *changedSignal, void MainWindow::setPixmap(const QPixmap &pixmap) { pixmapLabel->setPixmap(pixmap); - QSize size = pixmap.size(); + QSize size = pixmap.size() / pixmap.devicePixelRatio(); if (size - QSize(1, 0) == pixmapLabelArea->maximumViewportSize()) size -= QSize(1, 0); pixmapLabel->resize(size); diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index def0470622..72c6e035d9 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -4090,11 +4090,12 @@ QImage QGLWidget::grabFrameBuffer(bool withAlpha) { makeCurrent(); QImage res; - int w = width(); - int h = height(); + qreal pixelRatio = devicePixelRatio(); + int w = pixelRatio * width(); + int h = pixelRatio * height(); if (format().rgba()) res = qt_gl_read_frame_buffer(QSize(w, h), format().alpha(), withAlpha); - + res.setDevicePixelRatio(pixelRatio); return res; } |