Kaydet (Commit) f163867f authored tarafından Caolán McNamara's avatar Caolán McNamara

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.
üst 93c5ac9f
...@@ -64,6 +64,7 @@ dnl These values may be checked and reset later. ...@@ -64,6 +64,7 @@ dnl These values may be checked and reset later.
dnl =================================================================== dnl ===================================================================
#defaults unless the os test overrides this: #defaults unless the os test overrides this:
test_randr=yes test_randr=yes
test_xrender=yes
test_cups=yes test_cups=yes
test_fontconfig=yes test_fontconfig=yes
...@@ -109,6 +110,7 @@ linux-gnu*|k*bsd*-gnu*) ...@@ -109,6 +110,7 @@ linux-gnu*|k*bsd*-gnu*)
gnu) gnu)
test_randr=no test_randr=no
test_xrender=no
_os=GNU _os=GNU
;; ;;
...@@ -131,6 +133,7 @@ cygwin*|interix*|mingw32*) ...@@ -131,6 +133,7 @@ cygwin*|interix*|mingw32*)
test_cups=no test_cups=no
test_randr=no test_randr=no
test_xrender=no
test_freetype=no test_freetype=no
test_fontconfig=no test_fontconfig=no
_os=WINNT _os=WINNT
...@@ -157,6 +160,7 @@ cygwin*|interix*|mingw32*) ...@@ -157,6 +160,7 @@ cygwin*|interix*|mingw32*)
darwin*) # Mac OS X or iOS darwin*) # Mac OS X or iOS
test_gtk=yes test_gtk=yes
test_randr=no test_randr=no
test_xrender=no
test_freetype=no test_freetype=no
test_fontconfig=no test_fontconfig=no
if test "$host_cpu" = "arm"; then if test "$host_cpu" = "arm"; then
...@@ -242,6 +246,7 @@ linux-androideabi*) ...@@ -242,6 +246,7 @@ linux-androideabi*)
test_kde=no test_kde=no
test_kde4=no test_kde4=no
test_randr=no test_randr=no
test_xrender=no
test_unix_quickstarter=no test_unix_quickstarter=no
_os=Android _os=Android
...@@ -680,11 +685,6 @@ AC_ARG_ENABLE(rpath, ...@@ -680,11 +685,6 @@ AC_ARG_ENABLE(rpath,
[Disable the use of relative paths in shared libraries.]), [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, AC_ARG_ENABLE(randr,
AS_HELP_STRING([--disable-randr], AS_HELP_STRING([--disable-randr],
[Disable RandR support in the vcl project.]), [Disable RandR support in the vcl project.]),
...@@ -911,7 +911,7 @@ AC_ARG_WITH(system-headers, ...@@ -911,7 +911,7 @@ AC_ARG_WITH(system-headers,
AS_HELP_STRING([--with-system-headers], AS_HELP_STRING([--with-system-headers],
[Use headers already on system -- enables all --with-system-* flags for [Use headers already on system -- enables all --with-system-* flags for
external packages whose headers are the only entities used i.e. 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, AC_ARG_WITH(system-jars,
...@@ -1233,10 +1233,12 @@ AC_ARG_WITH(system-sane, ...@@ -1233,10 +1233,12 @@ AC_ARG_WITH(system-sane,
[Use sane.h already on system.]),, [Use sane.h already on system.]),,
[with_system_sane="$with_system_headers"]) [with_system_sane="$with_system_headers"])
AC_ARG_WITH(system-xrender-headers, AC_ARG_WITH(system-xextensions-headers,
AS_HELP_STRING([--with-system-xrender-headers], AS_HELP_STRING([--with-system-xextensions-headers],
[Use XRender headers already on system.]), [To build without system X11 extensions headers, use
[with_system_xrender_headers="$with_system_headers"]) --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, AC_ARG_WITH(system-mesa-headers,
AS_HELP_STRING([--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" ...@@ -6238,36 +6240,31 @@ if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$_os" != "Android" -a "$_os"
[#include <X11/Intrinsic.h>]) [#include <X11/Intrinsic.h>])
fi 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 ===================================================================
dnl Check for system Xrender dnl Check for system Xrender
dnl =================================================================== dnl ===================================================================
AC_MSG_CHECKING([whether to link to Xrender]) AC_MSG_CHECKING([whether to use Xrender])
if test -n "$enable_xrender_link" -a "$enable_xrender_link" != "no"; then if test "$test_xrender" = "yes"; then
AC_MSG_RESULT([yes]) 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_CHECK_LIB(Xrender, XRenderQueryVersion, [],
[AC_MSG_ERROR(libXrender not found or functional)], []) [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 fi
AC_SUBST(SYSTEM_XRENDER_HEADERS)
AC_SUBST(XRENDER_LINK)
dnl =================================================================== dnl ===================================================================
dnl Check for XRandr dnl Check for XRandr
...@@ -8571,7 +8568,7 @@ if test "$with_system_cairo" = "yes"; then ...@@ -8571,7 +8568,7 @@ if test "$with_system_cairo" = "yes"; then
PKG_CHECK_MODULES( CAIRO, cairo >= 1.0.2 ) 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_MSG_CHECKING([whether Xrender.h defines PictStandardA8])
AC_RUN_IFELSE([AC_LANG_SOURCE([[ AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <X11/extensions/Xrender.h> #include <X11/extensions/Xrender.h>
......
...@@ -1947,7 +1947,6 @@ ToFile( "LIBXSLT_CFLAGS", "@LIBXSLT_CFLAGS@", "e" ); ...@@ -1947,7 +1947,6 @@ ToFile( "LIBXSLT_CFLAGS", "@LIBXSLT_CFLAGS@", "e" );
ToFile( "LIBXSLT_LIBS", "@LIBXSLT_LIBS@", "e" ); ToFile( "LIBXSLT_LIBS", "@LIBXSLT_LIBS@", "e" );
ToFile( "XSLTPROC", "@XSLTPROC@", "e" ); ToFile( "XSLTPROC", "@XSLTPROC@", "e" );
ToFile( "SYSTEM_SANE_HEADER","@SYSTEM_SANE_HEADER@","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_MESA_HEADERS","@SYSTEM_MESA_HEADERS@","e" );
ToFile( "SYSTEM_CURL", "@SYSTEM_CURL@", "e" ); ToFile( "SYSTEM_CURL", "@SYSTEM_CURL@", "e" );
ToFile( "CURL_CFLAGS", "@CURL_CFLAGS@", "e" ); ToFile( "CURL_CFLAGS", "@CURL_CFLAGS@", "e" );
......
...@@ -172,14 +172,9 @@ endif ...@@ -172,14 +172,9 @@ endif
endif endif
## handle Render linking ## 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,\ $(eval $(call gb_Library_add_libs,vclplug_gen,\
$(shell pkg-config --libs xrender) \ $(shell pkg-config --libs xrender) \
)) ))
endif
ifeq ($(OS),LINUX) ifeq ($(OS),LINUX)
$(eval $(call gb_Library_add_linked_libs,vclplug_gen,\ $(eval $(call gb_Library_add_linked_libs,vclplug_gen,\
......
...@@ -47,27 +47,15 @@ using namespace rtl; ...@@ -47,27 +47,15 @@ using namespace rtl;
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
XRenderPeer::XRenderPeer() XRenderPeer::XRenderPeer()
: mpDisplay( GetGenericData()->GetSalDisplay()->GetDisplay() ), : mpDisplay( GetGenericData()->GetSalDisplay()->GetDisplay() )
mpStandardFormatA8( NULL ), , mpStandardFormatA8( NULL )
mnRenderVersion( 0 ), , mnRenderVersion( 0 )
mpRenderLib( NULL )
#ifndef XRENDER_LINK
, mpXRenderCompositeTrapezoids( NULL )
, mpXRenderAddTraps( NULL )
#endif // XRENDER_LINK
{ {
InitRenderLib(); InitRenderLib();
} }
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
XRenderPeer::~XRenderPeer()
{
osl_unloadModule( mpRenderLib );
}
// ---------------------------------------------------------------------------
XRenderPeer& XRenderPeer::GetInstance() XRenderPeer& XRenderPeer::GetInstance()
{ {
static XRenderPeer aPeer; static XRenderPeer aPeer;
...@@ -79,117 +67,11 @@ XRenderPeer& XRenderPeer::GetInstance() ...@@ -79,117 +67,11 @@ XRenderPeer& XRenderPeer::GetInstance()
void XRenderPeer::InitRenderLib() void XRenderPeer::InitRenderLib()
{ {
int nDummy; int nDummy;
if( !XQueryExtension( mpDisplay, "RENDER", &nDummy, &nDummy, &nDummy ) ) // needed to initialize libXrender internals
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
XRenderQueryExtension( mpDisplay, &nDummy, &nDummy ); XRenderQueryExtension( mpDisplay, &nDummy, &nDummy );
#else
(*mpXRenderQueryExtension)( mpDisplay, &nDummy, &nDummy );
#endif
int nMajor, nMinor; int nMajor, nMinor;
#ifdef XRENDER_LINK
XRenderQueryVersion( mpDisplay, &nMajor, &nMinor ); XRenderQueryVersion( mpDisplay, &nMajor, &nMinor );
#else
(*mpXRenderQueryVersion)( mpDisplay, &nMajor, &nMinor );
#endif
mnRenderVersion = 16*nMajor + nMinor; mnRenderVersion = 16*nMajor + nMinor;
// the 8bit alpha mask format must be there // the 8bit alpha mask format must be there
......
...@@ -47,13 +47,11 @@ public: ...@@ -47,13 +47,11 @@ public:
protected: protected:
XRenderPeer(); XRenderPeer();
~XRenderPeer();
void InitRenderLib(); void InitRenderLib();
Display* mpDisplay; Display* mpDisplay;
XRenderPictFormat* mpStandardFormatA8; XRenderPictFormat* mpStandardFormatA8;
int mnRenderVersion; int mnRenderVersion;
oslModule mpRenderLib;
public: public:
XRenderPictFormat* GetStandardFormatA8() const; XRenderPictFormat* GetStandardFormatA8() const;
...@@ -85,45 +83,8 @@ public: ...@@ -85,45 +83,8 @@ public:
void CompositeTrapezoids( int nOp, Picture aSrc, Picture aDst, void CompositeTrapezoids( int nOp, Picture aSrc, Picture aDst,
const XRenderPictFormat*, int nXSrc, int nYSrc, const XRenderPictFormat*, int nXSrc, int nYSrc,
const XTrapezoid*, int nCount ) const; 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; 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 ...@@ -158,63 +119,38 @@ inline XRenderPictFormat* XRenderPeer::GetStandardFormatA8() const
inline XRenderPictFormat* XRenderPeer::FindStandardFormat(int nFormat) const inline XRenderPictFormat* XRenderPeer::FindStandardFormat(int nFormat) const
{ {
#ifdef XRENDER_LINK
return XRenderFindStandardFormat(mpDisplay, nFormat); return XRenderFindStandardFormat(mpDisplay, nFormat);
#else
return (*mpXRenderFindStandardFormat)(mpDisplay, nFormat);
#endif
} }
inline XRenderPictFormat* XRenderPeer::FindVisualFormat( Visual* pVisual ) const inline XRenderPictFormat* XRenderPeer::FindVisualFormat( Visual* pVisual ) const
{ {
#ifdef XRENDER_LINK
return XRenderFindVisualFormat ( mpDisplay, pVisual ); return XRenderFindVisualFormat ( mpDisplay, pVisual );
#else
return (*mpXRenderFindVisualFormat)( mpDisplay, pVisual );
#endif
} }
inline XRenderPictFormat* XRenderPeer::FindPictureFormat( unsigned long nFormatMask, inline XRenderPictFormat* XRenderPeer::FindPictureFormat( unsigned long nFormatMask,
const XRenderPictFormat& rFormatAttr ) const const XRenderPictFormat& rFormatAttr ) const
{ {
#ifdef XRENDER_LINK
return XRenderFindFormat( mpDisplay, nFormatMask, &rFormatAttr, 0 ); return XRenderFindFormat( mpDisplay, nFormatMask, &rFormatAttr, 0 );
#else
return (*mpXRenderFindFormat)( mpDisplay, nFormatMask, &rFormatAttr, 0 );
#endif
} }
inline Picture XRenderPeer::CreatePicture( Drawable aDrawable, inline Picture XRenderPeer::CreatePicture( Drawable aDrawable,
const XRenderPictFormat* pVisFormat, unsigned long nValueMask, const XRenderPictFormat* pVisFormat, unsigned long nValueMask,
const XRenderPictureAttributes* pRenderAttr ) const const XRenderPictureAttributes* pRenderAttr ) const
{ {
#ifdef XRENDER_LINK
return XRenderCreatePicture( mpDisplay, aDrawable, pVisFormat, return XRenderCreatePicture( mpDisplay, aDrawable, pVisFormat,
nValueMask, pRenderAttr ); nValueMask, pRenderAttr );
#else
return (*mpXRenderCreatePicture)( mpDisplay, aDrawable, pVisFormat,
nValueMask, pRenderAttr );
#endif
} }
inline void XRenderPeer::ChangePicture( Picture aPicture, inline void XRenderPeer::ChangePicture( Picture aPicture,
unsigned long nValueMask, const XRenderPictureAttributes* pRenderAttr ) const unsigned long nValueMask, const XRenderPictureAttributes* pRenderAttr ) const
{ {
#ifdef XRENDER_LINK
XRenderChangePicture( mpDisplay, aPicture, nValueMask, pRenderAttr ); XRenderChangePicture( mpDisplay, aPicture, nValueMask, pRenderAttr );
#else
(*mpXRenderChangePicture)( mpDisplay, aPicture, nValueMask, pRenderAttr );
#endif
} }
inline void XRenderPeer::SetPictureClipRegion( Picture aPicture, inline void XRenderPeer::SetPictureClipRegion( Picture aPicture,
XLIB_Region aXlibRegion ) const XLIB_Region aXlibRegion ) const
{ {
#ifdef XRENDER_LINK
XRenderSetPictureClipRegion( mpDisplay, aPicture, aXlibRegion ); XRenderSetPictureClipRegion( mpDisplay, aPicture, aXlibRegion );
#else
(*mpXRenderSetPictureClipRegion)( mpDisplay, aPicture, aXlibRegion );
#endif
} }
inline void XRenderPeer::CompositePicture( int nXRenderOp, inline void XRenderPeer::CompositePicture( int nXRenderOp,
...@@ -222,52 +158,30 @@ 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, int nSrcX, int nSrcY, int nMaskX, int nMaskY, int nDstX, int nDstY,
unsigned nWidth, unsigned nHeight ) const unsigned nWidth, unsigned nHeight ) const
{ {
#ifdef XRENDER_LINK
XRenderComposite( mpDisplay, nXRenderOp, aSrcPic, aMaskPic, aDstPic, XRenderComposite( mpDisplay, nXRenderOp, aSrcPic, aMaskPic, aDstPic,
nSrcX, nSrcY, nMaskX, nMaskY, nDstX, nDstY, nWidth, nHeight ); 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 inline void XRenderPeer::FreePicture( Picture aPicture ) const
{ {
#ifdef XRENDER_LINK
XRenderFreePicture( mpDisplay, aPicture ); XRenderFreePicture( mpDisplay, aPicture );
#else
(*mpXRenderFreePicture)( mpDisplay, aPicture );
#endif
} }
inline GlyphSet XRenderPeer::CreateGlyphSet() const inline GlyphSet XRenderPeer::CreateGlyphSet() const
{ {
#ifdef XRENDER_LINK
return XRenderCreateGlyphSet( mpDisplay, mpStandardFormatA8 ); return XRenderCreateGlyphSet( mpDisplay, mpStandardFormatA8 );
#else
return (*mpXRenderCreateGlyphSet)( mpDisplay, mpStandardFormatA8 );
#endif
} }
inline void XRenderPeer::FreeGlyphSet( GlyphSet aGS ) const inline void XRenderPeer::FreeGlyphSet( GlyphSet aGS ) const
{ {
#ifdef XRENDER_LINK
XRenderFreeGlyphSet( mpDisplay, aGS ); XRenderFreeGlyphSet( mpDisplay, aGS );
#else
(*mpXRenderFreeGlyphSet)( mpDisplay, aGS );
#endif
} }
inline void XRenderPeer::AddGlyph( GlyphSet aGS, Glyph nGlyphId, inline void XRenderPeer::AddGlyph( GlyphSet aGS, Glyph nGlyphId,
const XGlyphInfo& rGI, const char* pBuffer, int nBufSize ) const const XGlyphInfo& rGI, const char* pBuffer, int nBufSize ) const
{ {
#ifdef XRENDER_LINK
XRenderAddGlyphs( mpDisplay, aGS, &nGlyphId, &rGI, 1, XRenderAddGlyphs( mpDisplay, aGS, &nGlyphId, &rGI, 1,
const_cast<char*>(pBuffer), nBufSize ); const_cast<char*>(pBuffer), nBufSize );
#else
(*mpXRenderAddGlyphs)( mpDisplay, aGS, &nGlyphId, &rGI, 1,
const_cast<char*>(pBuffer), nBufSize );
#endif
} }
inline void XRenderPeer::FreeGlyph( GlyphSet aGS, Glyph nGlyphId ) const inline void XRenderPeer::FreeGlyph( GlyphSet aGS, Glyph nGlyphId ) const
...@@ -284,23 +198,14 @@ inline void XRenderPeer::CompositeString32( Picture aSrc, Picture aDst, ...@@ -284,23 +198,14 @@ inline void XRenderPeer::CompositeString32( Picture aSrc, Picture aDst,
GlyphSet aGlyphSet, int nDstX, int nDstY, GlyphSet aGlyphSet, int nDstX, int nDstY,
const unsigned* pText, int nTextLen ) const const unsigned* pText, int nTextLen ) const
{ {
#ifdef XRENDER_LINK
XRenderCompositeString32( mpDisplay, PictOpOver, aSrc, aDst, NULL, XRenderCompositeString32( mpDisplay, PictOpOver, aSrc, aDst, NULL,
aGlyphSet, 0, 0, nDstX, nDstY, pText, nTextLen ); 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, inline void XRenderPeer::FillRectangle( int a, Picture b, const XRenderColor* c,
int d, int e, unsigned int f, unsigned int g) const int d, int e, unsigned int f, unsigned int g) const
{ {
#ifdef XRENDER_LINK
XRenderFillRectangle( mpDisplay, a, b, c, d, e, f, g ); 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, ...@@ -308,26 +213,14 @@ inline void XRenderPeer::CompositeTrapezoids( int nOp,
Picture aSrc, Picture aDst, const XRenderPictFormat* pXRPF, Picture aSrc, Picture aDst, const XRenderPictFormat* pXRPF,
int nXSrc, int nYSrc, const XTrapezoid* pXT, int nCount ) const int nXSrc, int nYSrc, const XTrapezoid* pXT, int nCount ) const
{ {
#ifdef XRENDER_LINK
XRenderCompositeTrapezoids( mpDisplay, nOp, aSrc, aDst, pXRPF, XRenderCompositeTrapezoids( mpDisplay, nOp, aSrc, aDst, pXRPF,
nXSrc, nYSrc, pXT, nCount ); 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 const _XTrap* pTraps, int nCount ) const
{ {
#ifdef XRENDER_LINK
XRenderAddTraps( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount ); XRenderAddTraps( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount );
#else
if( !mpXRenderAddTraps )
return false;
(*mpXRenderAddTraps)( mpDisplay, aDst, nXOfs, nYOfs, pTraps, nCount );
#endif
return true;
} }
//===================================================================== //=====================================================================
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment