mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 06:00:45 +00:00
Load libXrender at run-time with dlopen (based on a patch by Huw
Davies).
This commit is contained in:
parent
d15bf1c0fe
commit
21e916676f
70
configure
vendored
70
configure
vendored
@ -6887,83 +6887,13 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
echo "$as_me:$LINENO: checking for XRenderQueryExtension in -lXrender" >&5
|
||||
echo $ECHO_N "checking for XRenderQueryExtension in -lXrender... $ECHO_C" >&6
|
||||
if test "${ac_cv_lib_Xrender_XRenderQueryExtension+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lXrender $X_LIBS -lXext -lX11 $X_EXTRA_LIBS
|
||||
$LIBS"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
#line $LINENO "configure"
|
||||
#include "confdefs.h"
|
||||
|
||||
/* Override any gcc2 internal prototype to avoid an error. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
/* We use char because int might match the return type of a gcc2
|
||||
builtin and then its argument prototype would still apply. */
|
||||
char XRenderQueryExtension ();
|
||||
#ifdef F77_DUMMY_MAIN
|
||||
# ifdef __cplusplus
|
||||
extern "C"
|
||||
# endif
|
||||
int F77_DUMMY_MAIN() { return 1; }
|
||||
#endif
|
||||
int
|
||||
main ()
|
||||
{
|
||||
XRenderQueryExtension ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
|
||||
(eval $ac_link) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
|
||||
(eval $ac_try) 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_cv_lib_Xrender_XRenderQueryExtension=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
cat conftest.$ac_ext >&5
|
||||
ac_cv_lib_Xrender_XRenderQueryExtension=no
|
||||
fi
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderQueryExtension" >&5
|
||||
echo "${ECHO_T}$ac_cv_lib_Xrender_XRenderQueryExtension" >&6
|
||||
if test $ac_cv_lib_Xrender_XRenderQueryExtension = yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_LIBXRENDER 1
|
||||
_ACEOF
|
||||
|
||||
X_PRE_LIBS="$X_PRE_LIBS -lXrender"
|
||||
|
||||
fi
|
||||
|
||||
|
||||
else
|
||||
{ echo "$as_me:$LINENO: WARNING: XRender extension not found, Wine will be built without it" >&5
|
||||
echo "$as_me: WARNING: XRender extension not found, Wine will be built without it" >&2;}
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
fi
|
||||
|
||||
done
|
||||
|
15
configure.ac
15
configure.ac
@ -225,19 +225,8 @@ then
|
||||
AC_MSG_WARN([[XVideo extension not found, Wine will be built without it]]),
|
||||
[#include <X11/Xlib.h>])
|
||||
|
||||
dnl *** Check for XRender extension
|
||||
AC_CHECK_HEADERS(X11/extensions/Xrender.h,
|
||||
[ dnl *** If X11/extensions/Xrender.h exists...
|
||||
AC_CHECK_LIB(Xrender, XRenderQueryExtension,
|
||||
[ AC_DEFINE(HAVE_LIBXRENDER, 1, [Define if you have the XRender extension library])
|
||||
X_PRE_LIBS="$X_PRE_LIBS -lXrender"
|
||||
],,
|
||||
$X_LIBS -lXext -lX11 $X_EXTRA_LIBS
|
||||
)
|
||||
],
|
||||
AC_MSG_WARN([[XRender extension not found, Wine will be built without it]]),
|
||||
[#include <X11/Xlib.h>])
|
||||
|
||||
dnl *** Check for XRender include file
|
||||
AC_CHECK_HEADERS(X11/extensions/Xrender.h,,,[#include <X11/Xlib.h>])
|
||||
]
|
||||
) dnl *** End of X11/Xlib.h check
|
||||
|
||||
|
@ -18,24 +18,26 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "winnt.h"
|
||||
#include "x11drv.h"
|
||||
#include "bitmap.h"
|
||||
#include "wine/debug.h"
|
||||
#include "region.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "wine/unicode.h"
|
||||
#include <assert.h>
|
||||
#include "wine/debug.h"
|
||||
|
||||
BOOL X11DRV_XRender_Installed = FALSE;
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(xrender);
|
||||
|
||||
#ifdef HAVE_LIBXRENDER
|
||||
#ifdef HAVE_X11_EXTENSIONS_XRENDER_H
|
||||
|
||||
#include "ts_xlib.h"
|
||||
#include "ts_xrender.h"
|
||||
#include <X11/extensions/Xrender.h>
|
||||
|
||||
static XRenderPictFormat *screen_format; /* format of screen */
|
||||
static XRenderPictFormat *mono_format; /* format of mono bitmap */
|
||||
@ -80,6 +82,24 @@ static INT mru = -1;
|
||||
|
||||
static int antialias = 1;
|
||||
|
||||
static void *xrender_handle;
|
||||
|
||||
#define MAKE_FUNCPTR(f) static typeof(f) * p##f;
|
||||
MAKE_FUNCPTR(XRenderAddGlyphs)
|
||||
MAKE_FUNCPTR(XRenderCompositeString8)
|
||||
MAKE_FUNCPTR(XRenderCompositeString16)
|
||||
MAKE_FUNCPTR(XRenderCompositeString32)
|
||||
MAKE_FUNCPTR(XRenderCreateGlyphSet)
|
||||
MAKE_FUNCPTR(XRenderCreatePicture)
|
||||
MAKE_FUNCPTR(XRenderFillRectangle)
|
||||
MAKE_FUNCPTR(XRenderFindFormat)
|
||||
MAKE_FUNCPTR(XRenderFindVisualFormat)
|
||||
MAKE_FUNCPTR(XRenderFreeGlyphSet)
|
||||
MAKE_FUNCPTR(XRenderFreePicture)
|
||||
MAKE_FUNCPTR(XRenderSetPictureClipRectangles)
|
||||
MAKE_FUNCPTR(XRenderQueryExtension)
|
||||
#undef MAKE_FUNCPTR
|
||||
|
||||
/***********************************************************************
|
||||
* X11DRV_XRender_Init
|
||||
*
|
||||
@ -91,15 +111,38 @@ void X11DRV_XRender_Init(void)
|
||||
int error_base, event_base, i;
|
||||
XRenderPictFormat pf;
|
||||
|
||||
if(TSXRenderQueryExtension(gdi_display, &event_base, &error_base)) {
|
||||
/* FIXME: should find correct soname at compile time */
|
||||
if (!wine_dlopen("libX11.so", RTLD_NOW|RTLD_GLOBAL, NULL, 0)) return;
|
||||
if (!wine_dlopen("libXext.so", RTLD_NOW|RTLD_GLOBAL, NULL, 0)) return;
|
||||
xrender_handle = wine_dlopen("libXrender.so", RTLD_NOW, NULL, 0);
|
||||
if(!xrender_handle) return;
|
||||
|
||||
#define LOAD_FUNCPTR(f) if((p##f = wine_dlsym(xrender_handle, #f, NULL, 0)) == NULL) goto sym_not_found;
|
||||
LOAD_FUNCPTR(XRenderAddGlyphs)
|
||||
LOAD_FUNCPTR(XRenderCompositeString8)
|
||||
LOAD_FUNCPTR(XRenderCompositeString16)
|
||||
LOAD_FUNCPTR(XRenderCompositeString32)
|
||||
LOAD_FUNCPTR(XRenderCreateGlyphSet)
|
||||
LOAD_FUNCPTR(XRenderCreatePicture)
|
||||
LOAD_FUNCPTR(XRenderFillRectangle)
|
||||
LOAD_FUNCPTR(XRenderFindFormat)
|
||||
LOAD_FUNCPTR(XRenderFindVisualFormat)
|
||||
LOAD_FUNCPTR(XRenderFreeGlyphSet)
|
||||
LOAD_FUNCPTR(XRenderFreePicture)
|
||||
LOAD_FUNCPTR(XRenderSetPictureClipRectangles)
|
||||
LOAD_FUNCPTR(XRenderQueryExtension)
|
||||
#undef LOAD_FUNCPTR
|
||||
|
||||
wine_tsx11_lock();
|
||||
if(pXRenderQueryExtension(gdi_display, &event_base, &error_base)) {
|
||||
X11DRV_XRender_Installed = TRUE;
|
||||
TRACE("Xrender is up and running error_base = %d\n", error_base);
|
||||
screen_format = TSXRenderFindVisualFormat(gdi_display, visual);
|
||||
screen_format = pXRenderFindVisualFormat(gdi_display, visual);
|
||||
pf.type = PictTypeDirect;
|
||||
pf.depth = 1;
|
||||
pf.direct.alpha = 0;
|
||||
pf.direct.alphaMask = 1;
|
||||
mono_format = TSXRenderFindFormat(gdi_display, PictFormatType |
|
||||
mono_format = pXRenderFindFormat(gdi_display, PictFormatType |
|
||||
PictFormatDepth | PictFormatAlpha |
|
||||
PictFormatAlphaMask, &pf, 0);
|
||||
|
||||
@ -116,7 +159,12 @@ void X11DRV_XRender_Init(void)
|
||||
} else {
|
||||
TRACE("Xrender is not available on this server\n");
|
||||
}
|
||||
wine_tsx11_unlock();
|
||||
return;
|
||||
|
||||
sym_not_found:
|
||||
wine_dlclose(xrender_handle, NULL, 0);
|
||||
xrender_handle = NULL;
|
||||
}
|
||||
|
||||
static BOOL fontcmp(LFANDSIZE *p1, LFANDSIZE *p2)
|
||||
@ -191,7 +239,9 @@ static gsCacheEntry *AllocEntry(void)
|
||||
|
||||
if(best >= 0) {
|
||||
TRACE("freeing unused glyphset at cache %d\n", best);
|
||||
TSXRenderFreeGlyphSet(gdi_display, glyphsetCache[best].glyphset);
|
||||
wine_tsx11_lock();
|
||||
pXRenderFreeGlyphSet(gdi_display, glyphsetCache[best].glyphset);
|
||||
wine_tsx11_unlock();
|
||||
glyphsetCache[best].glyphset = 0;
|
||||
if(glyphsetCache[best].nrealized) { /* do we really want to do this? */
|
||||
HeapFree(GetProcessHeap(), 0, glyphsetCache[best].realized);
|
||||
@ -252,14 +302,16 @@ static gsCacheEntry *GetCacheEntry(LFANDSIZE *plfsz)
|
||||
pf.type = PictTypeDirect;
|
||||
pf.direct.alpha = 0;
|
||||
|
||||
ret->font_format = TSXRenderFindFormat(gdi_display,
|
||||
wine_tsx11_lock();
|
||||
ret->font_format = pXRenderFindFormat(gdi_display,
|
||||
PictFormatType |
|
||||
PictFormatDepth |
|
||||
PictFormatAlpha |
|
||||
PictFormatAlphaMask,
|
||||
&pf, 0);
|
||||
|
||||
ret->glyphset = TSXRenderCreateGlyphSet(gdi_display, ret->font_format);
|
||||
ret->glyphset = pXRenderCreateGlyphSet(gdi_display, ret->font_format);
|
||||
wine_tsx11_unlock();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -296,7 +348,8 @@ static void lfsz_calc_hash(LFANDSIZE *plfsz)
|
||||
void X11DRV_XRender_Finalize(void)
|
||||
{
|
||||
FIXME("Free cached glyphsets\n");
|
||||
return;
|
||||
if (xrender_handle) wine_dlclose(xrender_handle, NULL, 0);
|
||||
xrender_handle = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -329,16 +382,18 @@ BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE *physDev, HFONT hfont)
|
||||
*/
|
||||
void X11DRV_XRender_DeleteDC(X11DRV_PDEVICE *physDev)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
if(physDev->xrender->tile_pict)
|
||||
TSXRenderFreePicture(gdi_display, physDev->xrender->tile_pict);
|
||||
pXRenderFreePicture(gdi_display, physDev->xrender->tile_pict);
|
||||
|
||||
if(physDev->xrender->tile_xpm)
|
||||
TSXFreePixmap(gdi_display, physDev->xrender->tile_xpm);
|
||||
XFreePixmap(gdi_display, physDev->xrender->tile_xpm);
|
||||
|
||||
if(physDev->xrender->pict) {
|
||||
TRACE("freeing pict = %lx dc = %p\n", physDev->xrender->pict, physDev->dc);
|
||||
TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
pXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
}
|
||||
wine_tsx11_unlock();
|
||||
|
||||
if(physDev->xrender->cacheEntry)
|
||||
dec_ref_cache(physDev->xrender->cacheEntry);
|
||||
@ -359,7 +414,9 @@ void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev)
|
||||
{
|
||||
if(physDev->xrender->pict) {
|
||||
TRACE("freeing pict %08lx from dc %p\n", physDev->xrender->pict, physDev->dc);
|
||||
TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
wine_tsx11_lock();
|
||||
pXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
physDev->xrender->pict = 0;
|
||||
return;
|
||||
@ -464,8 +521,10 @@ static BOOL UploadGlyph(X11DRV_PDEVICE *physDev, int glyph)
|
||||
}
|
||||
}
|
||||
gid = glyph;
|
||||
TSXRenderAddGlyphs(gdi_display, entry->glyphset, &gid, &gi, 1,
|
||||
wine_tsx11_lock();
|
||||
pXRenderAddGlyphs(gdi_display, entry->glyphset, &gid, &gi, 1,
|
||||
buf, buflen);
|
||||
wine_tsx11_unlock();
|
||||
HeapFree(GetProcessHeap(), 0, buf);
|
||||
return TRUE;
|
||||
}
|
||||
@ -640,12 +699,13 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
XRenderPictureAttributes pa;
|
||||
pa.subwindow_mode = IncludeInferiors;
|
||||
|
||||
physDev->xrender->pict =
|
||||
TSXRenderCreatePicture(gdi_display,
|
||||
physDev->drawable,
|
||||
(dc->bitsPerPixel == 1) ?
|
||||
mono_format : screen_format,
|
||||
CPSubwindowMode, &pa);
|
||||
wine_tsx11_lock();
|
||||
physDev->xrender->pict = pXRenderCreatePicture(gdi_display,
|
||||
physDev->drawable,
|
||||
(dc->bitsPerPixel == 1) ?
|
||||
mono_format : screen_format,
|
||||
CPSubwindowMode, &pa);
|
||||
wine_tsx11_unlock();
|
||||
|
||||
TRACE("allocing pict = %lx dc = %p drawable = %08lx\n", physDev->xrender->pict, dc, physDev->drawable);
|
||||
} else {
|
||||
@ -689,8 +749,10 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
pXrect = NULL;
|
||||
}
|
||||
|
||||
TSXRenderSetPictureClipRectangles( gdi_display, physDev->xrender->pict,
|
||||
0, 0, pXrect, obj->rgn->numRects );
|
||||
wine_tsx11_lock();
|
||||
pXRenderSetPictureClipRectangles( gdi_display, physDev->xrender->pict,
|
||||
0, 0, pXrect, obj->rgn->numRects );
|
||||
wine_tsx11_unlock();
|
||||
|
||||
if(pXrect)
|
||||
HeapFree( GetProcessHeap(), 0, pXrect );
|
||||
@ -714,15 +776,17 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
XRenderPictureAttributes pa;
|
||||
|
||||
XRenderPictFormat *format = (dc->bitsPerPixel == 1) ? mono_format : screen_format;
|
||||
physDev->xrender->tile_xpm = TSXCreatePixmap(gdi_display,
|
||||
wine_tsx11_lock();
|
||||
physDev->xrender->tile_xpm = XCreatePixmap(gdi_display,
|
||||
physDev->drawable,
|
||||
1, 1,
|
||||
format->depth);
|
||||
pa.repeat = True;
|
||||
physDev->xrender->tile_pict = TSXRenderCreatePicture(gdi_display,
|
||||
physDev->xrender->tile_pict = pXRenderCreatePicture(gdi_display,
|
||||
physDev->xrender->tile_xpm,
|
||||
format,
|
||||
CPRepeat, &pa);
|
||||
wine_tsx11_unlock();
|
||||
TRACE("Created pixmap of depth %d\n", format->depth);
|
||||
/* init lastTextColor to something different from dc->textColor */
|
||||
physDev->xrender->lastTextColor = ~dc->textColor;
|
||||
@ -743,9 +807,11 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
col.red = col.green = col.blue = 0;
|
||||
col.alpha = 0xffff;
|
||||
}
|
||||
TSXRenderFillRectangle(gdi_display, PictOpSrc,
|
||||
wine_tsx11_lock();
|
||||
pXRenderFillRectangle(gdi_display, PictOpSrc,
|
||||
physDev->xrender->tile_pict,
|
||||
&col, 0, 0, 1, 1);
|
||||
wine_tsx11_unlock();
|
||||
physDev->xrender->lastTextColor = dc->textColor;
|
||||
}
|
||||
|
||||
@ -764,8 +830,10 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
|
||||
TRACE("Writing %s at %d,%d\n", debugstr_wn(wstr,count), dc->DCOrgX + x,
|
||||
dc->DCOrgY + y);
|
||||
|
||||
wine_tsx11_lock();
|
||||
if(!lpDx)
|
||||
TSXRenderCompositeString16(gdi_display, render_op,
|
||||
pXRenderCompositeString16(gdi_display, render_op,
|
||||
physDev->xrender->tile_pict,
|
||||
physDev->xrender->pict,
|
||||
physDev->xrender->cacheEntry->font_format,
|
||||
@ -776,7 +844,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
else {
|
||||
INT offset = 0, xoff = 0, yoff = 0;
|
||||
for(idx = 0; idx < count; idx++) {
|
||||
TSXRenderCompositeString16(gdi_display, render_op,
|
||||
pXRenderCompositeString16(gdi_display, render_op,
|
||||
physDev->xrender->tile_pict,
|
||||
physDev->xrender->pict,
|
||||
physDev->xrender->cacheEntry->font_format,
|
||||
@ -791,10 +859,10 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
}
|
||||
|
||||
if(physDev->xrender->pict) {
|
||||
TSXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
pXRenderFreePicture(gdi_display, physDev->xrender->pict);
|
||||
}
|
||||
physDev->xrender->pict = 0;
|
||||
|
||||
wine_tsx11_unlock();
|
||||
|
||||
if (flags & ETO_CLIPPED)
|
||||
RestoreVisRgn16( hdc );
|
||||
@ -804,7 +872,7 @@ BOOL X11DRV_XRender_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y, UINT flag
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#else /* #ifdef HAVE_LIBXRENDER */
|
||||
#else /* HAVE_X11_EXTENSIONS_XRENDER_H */
|
||||
|
||||
void X11DRV_XRender_Init(void)
|
||||
{
|
||||
@ -814,8 +882,6 @@ void X11DRV_XRender_Init(void)
|
||||
|
||||
void X11DRV_XRender_Finalize(void)
|
||||
{
|
||||
assert(0);
|
||||
return;
|
||||
}
|
||||
|
||||
BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE *physDev, HFONT hfont)
|
||||
@ -844,4 +910,4 @@ void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev)
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* HAVE_X11_EXTENSIONS_XRENDER_H */
|
||||
|
@ -218,9 +218,6 @@
|
||||
/* Define to 1 if you have the `xpg4' library (-lxpg4). */
|
||||
#undef HAVE_LIBXPG4
|
||||
|
||||
/* Define if you have the XRender extension library */
|
||||
#undef HAVE_LIBXRENDER
|
||||
|
||||
/* Define if you have the X Shape extension */
|
||||
#undef HAVE_LIBXSHAPE
|
||||
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Thread safe wrappers around Xrender calls.
|
||||
* Always include this file instead of <X11/Xrender.h>.
|
||||
* This file was generated automatically by tools/make_X11wrappers
|
||||
* DO NOT EDIT!
|
||||
*/
|
||||
|
||||
#ifndef __WINE_TS_XRENDER_H
|
||||
#define __WINE_TS_XRENDER_H
|
||||
|
||||
#ifndef __WINE_CONFIG_H
|
||||
# error You must include config.h to use this header
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBXRENDER
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xrender.h>
|
||||
|
||||
extern void (*wine_tsx11_lock)(void);
|
||||
extern void (*wine_tsx11_unlock)(void);
|
||||
|
||||
extern void TSXRenderAddGlyphs(Display*,GlyphSet,Glyph*,XGlyphInfo*,int,char*,int);
|
||||
extern void TSXRenderCompositeString8(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,char*,int);
|
||||
extern void TSXRenderCompositeString16(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned short*,int);
|
||||
extern void TSXRenderCompositeString32(Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned int*,int);
|
||||
extern GlyphSet TSXRenderCreateGlyphSet(Display*,XRenderPictFormat*);
|
||||
extern Picture TSXRenderCreatePicture(Display*,Drawable,XRenderPictFormat*,unsigned long,XRenderPictureAttributes*);
|
||||
extern void TSXRenderFillRectangle(Display*,int,Picture,XRenderColor*,int,int,unsigned int, unsigned int);
|
||||
extern XRenderPictFormat* TSXRenderFindFormat(Display*,unsigned long,XRenderPictFormat*,int);
|
||||
extern XRenderPictFormat* TSXRenderFindVisualFormat(Display*,Visual*);
|
||||
extern void TSXRenderFreeGlyphSet(Display*,GlyphSet);
|
||||
extern void TSXRenderFreePicture(Display*,Picture);
|
||||
extern void TSXRenderSetPictureClipRectangles(Display*,Picture,int,int,XRectangle*,int);
|
||||
extern Bool TSXRenderQueryExtension(Display*,int*,int*);
|
||||
|
||||
#endif /* defined(HAVE_LIBXRENDER) */
|
||||
|
||||
#endif /* __WINE_TS_XRENDER_H */
|
@ -30,7 +30,7 @@
|
||||
$X11_include_dir = "/usr/X11/include";
|
||||
$outdir = "tsx11";
|
||||
$wantfile = "$outdir/X11_calls";
|
||||
@dolist = ("Xlib", "Xresource", "Xutil", "XShm", "xf86dga", "xf86dga2", "xf86vmode", "shape", "xvideo", "Xrender");
|
||||
@dolist = ("Xlib", "Xresource", "Xutil", "XShm", "xf86dga", "xf86dga2", "xf86vmode", "shape", "xvideo");
|
||||
|
||||
# First read list of wanted function names.
|
||||
|
||||
@ -102,12 +102,6 @@ foreach $name (@dolist) {
|
||||
$post_file = "#endif /* defined(HAVE_XVIDEO) */\n";
|
||||
$inc_name = "Xvlib";
|
||||
}
|
||||
if($name eq "Xrender") {
|
||||
$x11_incl = "#include <X11/Xlib.h>\n";
|
||||
$extensions_dir = "extensions/";
|
||||
$pre_file = "#ifdef HAVE_LIBXRENDER\n";
|
||||
$post_file = "#endif /* defined(HAVE_LIBXRENDER) */\n";
|
||||
}
|
||||
|
||||
|
||||
print OUTH <<END;
|
||||
@ -338,72 +332,6 @@ output_fn_short("XvImage *", "XvShmCreateImage", "Display*", "XvPortID", "int",
|
||||
"Display*a0,int a1,int a2,int a3",
|
||||
"a0,a1,a2,a3"
|
||||
);
|
||||
} elsif($name eq "Xrender") {
|
||||
output_fn("XRenderAddGlyphs","void",
|
||||
"Display*,GlyphSet,Glyph*,XGlyphInfo*,int,char*,int",
|
||||
"Display*a0,GlyphSet a1,Glyph*a2,XGlyphInfo*a3,int a4,char*a5,int a6",
|
||||
"a0,a1,a2,a3,a4,a5,a6"
|
||||
);
|
||||
output_fn("XRenderCompositeString8","void",
|
||||
"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,char*,int",
|
||||
"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,char*a10,int a11",
|
||||
"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
|
||||
);
|
||||
output_fn("XRenderCompositeString16","void",
|
||||
"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned short*,int",
|
||||
"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned short*a10,int a11",
|
||||
"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
|
||||
);
|
||||
output_fn("XRenderCompositeString32","void",
|
||||
"Display*,int,Picture,Picture,XRenderPictFormat*,GlyphSet,int,int,int,int,unsigned int*,int",
|
||||
"Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned int*a10,int a11",
|
||||
"a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11"
|
||||
);
|
||||
output_fn("XRenderCreateGlyphSet",GlyphSet,
|
||||
"Display*,XRenderPictFormat*",
|
||||
"Display*a0,XRenderPictFormat*a1",
|
||||
"a0,a1"
|
||||
);
|
||||
output_fn("XRenderCreatePicture",Picture,
|
||||
"Display*,Drawable,XRenderPictFormat*,unsigned long,XRenderPictureAttributes*",
|
||||
"Display*a0,Drawable a1,XRenderPictFormat*a2,unsigned long a3,XRenderPictureAttributes*a4",
|
||||
"a0,a1,a2,a3,a4"
|
||||
);
|
||||
output_fn("XRenderFillRectangle","void",
|
||||
"Display*,int,Picture,XRenderColor*,int,int,unsigned int, unsigned int",
|
||||
"Display*a0,int a1,Picture a2,XRenderColor*a3,int a4,int a5,unsigned int a6,unsigned int a7",
|
||||
"a0,a1,a2,a3,a4,a5,a6,a7"
|
||||
);
|
||||
output_fn("XRenderFindFormat","XRenderPictFormat*",
|
||||
"Display*,unsigned long,XRenderPictFormat*,int",
|
||||
"Display*a0,unsigned long a1,XRenderPictFormat*a2,int a3",
|
||||
"a0,a1,a2,a3"
|
||||
);
|
||||
output_fn("XRenderFindVisualFormat","XRenderPictFormat*",
|
||||
"Display*,Visual*",
|
||||
"Display*a0,Visual*a1",
|
||||
"a0,a1"
|
||||
);
|
||||
output_fn("XRenderFreeGlyphSet","void",
|
||||
"Display*,GlyphSet",
|
||||
"Display*a0,GlyphSet a1",
|
||||
"a0,a1"
|
||||
);
|
||||
output_fn("XRenderFreePicture","void",
|
||||
"Display*,Picture",
|
||||
"Display*a0,Picture a1",
|
||||
"a0,a1"
|
||||
);
|
||||
output_fn("XRenderSetPictureClipRectangles","void",
|
||||
"Display*,Picture,int,int,XRectangle*,int",
|
||||
"Display*a0,Picture a1,int a2,int a3,XRectangle* a4,int a5",
|
||||
"a0,a1,a2,a3,a4,a5"
|
||||
);
|
||||
output_fn("XRenderQueryExtension",Bool,
|
||||
"Display*,int*,int*",
|
||||
"Display*a0,int*a1,int*a2",
|
||||
"a0,a1,a2"
|
||||
);
|
||||
|
||||
} else {
|
||||
open(IN,
|
||||
|
@ -16,7 +16,6 @@ C_SRCS = \
|
||||
ts_xf86vmode.c \
|
||||
ts_xshm.c \
|
||||
ts_xlib.c \
|
||||
ts_xrender.c \
|
||||
ts_xresource.c \
|
||||
ts_xvideo.c \
|
||||
ts_xutil.c \
|
||||
|
@ -250,16 +250,3 @@ XvCreateImage
|
||||
XvPutImage
|
||||
XvShmPutImage
|
||||
XvShmCreateImage
|
||||
XRenderAddGlyphs
|
||||
XRenderCompositeString16
|
||||
XRenderCompositeString32
|
||||
XRenderCompositeString8
|
||||
XRenderCreateGlyphSet
|
||||
XRenderCreatePicture
|
||||
XRenderFillRectangle
|
||||
XRenderFindFormat
|
||||
XRenderFindVisualFormat
|
||||
XRenderFreeGlyphSet
|
||||
XRenderFreePicture
|
||||
XRenderQueryExtension
|
||||
XRenderSetPictureClipRectangles
|
||||
|
@ -1,119 +0,0 @@
|
||||
/*
|
||||
* Thread safe wrappers around Xrender calls.
|
||||
* This file was generated automatically by tools/make_X11wrappers
|
||||
* DO NOT EDIT!
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifdef HAVE_LIBXRENDER
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/extensions/Xrender.h>
|
||||
|
||||
#include "ts_xrender.h"
|
||||
|
||||
|
||||
void TSXRenderAddGlyphs(Display*a0,GlyphSet a1,Glyph*a2,XGlyphInfo*a3,int a4,char*a5,int a6)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderAddGlyphs(a0,a1,a2,a3,a4,a5,a6);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
void TSXRenderCompositeString8(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,char*a10,int a11)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderCompositeString8(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
void TSXRenderCompositeString16(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned short*a10,int a11)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderCompositeString16(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
void TSXRenderCompositeString32(Display*a0,int a1,Picture a2,Picture a3,XRenderPictFormat*a4,GlyphSet a5,int a6,int a7,int a8,int a9,unsigned int*a10,int a11)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderCompositeString32(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
GlyphSet TSXRenderCreateGlyphSet(Display*a0,XRenderPictFormat*a1)
|
||||
{
|
||||
GlyphSet r;
|
||||
wine_tsx11_lock();
|
||||
r = XRenderCreateGlyphSet(a0,a1);
|
||||
wine_tsx11_unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
Picture TSXRenderCreatePicture(Display*a0,Drawable a1,XRenderPictFormat*a2,unsigned long a3,XRenderPictureAttributes*a4)
|
||||
{
|
||||
Picture r;
|
||||
wine_tsx11_lock();
|
||||
r = XRenderCreatePicture(a0,a1,a2,a3,a4);
|
||||
wine_tsx11_unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
void TSXRenderFillRectangle(Display*a0,int a1,Picture a2,XRenderColor*a3,int a4,int a5,unsigned int a6,unsigned int a7)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderFillRectangle(a0,a1,a2,a3,a4,a5,a6,a7);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
XRenderPictFormat* TSXRenderFindFormat(Display*a0,unsigned long a1,XRenderPictFormat*a2,int a3)
|
||||
{
|
||||
XRenderPictFormat* r;
|
||||
wine_tsx11_lock();
|
||||
r = XRenderFindFormat(a0,a1,a2,a3);
|
||||
wine_tsx11_unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
XRenderPictFormat* TSXRenderFindVisualFormat(Display*a0,Visual*a1)
|
||||
{
|
||||
XRenderPictFormat* r;
|
||||
wine_tsx11_lock();
|
||||
r = XRenderFindVisualFormat(a0,a1);
|
||||
wine_tsx11_unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
void TSXRenderFreeGlyphSet(Display*a0,GlyphSet a1)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderFreeGlyphSet(a0,a1);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
void TSXRenderFreePicture(Display*a0,Picture a1)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderFreePicture(a0,a1);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
void TSXRenderSetPictureClipRectangles(Display*a0,Picture a1,int a2,int a3,XRectangle* a4,int a5)
|
||||
{
|
||||
wine_tsx11_lock();
|
||||
XRenderSetPictureClipRectangles(a0,a1,a2,a3,a4,a5);
|
||||
wine_tsx11_unlock();
|
||||
}
|
||||
|
||||
Bool TSXRenderQueryExtension(Display*a0,int*a1,int*a2)
|
||||
{
|
||||
Bool r;
|
||||
wine_tsx11_lock();
|
||||
r = XRenderQueryExtension(a0,a1,a2);
|
||||
wine_tsx11_unlock();
|
||||
return r;
|
||||
}
|
||||
|
||||
#endif /* defined(HAVE_LIBXRENDER) */
|
||||
|
Loading…
Reference in New Issue
Block a user