From c0ea8e26c792c09768c30e08f0c81deba8896cc7 Mon Sep 17 00:00:00 2001 From: Cameron Cawley Date: Tue, 23 Nov 2021 23:18:12 +0000 Subject: [PATCH] OPENGL: Fix crash when scaling small areas --- backends/graphics/opengl/texture.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backends/graphics/opengl/texture.cpp b/backends/graphics/opengl/texture.cpp index adc93e1f5a8..e6b414e2428 100644 --- a/backends/graphics/opengl/texture.cpp +++ b/backends/graphics/opengl/texture.cpp @@ -544,8 +544,13 @@ void ScaledTexture::updateGLTexture() { dst = (byte *)outSurf->getBasePtr(dirtyArea.left * _scaleFactor, dirtyArea.top * _scaleFactor); dstPitch = outSurf->pitch; - assert(_scaler); - _scaler->scale(src, srcPitch, dst, dstPitch, dirtyArea.width(), dirtyArea.height(), dirtyArea.left, dirtyArea.top); + if (_scaler && (uint)dirtyArea.height() >= _extraPixels) { + _scaler->scale(src, srcPitch, dst, dstPitch, dirtyArea.width(), dirtyArea.height(), dirtyArea.left, dirtyArea.top); + } else { + Graphics::scaleBlit(dst, src, dstPitch, srcPitch, + dirtyArea.width() * _scaleFactor, dirtyArea.height() * _scaleFactor, + dirtyArea.width(), dirtyArea.height(), outSurf->format); + } dirtyArea.left *= _scaleFactor; dirtyArea.right *= _scaleFactor;