From c12b6d70e384c769ca372e15ffd19b3e9f563662 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 5 Sep 2017 16:01:15 +0200 Subject: [PATCH 1/4] pixman: drop submodule Drop pixman submodule and support for the "internal" pixman build. pixman should be reasonably well established meanwhile so we don't need the fallback submodule any more. While being at it also drop some #ifdefs for pixman versions older than what we require in configure anyway. Signed-off-by: Gerd Hoffmann Message-id: 20170905140116.28181-2-kraxel@redhat.com --- .gitmodules | 3 --- Makefile | 10 ---------- configure | 20 ++------------------ pixman | 1 - ui/qemu-pixman.c | 4 ---- 5 files changed, 2 insertions(+), 36 deletions(-) delete mode 160000 pixman diff --git a/.gitmodules b/.gitmodules index 5b0c212622..84c54cdc49 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,9 +22,6 @@ [submodule "roms/sgabios"] path = roms/sgabios url = git://git.qemu-project.org/sgabios.git -[submodule "pixman"] - path = pixman - url = git://anongit.freedesktop.org/pixman [submodule "dtc"] path = dtc url = git://git.qemu-project.org/dtc.git diff --git a/Makefile b/Makefile index 337a1f6f9b..b53fc69a60 100644 --- a/Makefile +++ b/Makefile @@ -325,15 +325,6 @@ $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak subdir-%: $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,) -subdir-pixman: pixman/Makefile - $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C pixman V="$(V)" all,) - -pixman/Makefile: $(SRC_PATH)/pixman/configure - (cd pixman; CFLAGS="$(CFLAGS) -fPIC $(extra_cflags) $(extra_ldflags)" $(SRC_PATH)/pixman/configure $(AUTOCONF_HOST) --disable-gtk --disable-shared --enable-static) - -$(SRC_PATH)/pixman/configure: - (cd $(SRC_PATH)/pixman; autoreconf -v --install) - DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS) DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt @@ -541,7 +532,6 @@ distclean: clean rm -rf $$d || exit 1 ; \ done rm -Rf .sdk - if test -f pixman/config.log; then $(MAKE) -C pixman distclean; fi if test -f dtc/version_gen.h; then $(MAKE) $(DTC_MAKE_ARGS) clean; fi KEYMAPS=da en-gb et fr fr-ch is lt modifiers no pt-br sv \ diff --git a/configure b/configure index fd7e3a5e81..ee32ad0530 100755 --- a/configure +++ b/configure @@ -925,8 +925,6 @@ for opt do ;; --with-system-pixman) pixman="system" ;; - --without-system-pixman) pixman="internal" - ;; --without-pixman) pixman="none" ;; --disable-sdl) sdl="no" @@ -3300,8 +3298,6 @@ if test "$pixman" = ""; then pixman="none" elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then pixman="system" - else - pixman="internal" fi fi if test "$pixman" = "none"; then @@ -3318,16 +3314,8 @@ elif test "$pixman" = "system"; then pixman_cflags=$($pkg_config --cflags pixman-1) pixman_libs=$($pkg_config --libs pixman-1) else - if test ! -d ${source_path}/pixman/pixman; then - error_exit "pixman >= 0.21.8 not present. Your options:" \ - " (1) Preferred: Install the pixman devel package (any recent" \ - " distro should have packages as Xorg needs pixman too)." \ - " (2) Fetch the pixman submodule, using:" \ - " git submodule update --init pixman" - fi - mkdir -p pixman/pixman - pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" - pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" + error_exit "pixman >= 0.21.8 not present." \ + "Please install the pixman devel package." fi ########################################## @@ -6529,10 +6517,6 @@ echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak done # for target in $targets -if [ "$pixman" = "internal" ]; then - echo "config-host.h: subdir-pixman" >> $config_host_mak -fi - if [ "$dtc_internal" = "yes" ]; then echo "config-host.h: subdir-dtc" >> $config_host_mak fi diff --git a/pixman b/pixman deleted file mode 160000 index 87eea99e44..0000000000 --- a/pixman +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 87eea99e443b389c978cf37efc52788bf03a0ee0 diff --git a/ui/qemu-pixman.c b/ui/qemu-pixman.c index 6e8b83add6..6e591ab821 100644 --- a/ui/qemu-pixman.c +++ b/ui/qemu-pixman.c @@ -96,17 +96,13 @@ int qemu_pixman_get_type(int rshift, int gshift, int bshift) if (bshift == 0) { type = PIXMAN_TYPE_ARGB; } else { -#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0, 21, 8) type = PIXMAN_TYPE_RGBA; -#endif } } else if (rshift < gshift && gshift < bshift) { if (rshift == 0) { type = PIXMAN_TYPE_ABGR; } else { -#if PIXMAN_VERSION >= PIXMAN_VERSION_ENCODE(0, 16, 0) type = PIXMAN_TYPE_BGRA; -#endif } } return type; From 35c4e86cf3c57fc395891c2bb7573c435ae58ec8 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Tue, 5 Sep 2017 16:01:16 +0200 Subject: [PATCH 2/4] pixman: drop configure switches Remove pixman switches from configure, should not be needed any more, configure can figure by itself whenever pixman is needed or not. Signed-off-by: Gerd Hoffmann Message-id: 20170905140116.28181-3-kraxel@redhat.com --- configure | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/configure b/configure index ee32ad0530..7ea9cb3247 100755 --- a/configure +++ b/configure @@ -287,7 +287,6 @@ curses="" docs="" fdt="" netmap="no" -pixman="" sdl="" sdlabi="" virtfs="" @@ -923,10 +922,6 @@ for opt do # configure to be used by RPM and similar macros that set # lots of directory switches by default. ;; - --with-system-pixman) pixman="system" - ;; - --without-pixman) pixman="none" - ;; --disable-sdl) sdl="no" ;; --enable-sdl) sdl="yes" @@ -3293,24 +3288,10 @@ fi ########################################## # pixman support probe -if test "$pixman" = ""; then - if test "$want_tools" = "no" -a "$softmmu" = "no"; then - pixman="none" - elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then - pixman="system" - fi -fi -if test "$pixman" = "none"; then - if test "$want_tools" != "no" -o "$softmmu" != "no"; then - error_exit "pixman disabled but system emulation or tools build" \ - "enabled. You can turn off pixman only if you also" \ - "disable all system emulation targets and the tools" \ - "build with '--disable-tools --disable-system'." - fi +if test "$want_tools" = "no" -a "$softmmu" = "no"; then pixman_cflags= pixman_libs= -elif test "$pixman" = "system"; then - # pixman version has been checked above +elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then pixman_cflags=$($pkg_config --cflags pixman-1) pixman_libs=$($pkg_config --libs pixman-1) else @@ -5288,7 +5269,6 @@ echo "static build $static" if test "$darwin" = "yes" ; then echo "Cocoa support $cocoa" fi -echo "pixman $pixman" echo "SDL support $sdl $(echo_version $sdl $sdlversion)" echo "GTK support $gtk $(echo_version $gtk $gtk_version)" echo "GTK GL support $gtk_gl" From 1540008629bbb6a9c0826582d94ecf7a559f784c Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 6 Sep 2017 16:21:09 +0200 Subject: [PATCH 3/4] console: fix dpy_gfx_replace_surface assert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit virtio-gpu can trigger the assert added by commit "6905b93447 console: add same surface replace pre-condition" in multihead setups (where surface can be NULL for secondary displays). Allow surface being NULL. Fixes: 6905b93447a42e606dfd126b90f75f4cd3c6fe94 Signed-off-by: Gerd Hoffmann Reviewed-by: Marc-André Lureau Message-id: 20170906142109.2685-1-kraxel@redhat.com --- ui/console.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/console.c b/ui/console.c index d2d3534c49..f0292d7820 100644 --- a/ui/console.c +++ b/ui/console.c @@ -1540,7 +1540,7 @@ void dpy_gfx_replace_surface(QemuConsole *con, DisplaySurface *old_surface = con->surface; DisplayChangeListener *dcl; - assert(old_surface != surface); + assert(old_surface != surface || surface == NULL); con->surface = surface; QLIST_FOREACH(dcl, &s->listeners, next) { From 7c336f9fe53b1a500f21241841c7bf4267c7ee14 Mon Sep 17 00:00:00 2001 From: Alexander Graf Date: Tue, 29 Aug 2017 13:38:18 +0200 Subject: [PATCH 4/4] console: add question-mark escape operator Some termcaps (found using SLES11SP1) use [? sequences. According to man console_codes (http://linux.die.net/man/4/console_codes) the question mark is a nop and should simply be ignored. This patch does exactly that, rendering screen output readable when outputting guest serial consoles to the graphical console emulator. Signed-off-by: Alexander Graf Message-id: 20170829113818.42482-1-agraf@suse.de Signed-off-by: Gerd Hoffmann --- ui/console.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ui/console.c b/ui/console.c index f0292d7820..b82c27960a 100644 --- a/ui/console.c +++ b/ui/console.c @@ -880,8 +880,9 @@ static void console_putchar(QemuConsole *s, int ch) } else { if (s->nb_esc_params < MAX_ESC_PARAMS) s->nb_esc_params++; - if (ch == ';') + if (ch == ';' || ch == '?') { break; + } trace_console_putchar_csi(s->esc_params[0], s->esc_params[1], ch, s->nb_esc_params); s->state = TTY_STATE_NORM;