summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2014-11-11 21:19:02 +0100
committerJan Holesovsky <kendy@collabora.com>2014-11-11 21:46:45 +0100
commitd9fbaf248ea907428c3a5d0422d0c9a9ce50b907 (patch)
tree4130c203760745597856af352ebd9ad92ff6cc2f
parenta237e0838196774cceeffe984d614198dbabd21e (diff)
windows opengl: Instantiate OpenGLSalBitmap even on Windows.
Change-Id: I2229141cc12ad7bc9fccfd6e2c7fec44ac4f6284
-rw-r--r--vcl/opengl/gdiimpl.cxx3
-rw-r--r--vcl/opengl/salbmp.cxx11
-rw-r--r--vcl/win/source/app/salinst.cxx9
3 files changed, 18 insertions, 5 deletions
diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx
index 8a2f89bb9432..2cf980641a32 100644
--- a/vcl/opengl/gdiimpl.cxx
+++ b/vcl/opengl/gdiimpl.cxx
@@ -865,6 +865,9 @@ void OpenGLSalGraphicsImpl::copyBits( const SalTwoRect& rPosAry, SalGraphics* /*
void OpenGLSalGraphicsImpl::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap )
{
+ // check that carefully only in the debug mode
+ assert(dynamic_cast<const OpenGLSalBitmap*>(&rSalBitmap));
+
const OpenGLSalBitmap& rBitmap = static_cast<const OpenGLSalBitmap&>(rSalBitmap);
GLuint nTexture = rBitmap.GetTexture( maContext );
const Size aSize = rSalBitmap.GetSize();
diff --git a/vcl/opengl/salbmp.cxx b/vcl/opengl/salbmp.cxx
index 5a93aaa8b094..e4f920543e26 100644
--- a/vcl/opengl/salbmp.cxx
+++ b/vcl/opengl/salbmp.cxx
@@ -34,6 +34,7 @@ static bool isValidBitCount( sal_uInt16 nBitCount )
OpenGLSalBitmap::OpenGLSalBitmap()
: mpContext(NULL)
+, mpTexture(NULL)
, mbDirtyTexture(true)
, mnBits(0)
, mnBytesPerRow(0)
@@ -57,7 +58,7 @@ bool OpenGLSalBitmap::Create( OpenGLContext& rContext, OpenGLTextureSharedPtr pT
static const BitmapPalette aEmptyPalette;
Destroy();
- SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create from FBO" );
+ SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create from FBO: [" << nX << ", " << nY << "] " << nWidth << "x" << nHeight );
mpContext = &rContext;
mnWidth = nWidth;
@@ -83,7 +84,7 @@ bool OpenGLSalBitmap::Create( OpenGLContext& rContext, OpenGLTextureSharedPtr pT
bool OpenGLSalBitmap::Create( const Size& rSize, sal_uInt16 nBits, const BitmapPalette& rBitmapPalette )
{
Destroy();
- SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create with size" );
+ SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create with size: " << rSize );
if( !isValidBitCount( nBits ) )
return false;
@@ -106,9 +107,12 @@ bool OpenGLSalBitmap::Create( const SalBitmap& rSalBmp, SalGraphics* pGraphics )
bool OpenGLSalBitmap::Create( const SalBitmap& rSalBmp, sal_uInt16 nNewBitCount )
{
+ // check that carefully only in the debug mode
+ assert(dynamic_cast<const OpenGLSalBitmap*>(&rSalBmp));
+
const OpenGLSalBitmap& rSourceBitmap = static_cast<const OpenGLSalBitmap&>(rSalBmp);
- SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create from BMP " << rSourceBitmap.mnHeight );
+ SAL_INFO( "vcl.opengl", "OpenGLSalBitmap::Create from BMP: " << rSourceBitmap.mnWidth << "x" << rSourceBitmap.mnHeight );
if( isValidBitCount( nNewBitCount ) )
{
@@ -328,6 +332,7 @@ Size OpenGLSalBitmap::GetSize() const
GLuint OpenGLSalBitmap::CreateTexture()
{
+ SAL_INFO( "vcl.opengl", "::CreateTexture" );
GLenum nFormat = GL_RGBA;
GLenum nType = GL_UNSIGNED_BYTE;
sal_uInt8* pData( NULL );
diff --git a/vcl/win/source/app/salinst.cxx b/vcl/win/source/app/salinst.cxx
index b1d33e498792..a601ff543539 100644
--- a/vcl/win/source/app/salinst.cxx
+++ b/vcl/win/source/app/salinst.cxx
@@ -26,9 +26,11 @@
#include <tools/solarmutex.hxx>
-#include <vcl/timer.hxx>
#include <vcl/apptypes.hxx>
+#include <vcl/opengl/OpenGLHelper.hxx>
+#include <vcl/timer.hxx>
+#include <opengl/salbmp.hxx>
#include <win/wincomp.hxx>
#include <win/salids.hrc>
#include <win/saldata.hxx>
@@ -1007,7 +1009,10 @@ SalTimer* WinSalInstance::CreateSalTimer()
SalBitmap* WinSalInstance::CreateSalBitmap()
{
- return new WinSalBitmap();
+ if (OpenGLHelper::isVCLOpenGLEnabled())
+ return new OpenGLSalBitmap();
+ else
+ return new WinSalBitmap();
}
class WinImeStatus : public SalI18NImeStatus