diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-04-30 12:42:23 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-04-30 12:43:19 +0100 |
commit | 2e423dac20da37bd0bb4c24da47e0472888466ad (patch) | |
tree | 5b3f53c276334ef1308304d0dfcbad9b276b9625 /vcl/unx/generic/gdi/salvd.cxx | |
parent | 5d10090c0a98d1df7fd852305ed620a7348c5d10 (diff) |
Related: moz#424333 pixmaps are limited to max signed short
Change-Id: I88cfd9592e11aa7dbe704df4810090b6a1ce4c66
Diffstat (limited to 'vcl/unx/generic/gdi/salvd.cxx')
-rw-r--r-- | vcl/unx/generic/gdi/salvd.cxx | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/vcl/unx/generic/gdi/salvd.cxx b/vcl/unx/generic/gdi/salvd.cxx index 0bf64dfdbc97..1a044c120d9d 100644 --- a/vcl/unx/generic/gdi/salvd.cxx +++ b/vcl/unx/generic/gdi/salvd.cxx @@ -38,6 +38,7 @@ #include <unx/saldisp.hxx> #include <unx/salgdi.h> #include <unx/salvd.h> +#include <unx/x11/xlimits.hxx> #include <salinst.hxx> @@ -166,7 +167,7 @@ sal_Bool X11SalVirtualDevice::Init( SalDisplay *pDisplay, nDepth_ = nBitCount; if( hDrawable == None ) - hDrawable_ = XCreatePixmap( GetXDisplay(), + hDrawable_ = limitXCreatePixmap( GetXDisplay(), pDisplay_->GetDrawable( m_nXScreen ), nDX_, nDY_, GetDepth() ); @@ -225,20 +226,10 @@ sal_Bool X11SalVirtualDevice::SetSize( long nDX, long nDY ) if( bExternPixmap_ ) return sal_False; - // #144688# - // the X protocol request CreatePixmap puts an upper bound - // of 16 bit to the size. Beyond that there may be implementation - // limits of the Xserver; which we should catch by a failed XCreatePixmap - // call. However extra large values should be caught here since we'd run into - // 16 bit truncation here without noticing. - if( nDX < 0 || nDX > 65535 || - nDY < 0 || nDY > 65535 ) - return sal_False; - if( !nDX ) nDX = 1; if( !nDY ) nDY = 1; - Pixmap h = XCreatePixmap( GetXDisplay(), + Pixmap h = limitXCreatePixmap( GetXDisplay(), pDisplay_->GetDrawable( m_nXScreen ), nDX, nDY, nDepth_ ); @@ -246,7 +237,7 @@ sal_Bool X11SalVirtualDevice::SetSize( long nDX, long nDY ) { if( !GetDrawable() ) { - hDrawable_ = XCreatePixmap( GetXDisplay(), + hDrawable_ = limitXCreatePixmap( GetXDisplay(), pDisplay_->GetDrawable( m_nXScreen ), 1, 1, nDepth_ ); nDX_ = 1; |