From nobody Fri Nov 7 00:41:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 154516265420647.403599391344414; Tue, 18 Dec 2018 11:50:54 -0800 (PST) Received: from localhost ([::1]:54170 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGoh-0008K7-Fv for importer@patchew.org; Tue, 18 Dec 2018 09:57:51 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGKc-00072M-9U for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZGKS-0008F2-66 for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:46 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42916) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gZGKR-0008Ec-K0 for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:36 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A183E37EEF for ; Tue, 18 Dec 2018 14:26:34 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-112-58.ams2.redhat.com [10.36.112.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id A234860C46; Tue, 18 Dec 2018 14:26:32 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Tue, 18 Dec 2018 14:26:27 +0000 Message-Id: <20181218142629.15943-2-berrange@redhat.com> In-Reply-To: <20181218142629.15943-1-berrange@redhat.com> References: <20181218142629.15943-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Tue, 18 Dec 2018 14:26:34 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 1/3] ui: install logo icons to $prefix/share/icons X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" QEMU currently installs loogs to $prefix/share/qemu/ which means no GUI toolkit or applications can find them by default. The accepted standards for desktop applications declare that application logos / icons should be installed under $prefix/share/icons, so use this directory location. Pre-rendered icons are provided at the standard sizes expected for GUI applications, along with the scalable SVG, to ensure maximum portability. Signed-off-by: Daniel P. Berrang=C3=A9 --- Makefile | 13 ++++++++++++- configure | 2 ++ ui/gtk.c | 17 +++++------------ .../qemu_logo_no_text.svg =3D> ui/icons/qemu.svg | 0 ui/icons/qemu_128x128.png | Bin 0 -> 7761 bytes ui/icons/qemu_16x16.png | Bin 0 -> 751 bytes ui/icons/qemu_24x24.png | Bin 0 -> 1167 bytes ui/icons/qemu_256x256.png | Bin 0 -> 16216 bytes .../qemu-icon.bmp =3D> ui/icons/qemu_32x32.bmp | Bin ui/icons/qemu_32x32.png | Bin 0 -> 1656 bytes ui/icons/qemu_48x48.png | Bin 0 -> 2604 bytes ui/icons/qemu_512x512.png | Bin 0 -> 34609 bytes ui/icons/qemu_64x64.png | Bin 0 -> 3588 bytes ui/sdl2.c | 16 ++++++---------- 14 files changed, 25 insertions(+), 23 deletions(-) rename pc-bios/qemu_logo_no_text.svg =3D> ui/icons/qemu.svg (100%) create mode 100644 ui/icons/qemu_128x128.png create mode 100644 ui/icons/qemu_16x16.png create mode 100644 ui/icons/qemu_24x24.png create mode 100644 ui/icons/qemu_256x256.png rename pc-bios/qemu-icon.bmp =3D> ui/icons/qemu_32x32.bmp (100%) create mode 100644 ui/icons/qemu_32x32.png create mode 100644 ui/icons/qemu_48x48.png create mode 100644 ui/icons/qemu_512x512.png create mode 100644 ui/icons/qemu_64x64.png diff --git a/Makefile b/Makefile index c8b9efdad4..300d97cd10 100644 --- a/Makefile +++ b/Makefile @@ -663,7 +663,6 @@ pxe-pcnet.rom pxe-rtl8139.rom pxe-virtio.rom \ efi-e1000.rom efi-eepro100.rom efi-ne2k_pci.rom \ efi-pcnet.rom efi-rtl8139.rom efi-virtio.rom \ efi-e1000e.rom efi-vmxnet3.rom \ -qemu-icon.bmp qemu_logo_no_text.svg \ bamboo.dtb canyonlands.dtb petalogix-s3adsp1800.dtb petalogix-ml605.dtb \ multiboot.bin linuxboot.bin linuxboot_dma.bin kvmvapic.bin \ s390-ccw.img s390-netboot.img \ @@ -716,6 +715,7 @@ ifneq (,$(findstring qemu-ga,$(TOOLS))) endif endif =20 +ICON_SIZES=3D16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512 =20 install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-local= statedir ifneq ($(TOOLS),) @@ -737,6 +737,17 @@ ifneq ($(BLOBS),) $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \ done endif + for s in $(ICON_SIZES); do \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_$${s}.png \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps/qemu.png"; \ + done; \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/32x32/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu_32x32.bmp \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/32x32/apps/qemu.bmp"; \ + mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps"; \ + $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu.svg \ + "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps/qemu.svg" ifdef CONFIG_GTK $(MAKE) -C po $@ endif diff --git a/configure b/configure index 224d3071ac..c47a7be960 100755 --- a/configure +++ b/configure @@ -5738,6 +5738,7 @@ qemu_confdir=3D$sysconfdir$confsuffix qemu_moddir=3D$libdir$confsuffix qemu_datadir=3D$datadir$confsuffix qemu_localedir=3D"$datadir/locale" +qemu_icondir=3D"$datadir/icons" =20 # We can only support ivshmem if we have eventfd if [ "$eventfd" =3D "yes" ]; then @@ -6204,6 +6205,7 @@ if test "$mingw32" =3D "no" ; then fi echo "qemu_helperdir=3D$libexecdir" >> $config_host_mak echo "qemu_localedir=3D$qemu_localedir" >> $config_host_mak +echo "qemu_icondir=3D$qemu_icondir" >> $config_host_mak echo "libs_softmmu=3D$libs_softmmu" >> $config_host_mak echo "GIT=3D$git" >> $config_host_mak echo "GIT_SUBMODULES=3D$git_submodules" >> $config_host_mak diff --git a/ui/gtk.c b/ui/gtk.c index 579990b865..ec63befa16 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2214,8 +2214,8 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) VirtualConsole *vc; =20 GtkDisplayState *s =3D g_malloc0(sizeof(*s)); - char *filename; GdkDisplay *window_display; + GtkIconTheme *theme; =20 if (!gtkinit) { fprintf(stderr, "gtk initialization failed\n"); @@ -2224,6 +2224,9 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) assert(opts->type =3D=3D DISPLAY_TYPE_GTK); s->opts =3D opts; =20 + theme =3D gtk_icon_theme_get_default(); + gtk_icon_theme_prepend_search_path(theme, CONFIG_QEMU_ICONDIR); + s->window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL); s->vbox =3D gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); s->notebook =3D gtk_notebook_new(); @@ -2248,17 +2251,7 @@ static void gtk_display_init(DisplayState *ds, Displ= ayOptions *opts) qemu_add_mouse_mode_change_notifier(&s->mouse_mode_notifier); qemu_add_vm_change_state_handler(gd_change_runstate, s); =20 - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, "qemu_logo_no_text.sv= g"); - if (filename) { - GError *error =3D NULL; - GdkPixbuf *pixbuf =3D gdk_pixbuf_new_from_file(filename, &error); - if (pixbuf) { - gtk_window_set_icon(GTK_WINDOW(s->window), pixbuf); - } else { - g_error_free(error); - } - g_free(filename); - } + gtk_window_set_icon_name(GTK_WINDOW(s->window), "qemu"); =20 gd_create_menus(s); =20 diff --git a/pc-bios/qemu_logo_no_text.svg b/ui/icons/qemu.svg similarity index 100% rename from pc-bios/qemu_logo_no_text.svg rename to ui/icons/qemu.svg diff --git a/ui/icons/qemu_128x128.png b/ui/icons/qemu_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..b4514a57a9e247128a7bf836b81= fe778dc325ebb GIT binary patch literal 7761 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 hc>EIB8>->x$RJuVrmVdv0_nBwr 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 weG|k@lkDd$b-T(jq literal 0 HcmV?d00001 diff --git a/pc-bios/qemu-icon.bmp b/ui/icons/qemu_32x32.bmp similarity index 100% rename from pc-bios/qemu-icon.bmp rename to ui/icons/qemu_32x32.bmp diff --git a/ui/icons/qemu_32x32.png b/ui/icons/qemu_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..f40d58e9f242a16172e56eefad7= 6e32d28cf1e6f GIT binary patch literal 1656 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 KMNUMnLSTZgq|ovJ literal 0 HcmV?d00001 diff --git a/ui/sdl2.c b/ui/sdl2.c index a10b6e3a08..4c0d5db473 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -762,7 +762,6 @@ static void sdl2_display_early_init(DisplayOptions *o) static void sdl2_display_init(DisplayState *ds, DisplayOptions *o) { uint8_t data =3D 0; - char *filename; int i; SDL_SysWMinfo info; =20 @@ -837,15 +836,12 @@ static void sdl2_display_init(DisplayState *ds, Displ= ayOptions *o) } =20 /* Load a 32x32x4 image. White pixels are transparent. */ - filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, "qemu-icon.bmp"); - if (filename) { - SDL_Surface *image =3D SDL_LoadBMP(filename); - if (image) { - uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); - SDL_SetColorKey(image, SDL_TRUE, colorkey); - SDL_SetWindowIcon(sdl2_console[0].real_window, image); - } - g_free(filename); + SDL_Surface *image =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR + "/hicolor/32x32/apps/qemu.bmp"); + if (image) { + uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); + SDL_SetColorKey(image, SDL_TRUE, colorkey); + SDL_SetWindowIcon(sdl2_console[0].real_window, image); } =20 gui_grab =3D 0; --=20 2.19.2 From nobody Fri Nov 7 00:41:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1545162721615590.9953491049207; Tue, 18 Dec 2018 11:52:01 -0800 (PST) Received: from localhost ([::1]:54067 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGcT-0006Ap-3Q for importer@patchew.org; Tue, 18 Dec 2018 09:45:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGKV-0006uo-3N for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZGKT-0008Fb-9v for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:39 -0500 Received: from mx1.redhat.com ([209.132.183.28]:51898) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gZGKS-0008F8-Vv for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:37 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 2089CC067C06 for ; Tue, 18 Dec 2018 14:26:36 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-112-58.ams2.redhat.com [10.36.112.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id DE82A67168; Tue, 18 Dec 2018 14:26:34 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Tue, 18 Dec 2018 14:26:28 +0000 Message-Id: <20181218142629.15943-3-berrange@redhat.com> In-Reply-To: <20181218142629.15943-1-berrange@redhat.com> References: <20181218142629.15943-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 18 Dec 2018 14:26:36 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 2/3] ui: fix icon display for GTK frontend under GNOME Shell with Wayland X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" The icon associated with a GtkWindow is just a hint to window managers and not all of them will honour it. Some will instead want to show the icon listed by the .desktop file. The desktop file is located based on the application ID, which is set using g_set_prgname. QEMU has not historically provided a desktop file or set its app ID, so it got a broken icon in GNOME shell, which is now fixed. Signed-off-by: Daniel P. Berrang=C3=A9 --- Makefile | 3 +++ configure | 2 ++ ui/gtk.c | 1 + ui/qemu.desktop | 8 ++++++++ 4 files changed, 14 insertions(+) create mode 100644 ui/qemu.desktop diff --git a/Makefile b/Makefile index 300d97cd10..5f896cd4fd 100644 --- a/Makefile +++ b/Makefile @@ -748,6 +748,9 @@ endif mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps"; \ $(INSTALL_DATA) $(SRC_PATH)/ui/icons/qemu.svg \ "$(DESTDIR)/$(qemu_icondir)/hicolor/scalable/apps/qemu.svg" + mkdir -p "$(DESTDIR)/$(qemu_desktopdir)" + $(INSTALL_DATA) $(SRC_PATH)/ui/qemu.desktop \ + "$(DESTDIR)/$(qemu_desktopdir)/qemu.desktop" ifdef CONFIG_GTK $(MAKE) -C po $@ endif diff --git a/configure b/configure index c47a7be960..96c948166c 100755 --- a/configure +++ b/configure @@ -5739,6 +5739,7 @@ qemu_moddir=3D$libdir$confsuffix qemu_datadir=3D$datadir$confsuffix qemu_localedir=3D"$datadir/locale" qemu_icondir=3D"$datadir/icons" +qemu_desktopdir=3D"$datadir/applications" =20 # We can only support ivshmem if we have eventfd if [ "$eventfd" =3D "yes" ]; then @@ -6206,6 +6207,7 @@ fi echo "qemu_helperdir=3D$libexecdir" >> $config_host_mak echo "qemu_localedir=3D$qemu_localedir" >> $config_host_mak echo "qemu_icondir=3D$qemu_icondir" >> $config_host_mak +echo "qemu_desktopdir=3D$qemu_desktopdir" >> $config_host_mak echo "libs_softmmu=3D$libs_softmmu" >> $config_host_mak echo "GIT=3D$git" >> $config_host_mak echo "GIT_SUBMODULES=3D$git_submodules" >> $config_host_mak diff --git a/ui/gtk.c b/ui/gtk.c index ec63befa16..87c0e33d2a 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2226,6 +2226,7 @@ static void gtk_display_init(DisplayState *ds, Displa= yOptions *opts) =20 theme =3D gtk_icon_theme_get_default(); gtk_icon_theme_prepend_search_path(theme, CONFIG_QEMU_ICONDIR); + g_set_prgname("qemu"); =20 s->window =3D gtk_window_new(GTK_WINDOW_TOPLEVEL); s->vbox =3D gtk_box_new(GTK_ORIENTATION_VERTICAL, 0); diff --git a/ui/qemu.desktop b/ui/qemu.desktop new file mode 100644 index 0000000000..20f09f56be --- /dev/null +++ b/ui/qemu.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Version=3D1.0 +Name=3DQEMU +Icon=3Dqemu +Type=3DApplication +Terminal=3Dfalse +Keywords=3DEmulators;Virtualization;KVM; +NoDisplay=3Dtrue --=20 2.19.2 From nobody Fri Nov 7 00:41:11 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1545152624536287.97359683699074; Tue, 18 Dec 2018 09:03:44 -0800 (PST) Received: from localhost ([::1]:53960 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGOW-0001bH-Sl for importer@patchew.org; Tue, 18 Dec 2018 09:30:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35028) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZGKX-0006x5-9d for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZGKV-0008GP-3T for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:41 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39706) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gZGKU-0008Fv-OI for qemu-devel@nongnu.org; Tue, 18 Dec 2018 09:26:39 -0500 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B707E58E29 for ; Tue, 18 Dec 2018 14:26:37 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-112-58.ams2.redhat.com [10.36.112.58]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8862060C46; Tue, 18 Dec 2018 14:26:36 +0000 (UTC) From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Date: Tue, 18 Dec 2018 14:26:29 +0000 Message-Id: <20181218142629.15943-4-berrange@redhat.com> In-Reply-To: <20181218142629.15943-1-berrange@redhat.com> References: <20181218142629.15943-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 18 Dec 2018 14:26:37 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 3/3] sdl: add support for high resolution window icon X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Modern desktop environments can render icons at very large sizes, especially with high DPI screens. Providing a 32x32 pixel bitmap is nowhere near sufficient anymore. When displayed in GNOME shell the QEMU icon looks awful, having been scaled up to at least x4 its base size. This is compounded by the fact that the BMP file doesn't do transparency, so while we've removed white pixels, we still have anti-aliased nearly-white pixels which make the logo look appalling on black backgrounds. Loading a high resolution PNG icon addresses both problems, but requires use of the extra SDL2_image library. Signed-off-by: Daniel P. Berrang=C3=A9 --- configure | 23 +++++++++++++++++++++++ include/ui/sdl2.h | 3 +++ ui/sdl2.c | 14 ++++++++++---- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 96c948166c..1ed3643ecb 100755 --- a/configure +++ b/configure @@ -346,6 +346,7 @@ fdt=3D"" netmap=3D"no" sdl=3D"" sdlabi=3D"" +sdl_image=3D"" virtfs=3D"" mpath=3D"" vnc=3D"yes" @@ -2962,6 +2963,7 @@ sdl_probe () feature_not_found "sdl" "Install SDL2-devel" fi sdl=3Dno + sdl_image=3Dno # no need to do the rest return fi @@ -2992,6 +2994,21 @@ EOF sdl=3Dyes fi =20 + if $pkg_config SDL2_image --exists; then + if test "$static" =3D "yes"; then + sdl_image_libs=3D$($pkg_config SDL2_image --libs --static 2>/dev/null) + else + sdl_image_libs=3D$($pkg_config SDL2_image --libs 2>/dev/null) + fi + sdl_image_cflags=3D$($pkg_config SDL2_image --cflags 2>/dev/null) + sdl_image=3Dyes + + sdl_cflags=3D"$sdl_cflags $sdl_image_cflags" + sdl_libs=3D"$sdl_libs $sdl_image_libs" + else + sdl_image=3Dno + fi + # static link with sdl ? (note: sdl.pc's --static --libs is broken) if test "$sdl" =3D "yes" -a "$static" =3D "yes" ; then if test $? =3D 0 && echo $sdl_libs | grep -- -laa > /dev/null; then @@ -3002,6 +3019,7 @@ EOF : else sdl=3Dno + sdl_image=3Dno fi fi # static link else # sdl not found @@ -3009,6 +3027,7 @@ EOF feature_not_found "sdl" "Install SDL devel" fi sdl=3Dno + sdl_image=3Dno fi # sdl compile test } =20 @@ -6022,6 +6041,7 @@ if test "$darwin" =3D "yes" ; then echo "Cocoa support $cocoa" fi echo "SDL support $sdl $(echo_version $sdl $sdlversion)" +echo "SDL image support $sdl_image" echo "GTK support $gtk $(echo_version $gtk $gtk_version)" echo "GTK GL support $gtk_gl" echo "VTE support $vte $(echo_version $vte $vteversion)" @@ -6362,6 +6382,9 @@ if test "$sdl" =3D "yes" ; then echo "CONFIG_SDLABI=3D$sdlabi" >> $config_host_mak echo "SDL_CFLAGS=3D$sdl_cflags" >> $config_host_mak echo "SDL_LIBS=3D$sdl_libs" >> $config_host_mak + if test "$sdl_image" =3D "yes" ; then + echo "CONFIG_SDL_IMAGE=3Dy" >> $config_host_mak + fi fi if test "$cocoa" =3D "yes" ; then echo "CONFIG_COCOA=3Dy" >> $config_host_mak diff --git a/include/ui/sdl2.h b/include/ui/sdl2.h index f43eecdbd6..f6db642b65 100644 --- a/include/ui/sdl2.h +++ b/include/ui/sdl2.h @@ -6,6 +6,9 @@ =20 #include #include +#ifdef CONFIG_SDL_IMAGE +# include +#endif =20 #ifdef CONFIG_OPENGL # include "ui/egl-helpers.h" diff --git a/ui/sdl2.c b/ui/sdl2.c index 4c0d5db473..c24b99af94 100644 --- a/ui/sdl2.c +++ b/ui/sdl2.c @@ -764,6 +764,7 @@ static void sdl2_display_init(DisplayState *ds, Display= Options *o) uint8_t data =3D 0; int i; SDL_SysWMinfo info; + SDL_Surface *icon =3D NULL; =20 assert(o->type =3D=3D DISPLAY_TYPE_SDL); =20 @@ -835,13 +836,18 @@ static void sdl2_display_init(DisplayState *ds, Displ= ayOptions *o) #endif } =20 +#ifdef CONFIG_SDL_IMAGE + icon =3D IMG_Load(CONFIG_QEMU_ICONDIR "/hicolor/128x128/apps/qemu.png"= ); +#else /* Load a 32x32x4 image. White pixels are transparent. */ - SDL_Surface *image =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR - "/hicolor/32x32/apps/qemu.bmp"); - if (image) { + icon =3D SDL_LoadBMP(CONFIG_QEMU_ICONDIR "/hicolor/32x32/apps/qemu.bmp= "); +#endif + if (icon) { +#ifndef CONFIG_SDL_IMAGE uint32_t colorkey =3D SDL_MapRGB(image->format, 255, 255, 255); SDL_SetColorKey(image, SDL_TRUE, colorkey); - SDL_SetWindowIcon(sdl2_console[0].real_window, image); +#endif + SDL_SetWindowIcon(sdl2_console[0].real_window, icon); } =20 gui_grab =3D 0; --=20 2.19.2