summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk/window/gtkframe.cxx
diff options
context:
space:
mode:
authorThorsten Behrens <tbehrens@suse.com>2011-11-02 12:28:13 +0100
committerThorsten Behrens <tbehrens@suse.com>2011-11-02 23:58:27 +0100
commit3c1b4b6ef70b049bc5242149e727dd5d94111d86 (patch)
tree3b0182990f092b363a00f2bdae2b32c61730ae9d /vcl/unx/gtk/window/gtkframe.cxx
parent207bcfc5b9d3e857741cd973c3ee9615bdeb2563 (diff)
Keep basebmp free of naked ptrs.
Moved the implementation detail that SalFrames lifetime is handled manually in vcl out of basebmp & into vcl. Added lightweight wrapper class to decouple damagetracker lifetime from GtkFrame lifetime.
Diffstat (limited to 'vcl/unx/gtk/window/gtkframe.cxx')
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx19
1 files changed, 16 insertions, 3 deletions
diff --git a/vcl/unx/gtk/window/gtkframe.cxx b/vcl/unx/gtk/window/gtkframe.cxx
index 5c6414835ab0..cb780e97df92 100644
--- a/vcl/unx/gtk/window/gtkframe.cxx
+++ b/vcl/unx/gtk/window/gtkframe.cxx
@@ -346,6 +346,19 @@ GetAlternateKeyCode( const sal_uInt16 nKeyCode )
#if GTK_CHECK_VERSION(3,0,0)
static int debugQueuePureRedraw = 0;
static int debugRedboxRedraws = 0;
+
+/// Decouple SalFrame lifetime from damagetracker lifetime
+struct DamageTracker : public basebmp::IBitmapDeviceDamageTracker
+{
+ DamageTracker(GtkSalFrame& rFrame) : m_rFrame(rFrame)
+ {}
+ virtual void damaged(const basegfx::B2IRange& rDamageRect) const
+ {
+ m_rFrame.damaged(rDamageRect);
+ }
+
+ GtkSalFrame& m_rFrame;
+};
#endif
void GtkSalFrame::doKeyCallback( guint state,
@@ -1567,9 +1580,9 @@ void GtkSalFrame::AllocateFrame()
if( aFrameSize.getY() == 0 )
aFrameSize.setY( 1 );
m_aFrame = basebmp::createBitmapDevice( aFrameSize, true,
- basebmp::Format::TWENTYFOUR_BIT_TC_MASK,
- this );
-// basebmp::Format::THIRTYTWO_BIT_TC_MASK_ARGB );
+ basebmp::Format::TWENTYFOUR_BIT_TC_MASK );
+ m_aFrame->setDamageTracker(
+ basebmp::IBitmapDeviceDamageTrackerSharedPtr(new DamageTracker(*this)) );
fprintf( stderr, "allocated m_aFrame size of %dx%d \n",
(int)maGeometry.nWidth, (int)maGeometry.nHeight );