diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-11-10 20:32:49 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-11-10 20:34:43 +0000 |
commit | cee950b53bc8e0e2d8d494376c9f1331f8ce8e45 (patch) | |
tree | 13ce32d20a08023c359c5f29e98d09dd18daf7fb /vcl/unx | |
parent | 6df3d5e93a86a3ecb79cdb11e943e037d7648724 (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.cxx | 6 | ||||
-rw-r--r-- | vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx | 2 |
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; |