diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2017-09-29 17:26:26 +0200 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2017-10-25 03:23:17 +0200 |
commit | 187324751d27dcc96c5e2cc17ad9bc38bc7d8480 (patch) | |
tree | 699d0b5fb413b1c2cc0a206bef6fa4ad76bf82bb /vcl | |
parent | c375c585142ba7636e9a21c0249365f75224ecc1 (diff) |
kde5: add cairo surface to KDE5SalFrames
Change-Id: I0778ecffe5dbc5fdfe24705d37511e197a4a1ce4
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/Library_vclplug_kde5.mk | 1 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalFrame.cxx | 6 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalFrame.hxx | 4 |
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 ]; |