summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2017-09-29 17:26:26 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2017-10-25 03:23:17 +0200
commit187324751d27dcc96c5e2cc17ad9bc38bc7d8480 (patch)
tree699d0b5fb413b1c2cc0a206bef6fa4ad76bf82bb
parentc375c585142ba7636e9a21c0249365f75224ecc1 (diff)
kde5: add cairo surface to KDE5SalFrames
Change-Id: I0778ecffe5dbc5fdfe24705d37511e197a4a1ce4
-rw-r--r--vcl/Library_vclplug_kde5.mk1
-rw-r--r--vcl/unx/kde5/KDE5SalFrame.cxx6
-rw-r--r--vcl/unx/kde5/KDE5SalFrame.hxx4
3 files changed, 10 insertions, 1 deletions
diff --git a/vcl/Library_vclplug_kde5.mk b/vcl/Library_vclplug_kde5.mk
index 7775fbf9a71a..cfd6beb524ce 100644
--- a/vcl/Library_vclplug_kde5.mk
+++ b/vcl/Library_vclplug_kde5.mk
@@ -52,6 +52,7 @@ $(eval $(call gb_Library_use_libraries,vclplug_kde5,\
$(eval $(call gb_Library_use_externals,vclplug_kde5,\
boost_headers \
+ cairo \
icuuc \
kde5 \
epoxy \
diff --git a/vcl/unx/kde5/KDE5SalFrame.cxx b/vcl/unx/kde5/KDE5SalFrame.cxx
index 1cdc503ff4f8..1e405ef629d1 100644
--- a/vcl/unx/kde5/KDE5SalFrame.cxx
+++ b/vcl/unx/kde5/KDE5SalFrame.cxx
@@ -340,6 +340,7 @@ void KDE5SalFrame::ReleaseGraphics( SalGraphics *pGraphics )
if( m_aGraphics[i].pGraphics.get() == pGraphics )
{
m_aGraphics[i].bInUse = false;
+ cairo_surface_destroy( m_aGraphics[i].pSurface );
break;
}
}
@@ -359,6 +360,7 @@ SalGraphics* KDE5SalFrame::AcquireGraphics()
{
if( GetWindow() )
{
+ basegfx::B2IVector aSize( 142, 142 );
for( int i = 0; i < nMaxGraphics; i++ )
{
if( ! m_aGraphics[i].bInUse )
@@ -367,6 +369,10 @@ SalGraphics* KDE5SalFrame::AcquireGraphics()
if( ! m_aGraphics[i].pGraphics )
{
m_aGraphics[i].pGraphics.reset( new KDE5SalGraphics( this, m_pWindow ) );
+
+ //FIXME: those parameters are completely arbitrary, IDK what the right ones should be yet
+ m_aGraphics[i].pSurface = cairo_image_surface_create( CAIRO_FORMAT_ARGB32, aSize.getX(), aSize.getY() );
+ m_aGraphics[i].pGraphics->setSurface( m_aGraphics[i].pSurface, aSize );
//m_aGraphics[i].pGraphics->Init( this, GetWindow(), GetScreenNumber() );
}
return m_aGraphics[i].pGraphics.get();
diff --git a/vcl/unx/kde5/KDE5SalFrame.hxx b/vcl/unx/kde5/KDE5SalFrame.hxx
index 7d0fa51d2eb6..ab98ee933c2a 100644
--- a/vcl/unx/kde5/KDE5SalFrame.hxx
+++ b/vcl/unx/kde5/KDE5SalFrame.hxx
@@ -20,6 +20,7 @@
#pragma once
#include <memory>
+#include <cairo.h>
#include <unx/saldisp.hxx>
#include <unx/salframe.h>
@@ -39,8 +40,9 @@ class KDE5SalFrame : public SalFrame
{
std::unique_ptr<KDE5SalGraphics> pGraphics;
bool bInUse;
+ cairo_surface_t* pSurface;
- GraphicsHolder() : bInUse( false ) {}
+ GraphicsHolder() : bInUse( false ), pSurface(nullptr) {}
};
GraphicsHolder m_aGraphics[ nMaxGraphics ];