Modified configure.in to allow building with Xrender. Fixed all problems that prevented compilation.
Builds fine now :)
This commit is contained in:
parent
9de49fce8f
commit
b4651b2a51
3 changed files with 56 additions and 23 deletions
33
configure.in
33
configure.in
|
@ -1128,16 +1128,13 @@ AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for ful
|
||||||
])
|
])
|
||||||
if test x$have_xrandr_h_hdr = xyes; then
|
if test x$have_xrandr_h_hdr = xyes; then
|
||||||
if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
|
if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then
|
||||||
echo "-- dynamic libXrender -> $xrender_lib"
|
|
||||||
echo "-- dynamic libXrandr -> $xrandr_lib"
|
echo "-- dynamic libXrandr -> $xrandr_lib"
|
||||||
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER, "$xrender_lib")
|
|
||||||
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib")
|
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR, "$xrandr_lib")
|
||||||
definitely_enable_video_x11_xrandr=yes
|
definitely_enable_video_x11_xrandr=yes
|
||||||
else
|
else
|
||||||
AC_CHECK_LIB(Xrender, XRenderQueryExtension, have_xrender_lib=yes)
|
|
||||||
AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
|
AC_CHECK_LIB(Xrandr, XRRQueryExtension, have_xrandr_lib=yes)
|
||||||
if test x$have_xrender_lib = xyes && test x$have_xrandr_lib = xyes ; then
|
if test x$have_xrandr_lib = xyes ; then
|
||||||
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr -lXrender"
|
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrandr"
|
||||||
definitely_enable_video_x11_xrandr=yes
|
definitely_enable_video_x11_xrandr=yes
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1199,6 +1196,32 @@ AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension
|
||||||
if test x$definitely_enable_video_x11_scrnsaver = xyes; then
|
if test x$definitely_enable_video_x11_scrnsaver = xyes; then
|
||||||
AC_DEFINE(SDL_VIDEO_DRIVER_X11_SCRNSAVER)
|
AC_DEFINE(SDL_VIDEO_DRIVER_X11_SCRNSAVER)
|
||||||
fi
|
fi
|
||||||
|
AC_ARG_ENABLE(video-x11-xrender,
|
||||||
|
AC_HELP_STRING([--enable-video-x11-xrender], [enable X11 Xrender extension [[default=yes]]]),
|
||||||
|
, enable_video_x11_xrender=yes)
|
||||||
|
if test x$enable_video_x11_xrender = xyes; then
|
||||||
|
AC_CHECK_HEADER(X11/extensions/Xrender.h,
|
||||||
|
have_xrender_h_hdr=yes,
|
||||||
|
have_xrender_h_hdr=no,
|
||||||
|
[#include <X11/Xlib.h>
|
||||||
|
])
|
||||||
|
if test x$have_xrender_h_hdr = xyes; then
|
||||||
|
if test x$enable_x11_shared = xyes && test x$xrender_lib != x ; then
|
||||||
|
echo "-- dynamic libXrender -> $xrender_lib"
|
||||||
|
AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRENDER, "$xrender_lib")
|
||||||
|
definitely_enable_video_x11_xrender=yes
|
||||||
|
else
|
||||||
|
AC_CHECK_LIB(Xrender, XRenderQueryExtension, have_xrender_lib=yes)
|
||||||
|
if test x$have_xrender_lib = xyes ; then
|
||||||
|
EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lXrender"
|
||||||
|
definitely_enable_video_x11_xrender=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test x$definitely_enable_video_x11_xrender = xyes; then
|
||||||
|
AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRENDER)
|
||||||
|
fi
|
||||||
|
|
||||||
AC_ARG_ENABLE(render-x11,
|
AC_ARG_ENABLE(render-x11,
|
||||||
AC_HELP_STRING([--enable-render-x11], [enable the X11 render driver [[default=yes]]]),
|
AC_HELP_STRING([--enable-render-x11], [enable the X11 render driver [[default=yes]]]),
|
||||||
|
|
|
@ -280,6 +280,8 @@
|
||||||
#undef SDL_VIDEO_DRIVER_X11_XV
|
#undef SDL_VIDEO_DRIVER_X11_XV
|
||||||
#undef SDL_VIDEO_DRIVER_X11_XRENDER
|
#undef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
|
|
||||||
|
#undef SDL_VIDEO_RENDER_X11
|
||||||
|
|
||||||
#undef SDL_VIDEO_RENDER_D3D
|
#undef SDL_VIDEO_RENDER_D3D
|
||||||
#undef SDL_VIDEO_RENDER_GDI
|
#undef SDL_VIDEO_RENDER_GDI
|
||||||
#undef SDL_VIDEO_RENDER_OGL
|
#undef SDL_VIDEO_RENDER_OGL
|
||||||
|
|
|
@ -219,7 +219,7 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||||
if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) {
|
if(XRenderQueryExtension(data->display, &event_basep, &error_basep) == True) {
|
||||||
data->xrender_available = SDL_TRUE;
|
data->xrender_available = SDL_TRUE;
|
||||||
data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual);
|
data->xwindow_pict_fmt = XRenderFindVisualFormat(data->display, data->visual);
|
||||||
if(!xwindow_pict_fmt) {
|
if(!data->xwindow_pict_fmt) {
|
||||||
data->xrender_available = SDL_FALSE;
|
data->xrender_available = SDL_FALSE;
|
||||||
}
|
}
|
||||||
data->xwindow_pict_attr.graphics_exposures = False;
|
data->xwindow_pict_attr.graphics_exposures = False;
|
||||||
|
@ -285,8 +285,8 @@ X11_CreateRenderer(SDL_Window * window, Uint32 flags)
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
if(data->xrender_available == SDL_TRUE) {
|
if(data->xrender_available == SDL_TRUE) {
|
||||||
data->pixmap_picts[i] =
|
data->pixmap_picts[i] =
|
||||||
XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt,
|
XRenderCreatePicture(data->display, data->pixmaps[i], data->xwindow_pict_fmt,
|
||||||
data->xwindow_pict_attr_valuemask, &xwindow_pict_attr);
|
data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr);
|
||||||
if(!data->pixmap_picts[i]) {
|
if(!data->pixmap_picts[i]) {
|
||||||
data->xrender_available = SDL_FALSE;
|
data->xrender_available = SDL_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -354,7 +354,7 @@ X11_DisplayModeChanged(SDL_Renderer * renderer)
|
||||||
XFreePixmap(data->display, data->pixmaps[i]);
|
XFreePixmap(data->display, data->pixmaps[i]);
|
||||||
data->pixmaps[i] = None;
|
data->pixmaps[i] = None;
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
data->pictures[i] = None;
|
data->pixmap_picts[i] = None;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -368,10 +368,10 @@ X11_DisplayModeChanged(SDL_Renderer * renderer)
|
||||||
}
|
}
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
if(data->xrender_available == SDL_TRUE) {
|
if(data->xrender_available == SDL_TRUE) {
|
||||||
data->pictures[i] =
|
data->pixmap_picts[i] =
|
||||||
XCreatePicture(data->display, data->pixmap[i], data->xwindow_pict_fmt,
|
XRenderCreatePicture(data->display, data->pixmaps[i], data->xwindow_pict_fmt,
|
||||||
data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr);
|
data->xwindow_pict_attr_valuemask, &data->xwindow_pict_attr);
|
||||||
if(!data->pictures[i]) {
|
if(!data->pixmap_picts[i]) {
|
||||||
data->xrender_available = SDL_FALSE;
|
data->xrender_available = SDL_FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,7 +380,7 @@ X11_DisplayModeChanged(SDL_Renderer * renderer)
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
data->drawable = data->pixmaps[0];
|
data->drawable = data->pixmaps[0];
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
data->drawable_pict = data->pictures[0];
|
data->drawable_pict = data->pixmap_picts[0];
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
data->current_pixmap = 0;
|
data->current_pixmap = 0;
|
||||||
|
@ -419,7 +419,7 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
// Assume the texture is supported by Xrender
|
// Assume the texture is supported by Xrender
|
||||||
data->xrender_available = SDL_TRUE;
|
data->xrender_available = SDL_TRUE;
|
||||||
if(renderdata->xrender_available == SDL_False) {
|
if(renderdata->xrender_available == SDL_FALSE) {
|
||||||
if (texture->format != display->current_mode.format) {
|
if (texture->format != display->current_mode.format) {
|
||||||
SDL_SetError("Texture format doesn't match window format");
|
SDL_SetError("Texture format doesn't match window format");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -523,21 +523,24 @@ X11_CreateTexture(SDL_Renderer * renderer, SDL_Texture * texture)
|
||||||
x11_fmt_mask =
|
x11_fmt_mask =
|
||||||
(PictFormatDepth | PictFormatRedMask | PictFormatGreenMask
|
(PictFormatDepth | PictFormatRedMask | PictFormatGreenMask
|
||||||
| PictFormatBlueMask);
|
| PictFormatBlueMask);
|
||||||
x11_templ_fmt.depth = (data->format).BitsPerPixel;
|
Uint32 Rmask, Gmask, Bmask, Amask;
|
||||||
x11_temp_fmt.direct.redMask = (data->format).Rmask;
|
int bpp;
|
||||||
x11_temp_fmt.direct.greenMask = (data->format).Gmask;
|
SDL_PixelFormatEnumToMasks(data->format, &bpp, &Rmask, &Gmask, &Bmask, &Amask);
|
||||||
x11_temp_fmt.direct.blueMask = (data->format).Bmask;
|
x11_templ_fmt.depth = bpp;
|
||||||
x11_temp_fmt.direct.alphaMask = (data->format).Amask;
|
x11_templ_fmt.direct.redMask = Rmask;
|
||||||
|
x11_templ_fmt.direct.greenMask = Gmask;
|
||||||
|
x11_templ_fmt.direct.blueMask = Bmask;
|
||||||
|
x11_templ_fmt.direct.alphaMask = Amask;
|
||||||
/* Return one matching XRenderPictFormat */
|
/* Return one matching XRenderPictFormat */
|
||||||
data->pict_fmt =
|
data->picture_fmt =
|
||||||
XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1);
|
XRenderFindFormat(renderdata->display, x11_fmt_mask, &x11_templ_fmt, 1);
|
||||||
if(!data->pict_fmt) {
|
if(!data->picture_fmt) {
|
||||||
data->xrender_available = SDL_FALSE;
|
data->xrender_available = SDL_FALSE;
|
||||||
}
|
}
|
||||||
data->picture_attr_valuemask = CPGraphicsExposure;
|
data->picture_attr_valuemask = CPGraphicsExposure;
|
||||||
(data->picture_attr).graphics_exposures = False;
|
(data->picture_attr).graphics_exposures = False;
|
||||||
data->picture =
|
data->picture =
|
||||||
XCreatePicture(renderdata->display, data->pixmap, data->picture_fmt,
|
XRenderCreatePicture(renderdata->display, data->pixmap, data->picture_fmt,
|
||||||
data->picture_attr_valuemask, &(data->picture_attr));
|
data->picture_attr_valuemask, &(data->picture_attr));
|
||||||
if(!data->picture) {
|
if(!data->picture) {
|
||||||
data->xrender_available = SDL_FALSE;
|
data->xrender_available = SDL_FALSE;
|
||||||
|
@ -997,8 +1000,13 @@ X11_RenderFillRects(SDL_Renderer * renderer, const SDL_Rect ** rects, int count)
|
||||||
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
#ifdef SDL_VIDEO_DRIVER_X11_XRENDER
|
||||||
if(data->xrender_available == SDL_TRUE)
|
if(data->xrender_available == SDL_TRUE)
|
||||||
{
|
{
|
||||||
|
XRenderColor xrender_foreground_color;
|
||||||
|
xrender_foreground_color.red = renderer->r;
|
||||||
|
xrender_foreground_color.green = renderer->g;
|
||||||
|
xrender_foreground_color.blue = renderer->b;
|
||||||
|
xrender_foreground_color.alpha = renderer->a;
|
||||||
XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict,
|
XRenderFillRectangles(data->display, PictOpSrc, data->drawable_pict,
|
||||||
(XRenderColor)foreground, xrects, xcount);
|
&xrender_foreground_color, xrects, xcount);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue