summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-11-10 20:32:49 +0000
committerCaolán McNamara <caolanm@redhat.com>2014-11-10 20:34:43 +0000
commitcee950b53bc8e0e2d8d494376c9f1331f8ce8e45 (patch)
tree13ce32d20a08023c359c5f29e98d09dd18daf7fb /vcl/unx
parent6df3d5e93a86a3ecb79cdb11e943e037d7648724 (diff)
only call XFreePixmap on pixmaps created via XCreatePixmap
not on those belonging to gdk shoe-horned in via mpPixmap = GDK_PIXMAP_XID( mpGdkPixmap ); in GdkX11Pixmap::GdkX11Pixmap This stops file->new->presentation crashing on second invocation Change-Id: Iec673497f900b0ddabd439369b9ffe554800d425
Diffstat (limited to 'vcl/unx')
-rw-r--r--vcl/unx/generic/gdi/pixmap.cxx6
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx2
2 files changed, 6 insertions, 2 deletions
diff --git a/vcl/unx/generic/gdi/pixmap.cxx b/vcl/unx/generic/gdi/pixmap.cxx
index c30b9af6b607..0440c463c2e5 100644
--- a/vcl/unx/generic/gdi/pixmap.cxx
+++ b/vcl/unx/generic/gdi/pixmap.cxx
@@ -13,6 +13,7 @@ X11Pixmap::X11Pixmap()
: mpDisplay( NULL )
, mnScreen( 0 )
, mpPixmap( 0 )
+, mbDeletePixmap( false )
, mnWidth( -1 )
, mnHeight( -1 )
, mnDepth( 0 )
@@ -22,6 +23,7 @@ X11Pixmap::X11Pixmap()
X11Pixmap::X11Pixmap( Display* pDisplay, SalX11Screen nScreen, int nWidth, int nHeight, int nDepth )
: mpDisplay( pDisplay )
, mnScreen( nScreen )
+, mbDeletePixmap( true )
, mnWidth( nWidth )
, mnHeight( nHeight )
, mnDepth( nDepth )
@@ -33,17 +35,19 @@ X11Pixmap::X11Pixmap( Display* pDisplay, SalX11Screen nScreen, int nWidth, int n
X11Pixmap::X11Pixmap( X11Pixmap& rOther )
: mpDisplay( rOther.mpDisplay )
, mnScreen( rOther.mnScreen )
+, mbDeletePixmap( rOther.mbDeletePixmap )
, mnWidth( rOther.mnWidth )
, mnHeight( rOther.mnHeight )
, mnDepth( rOther.mnDepth )
{
mpPixmap = rOther.mpPixmap;
rOther.mpPixmap = 0;
+ rOther.mbDeletePixmap = false;
}
X11Pixmap::~X11Pixmap()
{
- if( mpPixmap )
+ if (mbDeletePixmap && mpPixmap)
XFreePixmap( mpDisplay, mpPixmap );
}
diff --git a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
index b8db643a8df1..0cf68fdecb18 100644
--- a/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx
@@ -290,7 +290,7 @@ GdkX11Pixmap::GdkX11Pixmap( int nWidth, int nHeight, int nDepth )
}
GdkX11Pixmap::GdkX11Pixmap( X11Pixmap& rOther, GdkWindow *pWindow )
-: X11Pixmap( rOther )
+ : X11Pixmap(rOther)
{
GdkColormap* pColormap;