Commit 5e6c81ee authored by Bhushan Shah's avatar Bhushan Shah 📱 Committed by Bhushan Shah

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.
parent 00ce98b7
......@@ -777,15 +777,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
......@@ -793,10 +790,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