From f163867ff49526f39bb329c698b74899c4b5c0e3 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sat, 12 Nov 2011 22:43:15 +0000 Subject: Link with libXrender instead of dynamically open it Let's not mess around dlopening it and leaving gaps in the support whereby we currently require it to exist either linked or "dlopenable+display supports it" with dlopenable + display doesn't support it leaves a crashing gap where there are no appropiate checks for that case. --- configure.in | 63 +++++++++--------- set_soenv.in | 1 - vcl/Library_vclplug_gen.mk | 5 -- vcl/unx/generic/gdi/xrender_peer.cxx | 126 ++--------------------------------- vcl/unx/generic/gdi/xrender_peer.hxx | 111 +----------------------------- 5 files changed, 36 insertions(+), 270 deletions(-) diff --git a/configure.in b/configure.in index 9292e140dd35..9a5fb6811fdb 100644 --- a/configure.in +++ b/configure.in @@ -64,6 +64,7 @@ dnl These values may be checked and reset later. dnl =================================================================== #defaults unless the os test overrides this: test_randr=yes +test_xrender=yes test_cups=yes test_fontconfig=yes @@ -109,6 +110,7 @@ linux-gnu*|k*bsd*-gnu*) gnu) test_randr=no + test_xrender=no _os=GNU ;; @@ -131,6 +133,7 @@ cygwin*|interix*|mingw32*) test_cups=no test_randr=no + test_xrender=no test_freetype=no test_fontconfig=no _os=WINNT @@ -157,6 +160,7 @@ cygwin*|interix*|mingw32*) darwin*) # Mac OS X or iOS test_gtk=yes test_randr=no + test_xrender=no test_freetype=no test_fontconfig=no if test "$host_cpu" = "arm"; then @@ -242,6 +246,7 @@ linux-androideabi*) test_kde=no test_kde4=no test_randr=no + test_xrender=no test_unix_quickstarter=no _os=Android @@ -680,11 +685,6 @@ AC_ARG_ENABLE(rpath, [Disable the use of relative paths in shared libraries.]), ,) -AC_ARG_ENABLE(xrender-link, - AS_HELP_STRING([--enable-xrender-link], - [Link with libXrender instead of dynamically open it.]), -,) - AC_ARG_ENABLE(randr, AS_HELP_STRING([--disable-randr], [Disable RandR support in the vcl project.]), @@ -911,7 +911,7 @@ AC_ARG_WITH(system-headers, AS_HELP_STRING([--with-system-headers], [Use headers already on system -- enables all --with-system-* flags for external packages whose headers are the only entities used i.e. - boost/vigra/odbc/sane/xrender-header(s).]), + boost/vigra/odbc/sane-header(s).]), ,) AC_ARG_WITH(system-jars, @@ -1233,10 +1233,12 @@ AC_ARG_WITH(system-sane, [Use sane.h already on system.]),, [with_system_sane="$with_system_headers"]) -AC_ARG_WITH(system-xrender-headers, - AS_HELP_STRING([--with-system-xrender-headers], - [Use XRender headers already on system.]), - [with_system_xrender_headers="$with_system_headers"]) +AC_ARG_WITH(system-xextensions-headers, + AS_HELP_STRING([--with-system-xextensions-headers], + [To build without system X11 extensions headers, use + --without-system-xextensions-headers. This is possibly + useful on legacy unix systems which ship with the libs + but without the headers.])) AC_ARG_WITH(system-mesa-headers, AS_HELP_STRING([--with-system-mesa-headers], @@ -6238,36 +6240,31 @@ if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$_os" != "Android" -a "$_os" [#include ]) fi +AC_MSG_CHECKING([whether to use internal X11 extensions headers]) +if test "$with_system_xextensions_headers" != "no"; then + AC_MSG_RESULT([no]) +else + AC_MSG_RESULT([yes]) + BUILD_TYPE="$BUILD_TYPE X11_EXTENSIONS" +fi dnl =================================================================== dnl Check for system Xrender dnl =================================================================== -AC_MSG_CHECKING([whether to link to Xrender]) -if test -n "$enable_xrender_link" -a "$enable_xrender_link" != "no"; then +AC_MSG_CHECKING([whether to use Xrender]) +if test "$test_xrender" = "yes"; then AC_MSG_RESULT([yes]) - XRENDER_LINK=YES - with_system_xrender_headers=yes -else - AC_MSG_RESULT([no, dynamically open it]) - XRENDER_LINK=NO -fi -AC_MSG_CHECKING([which Xrender headers to use]) -if test "$with_system_xrender_headers" = "yes"; then - AC_MSG_RESULT([external]) - SYSTEM_XRENDER_HEADERS=YES - AC_CHECK_HEADER(X11/extensions/Xrender.h, [], - [AC_MSG_ERROR(Xrender not found. install X)], []) -else - AC_MSG_RESULT([internal]) - SYSTEM_XRENDER_HEADERS=NO - BUILD_TYPE="$BUILD_TYPE X11_EXTENSIONS" -fi -if test "$XRENDER_LINK" = "YES"; then AC_CHECK_LIB(Xrender, XRenderQueryVersion, [], [AC_MSG_ERROR(libXrender not found or functional)], []) + AC_MSG_CHECKING([which Xrender headers to use]) + if test "$with_system_xextensions_headers" != "no"; then + AC_MSG_RESULT([external]) + AC_CHECK_HEADER(X11/extensions/Xrender.h, [], + [AC_MSG_ERROR(Xrender not found. install X)], []) + else + AC_MSG_RESULT([internal]) + fi fi -AC_SUBST(SYSTEM_XRENDER_HEADERS) -AC_SUBST(XRENDER_LINK) dnl =================================================================== dnl Check for XRandr @@ -8571,7 +8568,7 @@ if test "$with_system_cairo" = "yes"; then PKG_CHECK_MODULES( CAIRO, cairo >= 1.0.2 ) - if test "$with_system_xrender_headers" = "yes"; then + if test "$with_system_xextensions_headers" != "no"; then AC_MSG_CHECKING([whether Xrender.h defines PictStandardA8]) AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include diff --git a/set_soenv.in b/set_soenv.in index f0cee2105d4c..d45d245816df 100755 --- a/set_soenv.in +++ b/set_soenv.in @@ -1947,7 +1947,6 @@ ToFile( "LIBXSLT_CFLAGS", "@LIBXSLT_CFLAGS@", "e" ); ToFile( "LIBXSLT_LIBS", "@LIBXSLT_LIBS@", "e" ); ToFile( "XSLTPROC", "@XSLTPROC@", "e" ); ToFile( "SYSTEM_SANE_HEADER","@SYSTEM_SANE_HEADER@","e" ); -ToFile( "SYSTEM_XRENDER_HEADERS","@SYSTEM_XRENDER_HEADERS@","e" ); ToFile( "SYSTEM_MESA_HEADERS","@SYSTEM_MESA_HEADERS@","e" ); ToFile( "SYSTEM_CURL", "@SYSTEM_CURL@", "e" ); ToFile( "CURL_CFLAGS", "@CURL_CFLAGS@", "e" ); diff --git a/vcl/Library_vclplug_gen.mk b/vcl/Library_vclplug_gen.mk index a0b1531336cb..9e885aaf6601 100644 --- a/vcl/Library_vclplug_gen.mk +++ b/vcl/Library_vclplug_gen.mk @@ -172,14 +172,9 @@ endif endif ## handle Render linking -ifeq ($(XRENDER_LINK),YES) -$(eval $(call gb_Library_add_defs,vclplug_gen,\ - -DXRENDER_LINK \ -)) $(eval $(call gb_Library_add_libs,vclplug_gen,\ $(shell pkg-config --libs xrender) \ )) -endif ifeq ($(OS),LINUX) $(eval $(call gb_Library_add_linked_libs,vclplug_gen,\ diff --git a/vcl/unx/generic/gdi/xrender_peer.cxx b/vcl/unx/generic/gdi/xrender_peer.cxx index 52611e7afac2..185cc305c0ee 100644 --- a/vcl/unx/generic/gdi/xrender_peer.cxx +++ b/vcl/unx/generic/gdi/xrender_peer.cxx @@ -47,27 +47,15 @@ using namespace rtl; // --------------------------------------------------------------------------- XRenderPeer::XRenderPeer() -: mpDisplay( GetGenericData()->GetSalDisplay()->GetDisplay() ), - mpStandardFormatA8( NULL ), - mnRenderVersion( 0 ), - mpRenderLib( NULL ) -#ifndef XRENDER_LINK -, mpXRenderCompositeTrapezoids( NULL ) -, mpXRenderAddTraps( NULL ) -#endif // XRENDER_LINK + : mpDisplay( GetGenericData()->GetSalDisplay()->GetDisplay() ) + , mpStandardFormatA8( NULL ) + , mnRenderVersion( 0 ) { InitRenderLib(); } // --------------------------------------------------------------------------- -XRenderPeer::~XRenderPeer() -{ - osl_unloadModule( mpRenderLib ); -} - -// --------------------------------------------------------------------------- - XRenderPeer& XRenderPeer::GetInstance() { static XRenderPeer aPeer; @@ -79,117 +67,11 @@ XRenderPeer& XRenderPeer::GetInstance() void XRenderPeer::InitRenderLib() { int nDummy; - if( !XQueryExtension( mpDisplay, "RENDER", &nDummy, &nDummy, &nDummy ) ) - return; - -#ifndef XRENDER_LINK - // we don't know if we are running on a system with xrender library - // we don't want to install system libraries ourselves - // => load them dynamically when they are there - const OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( "libXrender.so.1" )); - mpRenderLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_DEFAULT ); - if( !mpRenderLib ) { -#ifdef DEBUG - fprintf( stderr, "Display can do XRender, but no %s installed.\n" - "Please install for improved display performance\n", OUStringToOString( aLibName.getStr(), - osl_getThreadTextEncoding() ).getStr() ); -#endif - return; - } - - oslGenericFunction pFunc; - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryExtension" ); - if( !pFunc ) return; - mpXRenderQueryExtension = (Bool(*)(Display*,int*,int*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderQueryVersion" ); - if( !pFunc ) return; - mpXRenderQueryVersion = (void(*)(Display*,int*,int*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindVisualFormat" ); - if( !pFunc ) return; - mpXRenderFindVisualFormat = (XRenderPictFormat*(*)(Display*,Visual*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindStandardFormat" ); - if( !pFunc ) return; - mpXRenderFindStandardFormat = (XRenderPictFormat*(*)(Display*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFindFormat" ); - if( !pFunc ) return; - mpXRenderFindFormat = (XRenderPictFormat*(*)(Display*,unsigned long, - const XRenderPictFormat*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreateGlyphSet" ); - if( !pFunc ) return; - mpXRenderCreateGlyphSet = (GlyphSet(*)(Display*,const XRenderPictFormat*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphSet" ); - if( !pFunc ) return; - mpXRenderFreeGlyphSet = (void(*)(Display*,GlyphSet))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddGlyphs" ); - if( !pFunc ) return; - mpXRenderAddGlyphs = (void(*)(Display*,GlyphSet,Glyph*,const XGlyphInfo*, - int,const char*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreeGlyphs" ); - if( !pFunc ) return; - mpXRenderFreeGlyphs = (void(*)(Display*,GlyphSet,Glyph*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeString32" ); - if( !pFunc ) return; - mpXRenderCompositeString32 = (void(*)(Display*,int,Picture,Picture, - const XRenderPictFormat*,GlyphSet,int,int,int,int,const unsigned*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCreatePicture" ); - if( !pFunc ) return; - mpXRenderCreatePicture = (Picture(*)(Display*,Drawable,const XRenderPictFormat*, - unsigned long,const XRenderPictureAttributes*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderChangePicture" ); - if( !pFunc ) return; - mpXRenderChangePicture = (void(*)(Display*,Picture,unsigned long,const XRenderPictureAttributes*))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderSetPictureClipRegion" ); - if( !pFunc ) return; - mpXRenderSetPictureClipRegion = (void(*)(Display*,Picture,XLIB_Region))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFreePicture" ); - if( !pFunc ) return; - mpXRenderFreePicture = (void(*)(Display*,Picture))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderComposite" ); - if( !pFunc ) return; - mpXRenderComposite = (void(*)(Display*,int,Picture,Picture,Picture, - int,int,int,int,int,int,unsigned,unsigned))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderFillRectangle" ); - if( !pFunc ) return; - mpXRenderFillRectangle = (void(*)(Display*,int,Picture,const XRenderColor*, - int,int,unsigned int,unsigned int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderCompositeTrapezoids" ); - mpXRenderCompositeTrapezoids = (void(*)(Display*,int,Picture,Picture, - const XRenderPictFormat*,int,int,const XTrapezoid*,int))pFunc; - - pFunc = osl_getAsciiFunctionSymbol( mpRenderLib, "XRenderAddTraps" ); - mpXRenderAddTraps = (void(*)(Display*,Picture,int,int,const _XTrap*,int))pFunc; - -#endif // XRENDER_LINK - - // needed to initialize libXrender internals, we already know its there -#ifdef XRENDER_LINK + // needed to initialize libXrender internals XRenderQueryExtension( mpDisplay, &nDummy, &nDummy ); -#else - (*mpXRenderQueryExtension)( mpDisplay, &nDummy, &nDummy ); -#endif int nMajor, nMinor; -#ifdef XRENDER_LINK XRenderQueryVersion( mpDisplay, &nMajor, &nMinor ); -#else - (*mpXRenderQueryVersion)( mpDisplay, &nMajor, &nMinor ); -#endif mnRenderVersion = 16*nMajor + nMinor; // the 8bit alpha mask format must be there diff --git a/vcl/unx/generic/gdi/xrender_peer.hxx b/vcl/unx/generic/gdi/xrender_peer.hxx index f9417bb2be95..be45feebbf6e 100644 --- a/vcl/unx/generic/gdi/xrender_peer.hxx +++ b/vcl/unx/generic/gdi/xrender_peer.hxx @@ -47,13 +47,11 @@ public: protected: XRenderPeer(); - ~XRenderPeer(); void InitRenderLib(); Display* mpDisplay; XRenderPictFormat* mpStandardFormatA8; int mnRenderVersion; - oslModule mpRenderLib; public: XRenderPictFormat* GetStandardFormatA8() const; @@ -85,45 +83,8 @@ public: void CompositeTrapezoids( int nOp, Picture aSrc, Picture aDst, const XRenderPictFormat*, int nXSrc, int nYSrc, const XTrapezoid*, int nCount ) const; - bool AddTraps( Picture aDst, int nXOfs, int nYOfs, + void AddTraps( Picture aDst, int nXOfs, int nYOfs, const _XTrap*, int nCount ) const; - - bool AreTrapezoidsSupported() const -#ifdef XRENDER_LINK - { return true; } -#else - { return mpXRenderCompositeTrapezoids!=NULL; } - -private: - XRenderPictFormat* (*mpXRenderFindFormat)(Display*,unsigned long, - const XRenderPictFormat*,int); - XRenderPictFormat* (*mpXRenderFindVisualFormat)(Display*,Visual*); - XRenderPictFormat* (*mpXRenderFindStandardFormat)(Display*,int); - Bool (*mpXRenderQueryExtension)(Display*,int*,int*); - void (*mpXRenderQueryVersion)(Display*,int*,int*); - - Picture (*mpXRenderCreatePicture)(Display*,Drawable, const XRenderPictFormat*, - unsigned long,const XRenderPictureAttributes*); - void (*mpXRenderChangePicture)(Display*,Picture, - unsigned long,const XRenderPictureAttributes*); - void (*mpXRenderSetPictureClipRegion)(Display*,Picture,XLIB_Region); - void (*mpXRenderFreePicture)(Display*,Picture); - void (*mpXRenderComposite)(Display*,int,Picture,Picture,Picture, - int,int,int,int,int,int,unsigned,unsigned); - - GlyphSet (*mpXRenderCreateGlyphSet)(Display*, const XRenderPictFormat*); - void (*mpXRenderFreeGlyphSet)(Display*,GlyphSet); - void (*mpXRenderAddGlyphs)(Display*,GlyphSet,Glyph*, - const XGlyphInfo*,int,const char*,int); - void (*mpXRenderFreeGlyphs)(Display*,GlyphSet,Glyph*,int); - void (*mpXRenderCompositeString32)(Display*,int,Picture,Picture, - const XRenderPictFormat*,GlyphSet,int,int,int,int,const unsigned*,int); - void (*mpXRenderFillRectangle)(Display*,int,Picture, - const XRenderColor*,int,int,unsigned int,unsigned int); - void (*mpXRenderCompositeTrapezoids)(Display*,int,Picture,Picture, - const XRenderPictFormat*,int,int,const XTrapezoid*,int); - void (*mpXRenderAddTraps)(Display*,Picture,int,int,const _XTrap*,int); -#endif // XRENDER_LINK }; //===================================================================== @@ -158,63 +119,38 @@ inline XRenderPictFormat* XRenderPeer::GetStandardFormatA8() const inline XRenderPictFormat* XRenderPeer::FindStandardFormat(int nFormat) const { -#ifdef XRENDER_LINK return XRenderFindStandardFormat(mpDisplay, nFormat); -#else - return (*mpXRenderFindStandardFormat)(mpDisplay, nFormat); -#endif } inline XRenderPictFormat* XRenderPeer::FindVisualFormat( Visual* pVisual ) const { -#ifdef XRENDER_LINK return XRenderFindVisualFormat ( mpDisplay, pVisual ); -#else - return (*mpXRenderFindVisualFormat)( mpDisplay, pVisual ); -#endif } inline XRenderPictFormat* XRenderPeer::FindPictureFormat( unsigned long nFormatMask, const XRenderPictFormat& rFormatAttr ) const { -#ifdef XRENDER_LINK return XRenderFindFormat( mpDisplay, nFormatMask, &rFormatAttr, 0 ); -#else - return (*mpXRenderFindFormat)( mpDisplay, nFormatMask, &rFormatAttr, 0 ); -#endif } inline Picture XRenderPeer::CreatePicture( Drawable aDrawable, const XRenderPictFormat* pVisFormat, unsigned long nValueMask, const XRenderPictureAttributes* pRenderAttr ) const { -#ifdef XRENDER_LINK return XRenderCreatePicture( mpDisplay, aDrawable, pVisFormat, nValueMask, pRenderAttr ); -#else - return (*mpXRenderCreatePicture)( mpDisplay, aDrawable, pVisFormat, - nValueMask, pRenderAttr ); -#endif } inline void XRenderPeer::ChangePicture( Picture aPicture, unsigned long nValueMask, const XRenderPictureAttributes* pRenderAttr ) const { -#ifdef XRENDER_LINK XRenderChangePicture( mpDisplay, aPicture, nValueMask, pRenderAttr ); -#else - (*mpXRenderChangePicture)( mpDisplay, aPicture, nValueMask, pRenderAttr ); -#endif } inline void XRenderPeer::SetPictureClipRegion( Picture aPicture, XLIB_Region aXlibRegion ) const { -#ifdef XRENDER_LINK XRenderSetPictureClipRegion( mpDisplay, aPicture, aXlibRegion ); -#else - (*mpXRenderSetPictureClipRegion)( mpDisplay, aPicture, aXlibRegion ); -#endif } inline void XRenderPeer::CompositePicture( int nXRenderOp, @@ -222,52 +158,30 @@ inline void XRenderPeer::CompositePicture( int nXRenderOp, int nSrcX, int nSrcY, int nMaskX, int nMaskY, int nDstX, int nDstY, unsigned nWidth, unsigned nHeight ) const { -#ifdef XRENDER_LINK XRenderComposite( mpDisplay, nXRenderOp, aSrcPic, aMaskPic, aDstPic, nSrcX, nSrcY, nMaskX, nMaskY, nDstX, nDstY, nWidth, nHeight ); -#else - (*mpXRenderComposite)( mpDisplay, nXRenderOp, aSrcPic, aMaskPic, aDstPic, - nSrcX, nSrcY, nMaskX, nMaskY, nDstX, nDstY, nWidth, nHeight ); -#endif } inline void XRenderPeer::FreePicture( Picture aPicture ) const { -#ifdef XRENDER_LINK XRenderFreePicture( mpDisplay, aPicture ); -#else - (*mpXRenderFreePicture)( mpDisplay, aPicture ); -#endif } inline GlyphSet XRenderPeer::CreateGlyphSet() const { -#ifdef XRENDER_LINK return XRenderCreateGlyphSet( mpDisplay, mpStandardFormatA8 ); -#else - return (*mpXRenderCreateGlyphSet)( mpDisplay, mpStandardFormatA8 ); -#endif } inline void XRenderPeer::FreeGlyphSet( GlyphSet aGS ) const { -#ifdef XRENDER_LINK XRenderFreeGlyphSet( mpDisplay, aGS ); -#else - (*mpXRenderFreeGlyphSet)( mpDisplay, aGS ); -#endif } inline void XRenderPeer::AddGlyph( GlyphSet aGS, Glyph nGlyphId, const XGlyphInfo& rGI, const char* pBuffer, int nBufSize ) const { -#ifdef XRENDER_LINK XRenderAddGlyphs( mpDisplay, aGS, &nGlyphId, &rGI, 1, const_cast(pBuffer), nBufSize ); -#else - (*mpXRenderAddGlyphs)( mpDisplay, aGS, &nGlyphId, &rGI, 1, - const_cast(pBuffer), nBufSize ); -#endif } inline void XRenderPeer::FreeGlyph( GlyphSet aGS, Glyph nGlyphId ) const @@ -284,23 +198,14 @@ inline void XRenderPeer::CompositeString32( Picture aSrc, Picture aDst, GlyphSet aGlyphSet, int nDstX, int nDstY, const unsigned* pText, int nTextLen ) const { -#ifdef XRENDER_LINK XRenderCompositeString32( mpDisplay, PictOpOver, aSrc, aDst, NULL, aGlyphSet, 0, 0, nDstX, nDstY, pText, nTextLen ); -#else - (*mpXRenderCompositeString32)( mpDisplay, PictOpOver, aSrc, aDst, NULL, - aGlyphSet, 0, 0, nDstX, nDstY, pText, nTextLen ); -#endif } inline void XRenderPeer::FillRectangle( int a, Picture b, const XRenderColor* c, int d, int e, unsigned int f, unsigned int g) const { -#ifdef XRENDER_LINK XRenderFillRectangle( mpDisplay, a, b, c, d, e, f, g ); -#else - (*mpXRenderFillRectangle)( mpDisplay, a, b, c, d, e, f, g ); -#endif } @@ -308,26 +213,14 @@ inline void XRenderPeer::CompositeTrapezoids( int nOp, Picture aSrc, Picture aDst, const XRenderPictFormat* pXRPF, int nXSrc, int nYSrc, const XTrapezoid* pXT, int nCount ) const { -#ifdef XRENDER_LINK XRenderCompositeTrapezoids( mpDisplay, nOp, aSrc, aDst, pXRPF, nXSrc, nYSrc, pXT, nCount ); -#else - (*mpXRenderCompositeTrapezoids)( mpDisplay, nOp, aSrc, aDst, pXRPF, - nXSrc, nYSrc, pXT, nCount ); -#endif } -inline bool XRenderPeer::AddTraps( Picture aDst, int nXOfs, int nYOfs, +inline void XRenderPeer::AddTraps( Picture aDst, int nXOfs, int nYOfs, const _XTrap* pTraps, int nCount ) const { -#ifdef XRENDER_LINK XRenderAddTraps( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount ); -#else - if( !mpXRenderAddTraps ) - return false; - (*mpXRenderAddTraps)( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount ); -#endif - return true; } //===================================================================== -- cgit