Commit 7b4925f7 authored by Bhushan Shah's avatar Bhushan Shah 📱 Committed by Bhushan Shah
Browse files

effects/screenshot: fix the screenshot on GLES

We want to multiply the width/height by scale weather or not we are
using GLES or not, otherwise this will only provide part of screen when
used with e.g fullscreen screenshot.

(cherry picked from commit 5e6c81ee)
parent 00570eb7
......@@ -694,15 +694,12 @@ QImage ScreenShotEffect::blitScreenshot(const QRect &geometry, const qreal scale
QImage img;
if (effects->isOpenGLCompositing())
int width = geometry.width();
int height = geometry.height();
if (GLRenderTarget::blitSupported() && !GLPlatform::instance()->isGLES()) {
const QSize nativeSize = geometry.size() * scale;
width = static_cast<int>(width * scale);
height = static_cast<int>(height * scale);
if (GLRenderTarget::blitSupported() && !GLPlatform::instance()->isGLES()) {
img = QImage(width, height, QImage::Format_ARGB32);
GLTexture tex(GL_RGBA8, width, height);
img = QImage(nativeSize.width(), nativeSize.height(), QImage::Format_ARGB32);
GLTexture tex(GL_RGBA8, nativeSize.width(), nativeSize.height());
GLRenderTarget target(tex);
// copy content from framebuffer into image
......@@ -710,10 +707,10 @@ QImage ScreenShotEffect::blitScreenshot(const QRect &geometry, const qreal scale
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, static_cast<GLvoid*>(img.bits()));
} else {
img = QImage(width, height, QImage::Format_ARGB32);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)img.bits());
img = QImage(nativeSize.width(), nativeSize.height(), QImage::Format_ARGB32);
glReadPixels(0, 0, nativeSize.width(), nativeSize.height(), GL_RGBA, GL_UNSIGNED_BYTE, (GLvoid*)img.bits());
ScreenShotEffect::convertFromGLImage(img, width, height);
ScreenShotEffect::convertFromGLImage(img, nativeSize.width(), nativeSize.height());
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment