From f73e1f50240208257964e28e0e65a56e323d86da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Vajngerl?= Date: Fri, 31 Jul 2015 16:46:47 +0900 Subject: [PATCH] opengl: support reading 8bit texture (fixes icon corruption) Change-Id: Iba3fd58374a550f3411b02f029f12f4509fb6048 --- vcl/opengl/salbmp.cxx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx index 405428e7425c..6b6f7bc09ed2 100644 --- a/vcl/opengl/salbmp.cxx +++ b/vcl/opengl/salbmp.cxx @@ -368,7 +368,7 @@ GLuint OpenGLSalBitmap::CreateTexture() else { // convert to 32 bits RGBA using palette - pData = new sal_uInt8[ mnBufHeight * (mnBufWidth << 2) ]; + pData = new sal_uInt8[mnBufHeight * mnBufWidth * 4]; bAllocated = true; nFormat = GL_RGBA; nType = GL_UNSIGNED_BYTE; @@ -424,13 +424,16 @@ bool OpenGLSalBitmap::ReadTexture() if( pData == NULL ) return false; - if( mnBits == 16 || mnBits == 24 || mnBits == 32 ) + if (mnBits == 8 || mnBits == 16 || mnBits == 24 || mnBits == 32) { // no conversion needed for truecolor pData = maUserBuffer.get(); switch( mnBits ) { + case 8: nFormat = GL_LUMINANCE; + nType = GL_UNSIGNED_BYTE; + break; case 16: nFormat = GL_RGB; nType = GL_UNSIGNED_SHORT_5_6_5; break;