提交 0015ca5c 编写于 作者: D Daniel P. Berrangé 提交者: Gerd Hoffmann

ui: remove support for SDL1.2 in favour of SDL2

SDL1.2 was deprecated in the 2.12.0 release with:

  commit e52c6ba3
  Author: Daniel P. Berrange <berrange@redhat.com>
  Date:   Mon Jan 15 14:25:33 2018 +0000

    ui: deprecate use of SDL 1.2 in favour of 2.0 series

    The SDL 2.0 release was made in Aug, 2013:

      https://www.libsdl.org/release/

    That will soon be 4 + 1/2 years ago, which is enough time to consider
    the 2.0 series widely supported.

    Thus we deprecate the SDL 1.2 support, which will allow us to delete it
    in the last release of 2018. By this time, SDL 2.0 will be more than 5
    years old.
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
Reviewed-by: NMarc-André Lureau <marcandre.lureau@redhat.com>
    Message-id: 20180115142533.24585-1-berrange@redhat.com
Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>

It is thus able to be removed in the 3.1.0 release.
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
Message-Id: <20180822131554.3398-4-berrange@redhat.com>

[ kraxel: rebase ]
Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
上级 70cc0c1f
......@@ -348,7 +348,6 @@ docs=""
fdt=""
netmap="no"
sdl=""
sdlabi=""
sdl_image=""
virtfs=""
mpath=""
......@@ -577,7 +576,6 @@ query_pkg_config() {
"${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
}
pkg_config=query_pkg_config
sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
......@@ -1044,8 +1042,6 @@ for opt do
;;
--enable-sdl) sdl="yes"
;;
--with-sdlabi=*) sdlabi="$optarg"
;;
--disable-sdl-image) sdl_image="no"
;;
--enable-sdl-image) sdl_image="yes"
......@@ -1711,7 +1707,6 @@ disabled with --disable-FEATURE, default is enabled if available:
nettle nettle cryptography support
gcrypt libgcrypt cryptography support
sdl SDL UI
--with-sdlabi select preferred SDL ABI 1.2 or 2.0
sdl_image SDL Image support for icons
gtk gtk UI
vte vte support for the gtk UI
......@@ -2927,37 +2922,11 @@ fi
sdl_probe ()
{
sdl_too_old=no
if test "$sdlabi" = ""; then
if $pkg_config --exists "sdl2"; then
sdlabi=2.0
elif $pkg_config --exists "sdl"; then
sdlabi=1.2
else
sdlabi=2.0
fi
fi
if test $sdlabi = "2.0"; then
sdl_config=$sdl2_config
sdlname=sdl2
sdlconfigname=sdl2_config
elif test $sdlabi = "1.2"; then
sdlname=sdl
sdlconfigname=sdl_config
else
error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
fi
if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
sdl_config=$sdlconfigname
fi
if $pkg_config $sdlname --exists; then
sdlconfig="$pkg_config $sdlname"
if $pkg_config sdl2 --exists; then
sdlconfig="$pkg_config sdl2"
sdlversion=$($sdlconfig --modversion 2>/dev/null)
elif has ${sdl_config}; then
sdlconfig="$sdl_config"
sdlconfig="$sdl2_config"
sdlversion=$($sdlconfig --version)
else
if test "$sdl" = "yes" ; then
......@@ -2979,8 +2948,8 @@ EOF
sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug
if test "$static" = "yes" ; then
if $pkg_config $sdlname --exists; then
sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null)
if $pkg_config sdl2 --exists; then
sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null)
else
sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
fi
......@@ -2988,11 +2957,7 @@ EOF
sdl_libs=$($sdlconfig --libs 2>/dev/null)
fi
if compile_prog "$sdl_cflags" "$sdl_libs" ; then
if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
sdl_too_old=yes
else
sdl=yes
fi
sdl=yes
# static link with sdl ? (note: sdl.pc's --static --libs is broken)
if test "$sdl" = "yes" -a "$static" = "yes" ; then
......@@ -3008,7 +2973,7 @@ EOF
fi # static link
else # sdl not found
if test "$sdl" = "yes" ; then
feature_not_found "sdl" "Install SDL devel"
feature_not_found "sdl" "Install SDL2 devel"
fi
sdl=no
fi # sdl compile test
......@@ -6220,16 +6185,6 @@ echo "docker $docker"
echo "libpmem support $libpmem"
echo "libudev $libudev"
if test "$sdl_too_old" = "yes"; then
echo "-> Your SDL version is too old - please upgrade to have SDL support"
fi
if test "$sdlabi" = "1.2"; then
echo
echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in"
echo "WARNING: future releases. Please switch to using SDL 2.0"
fi
if test "$supported_cpu" = "no"; then
echo
echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
......@@ -6434,7 +6389,6 @@ if test "$have_x11" = "yes" -a "$need_x11" = "yes"; then
fi
if test "$sdl" = "yes" ; then
echo "CONFIG_SDL=m" >> $config_host_mak
echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
echo "SDL_LIBS=$sdl_libs" >> $config_host_mak
if test "$sdl_image" = "yes" ; then
......
......@@ -17,15 +17,6 @@ they were first deprecated in the 2.10.0 release.
What follows is a list of all features currently marked as
deprecated.
@section Build options
@subsection SDL 1.2
Previously QEMU has supported building against both SDL 1.2
and 2.0 series APIs. Support for the SDL 1.2 builds will be
discontinued, so maintainers should switch to using SDL 2.0,
which is the default.
@section System emulator command line arguments
@subsection -machine enforce-config-section=on|off (since 3.1)
......
......@@ -17,15 +17,10 @@ common-obj-$(call lnot,$(CONFIG_VNC)) += vnc-stubs.o
# ui-sdl module
common-obj-$(CONFIG_SDL) += sdl.mo
ifeq ($(CONFIG_SDLABI),1.2)
sdl.mo-objs := sdl.o sdl_zoom.o
endif
ifeq ($(CONFIG_SDLABI),2.0)
sdl.mo-objs := sdl2.o sdl2-input.o sdl2-2d.o
ifeq ($(CONFIG_OPENGL),y)
sdl.mo-objs += sdl2-gl.o
endif
endif
sdl.mo-cflags := $(SDL_CFLAGS)
sdl.mo-libs := $(SDL_LIBS)
......
此差异已折叠。
/*
* SDL_zoom - surface scaling
*
* Copyright (c) 2009 Citrix Systems, Inc.
*
* Derived from: SDL_rotozoom, LGPL (c) A. Schiffler from the SDL_gfx library.
* Modifications by Stefano Stabellini.
*
* This work is licensed under the terms of the GNU GPL version 2.
* See the COPYING file in the top-level directory.
*
*/
#include "qemu/osdep.h"
#include "sdl_zoom.h"
static void sdl_zoom_rgb16(SDL_Surface *src, SDL_Surface *dst, int smooth,
SDL_Rect *dst_rect);
static void sdl_zoom_rgb32(SDL_Surface *src, SDL_Surface *dst, int smooth,
SDL_Rect *dst_rect);
#define BPP 32
#include "sdl_zoom_template.h"
#undef BPP
#define BPP 16
#include "sdl_zoom_template.h"
#undef BPP
int sdl_zoom_blit(SDL_Surface *src_sfc, SDL_Surface *dst_sfc, int smooth,
SDL_Rect *in_rect)
{
SDL_Rect zoom, src_rect;
int extra;
/* Grow the size of the modified rectangle to avoid edge artefacts */
src_rect.x = (in_rect->x > 0) ? (in_rect->x - 1) : 0;
src_rect.y = (in_rect->y > 0) ? (in_rect->y - 1) : 0;
src_rect.w = in_rect->w + 1;
if (src_rect.x + src_rect.w > src_sfc->w)
src_rect.w = src_sfc->w - src_rect.x;
src_rect.h = in_rect->h + 1;
if (src_rect.y + src_rect.h > src_sfc->h)
src_rect.h = src_sfc->h - src_rect.y;
/* (x,y) : round down */
zoom.x = (int)(((float)(src_rect.x * dst_sfc->w)) / (float)(src_sfc->w));
zoom.y = (int)(((float)(src_rect.y * dst_sfc->h)) / (float)(src_sfc->h));
/* (w,h) : round up */
zoom.w = (int)( ((double)((src_rect.w * dst_sfc->w) + (src_sfc->w - 1))) /
(double)(src_sfc->w));
zoom.h = (int)( ((double)((src_rect.h * dst_sfc->h) + (src_sfc->h - 1))) /
(double)(src_sfc->h));
/* Account for any (x,y) rounding by adding one-source-pixel's worth
* of destination pixels and then edge checking.
*/
extra = ((dst_sfc->w-1) / src_sfc->w) + 1;
if ((zoom.x + zoom.w) < (dst_sfc->w - extra))
zoom.w += extra;
else
zoom.w = dst_sfc->w - zoom.x;
extra = ((dst_sfc->h-1) / src_sfc->h) + 1;
if ((zoom.y + zoom.h) < (dst_sfc->h - extra))
zoom.h += extra;
else
zoom.h = dst_sfc->h - zoom.y;
/* The rectangle (zoom.x, zoom.y, zoom.w, zoom.h) is the area on the
* destination surface that needs to be updated.
*/
if (src_sfc->format->BitsPerPixel == 32)
sdl_zoom_rgb32(src_sfc, dst_sfc, smooth, &zoom);
else if (src_sfc->format->BitsPerPixel == 16)
sdl_zoom_rgb16(src_sfc, dst_sfc, smooth, &zoom);
else {
fprintf(stderr, "pixel format not supported\n");
return -1;
}
/* Return the rectangle of the update to the caller */
*in_rect = zoom;
return 0;
}
/*
* SDL_zoom - surface scaling
*
* Copyright (c) 2009 Citrix Systems, Inc.
*
* Derived from: SDL_rotozoom, LGPL (c) A. Schiffler from the SDL_gfx library.
* Modifications by Stefano Stabellini.
*
* This work is licensed under the terms of the GNU GPL version 2.
* See the COPYING file in the top-level directory.
*
*/
#ifndef SDL_ZOOM_H
#define SDL_ZOOM_H
#include <SDL.h>
#define SMOOTHING_OFF 0
#define SMOOTHING_ON 1
int sdl_zoom_blit(SDL_Surface *src_sfc, SDL_Surface *dst_sfc,
int smooth, SDL_Rect *src_rect);
#endif /* SDL_ZOOM_H */
/*
* SDL_zoom_template - surface scaling
*
* Copyright (c) 2009 Citrix Systems, Inc.
*
* Derived from: SDL_rotozoom, LGPL (c) A. Schiffler from the SDL_gfx library.
* Modifications by Stefano Stabellini.
*
* This work is licensed under the terms of the GNU GPL version 2.
* See the COPYING file in the top-level directory.
*
*/
#if BPP == 16
#define SDL_TYPE Uint16
#elif BPP == 32
#define SDL_TYPE Uint32
#else
#error unsupport depth
#endif
/*
* Simple helper functions to make the code looks nicer
*
* Assume spf = source SDL_PixelFormat
* dpf = dest SDL_PixelFormat
*
*/
#define getRed(color) (((color) & spf->Rmask) >> spf->Rshift)
#define getGreen(color) (((color) & spf->Gmask) >> spf->Gshift)
#define getBlue(color) (((color) & spf->Bmask) >> spf->Bshift)
#define getAlpha(color) (((color) & spf->Amask) >> spf->Ashift)
#define setRed(r, pcolor) do { \
*pcolor = ((*pcolor) & (~(dpf->Rmask))) + \
(((r) & (dpf->Rmask >> dpf->Rshift)) << dpf->Rshift); \
} while (0)
#define setGreen(g, pcolor) do { \
*pcolor = ((*pcolor) & (~(dpf->Gmask))) + \
(((g) & (dpf->Gmask >> dpf->Gshift)) << dpf->Gshift); \
} while (0)
#define setBlue(b, pcolor) do { \
*pcolor = ((*pcolor) & (~(dpf->Bmask))) + \
(((b) & (dpf->Bmask >> dpf->Bshift)) << dpf->Bshift); \
} while (0)
#define setAlpha(a, pcolor) do { \
*pcolor = ((*pcolor) & (~(dpf->Amask))) + \
(((a) & (dpf->Amask >> dpf->Ashift)) << dpf->Ashift); \
} while (0)
static void glue(sdl_zoom_rgb, BPP)(SDL_Surface *src, SDL_Surface *dst, int smooth,
SDL_Rect *dst_rect)
{
int x, y, sx, sy, *sax, *say, *csax, *csay, csx, csy, ex, ey, t1, t2, sstep, sstep_jump;
SDL_TYPE *c00, *c01, *c10, *c11, *sp, *csp, *dp;
int d_gap;
SDL_PixelFormat *spf = src->format;
SDL_PixelFormat *dpf = dst->format;
if (smooth) {
/* For interpolation: assume source dimension is one pixel.
* Smaller here to avoid overflow on right and bottom edge.
*/
sx = (int) (65536.0 * (float) (src->w - 1) / (float) dst->w);
sy = (int) (65536.0 * (float) (src->h - 1) / (float) dst->h);
} else {
sx = (int) (65536.0 * (float) src->w / (float) dst->w);
sy = (int) (65536.0 * (float) src->h / (float) dst->h);
}
sax = g_new(int, dst->w + 1);
say = g_new(int, dst->h + 1);
sp = csp = (SDL_TYPE *) src->pixels;
dp = (SDL_TYPE *) (dst->pixels + dst_rect->y * dst->pitch +
dst_rect->x * dst->format->BytesPerPixel);
csx = 0;
csax = sax;
for (x = 0; x <= dst->w; x++) {
*csax = csx;
csax++;
csx &= 0xffff;
csx += sx;
}
csy = 0;
csay = say;
for (y = 0; y <= dst->h; y++) {
*csay = csy;
csay++;
csy &= 0xffff;
csy += sy;
}
d_gap = dst->pitch - dst_rect->w * dst->format->BytesPerPixel;
if (smooth) {
csay = say;
for (y = 0; y < dst_rect->y; y++) {
csay++;
sstep = (*csay >> 16) * src->pitch;
csp = (SDL_TYPE *) ((Uint8 *) csp + sstep);
}
/* Calculate sstep_jump */
csax = sax;
sstep_jump = 0;
for (x = 0; x < dst_rect->x; x++) {
csax++;
sstep = (*csax >> 16);
sstep_jump += sstep;
}
for (y = 0; y < dst_rect->h ; y++) {
/* Setup colour source pointers */
c00 = csp + sstep_jump;
c01 = c00 + 1;
c10 = (SDL_TYPE *) ((Uint8 *) csp + src->pitch) + sstep_jump;
c11 = c10 + 1;
csax = sax + dst_rect->x;
for (x = 0; x < dst_rect->w; x++) {
/* Interpolate colours */
ex = (*csax & 0xffff);
ey = (*csay & 0xffff);
t1 = ((((getRed(*c01) - getRed(*c00)) * ex) >> 16) +
getRed(*c00)) & (dpf->Rmask >> dpf->Rshift);
t2 = ((((getRed(*c11) - getRed(*c10)) * ex) >> 16) +
getRed(*c10)) & (dpf->Rmask >> dpf->Rshift);
setRed((((t2 - t1) * ey) >> 16) + t1, dp);
t1 = ((((getGreen(*c01) - getGreen(*c00)) * ex) >> 16) +
getGreen(*c00)) & (dpf->Gmask >> dpf->Gshift);
t2 = ((((getGreen(*c11) - getGreen(*c10)) * ex) >> 16) +
getGreen(*c10)) & (dpf->Gmask >> dpf->Gshift);
setGreen((((t2 - t1) * ey) >> 16) + t1, dp);
t1 = ((((getBlue(*c01) - getBlue(*c00)) * ex) >> 16) +
getBlue(*c00)) & (dpf->Bmask >> dpf->Bshift);
t2 = ((((getBlue(*c11) - getBlue(*c10)) * ex) >> 16) +
getBlue(*c10)) & (dpf->Bmask >> dpf->Bshift);
setBlue((((t2 - t1) * ey) >> 16) + t1, dp);
t1 = ((((getAlpha(*c01) - getAlpha(*c00)) * ex) >> 16) +
getAlpha(*c00)) & (dpf->Amask >> dpf->Ashift);
t2 = ((((getAlpha(*c11) - getAlpha(*c10)) * ex) >> 16) +
getAlpha(*c10)) & (dpf->Amask >> dpf->Ashift);
setAlpha((((t2 - t1) * ey) >> 16) + t1, dp);
/* Advance source pointers */
csax++;
sstep = (*csax >> 16);
c00 += sstep;
c01 += sstep;
c10 += sstep;
c11 += sstep;
/* Advance destination pointer */
dp++;
}
/* Advance source pointer */
csay++;
csp = (SDL_TYPE *) ((Uint8 *) csp + (*csay >> 16) * src->pitch);
/* Advance destination pointers */
dp = (SDL_TYPE *) ((Uint8 *) dp + d_gap);
}
} else {
csay = say;
for (y = 0; y < dst_rect->y; y++) {
csay++;
sstep = (*csay >> 16) * src->pitch;
csp = (SDL_TYPE *) ((Uint8 *) csp + sstep);
}
/* Calculate sstep_jump */
csax = sax;
sstep_jump = 0;
for (x = 0; x < dst_rect->x; x++) {
csax++;
sstep = (*csax >> 16);
sstep_jump += sstep;
}
for (y = 0 ; y < dst_rect->h ; y++) {
sp = csp + sstep_jump;
csax = sax + dst_rect->x;
for (x = 0; x < dst_rect->w; x++) {
/* Draw */
*dp = *sp;
/* Advance source pointers */
csax++;
sstep = (*csax >> 16);
sp += sstep;
/* Advance destination pointer */
dp++;
}
/* Advance source pointers */
csay++;
sstep = (*csay >> 16) * src->pitch;
csp = (SDL_TYPE *) ((Uint8 *) csp + sstep);
/* Advance destination pointer */
dp = (SDL_TYPE *) ((Uint8 *) dp + d_gap);
}
}
g_free(sax);
g_free(say);
}
#undef SDL_TYPE
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册