From: Akihiko Odaki <akihiko.odaki@gmail.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"Jason Wang" <jasowang@redhat.com>,
qemu-devel@nongnu.org, Programmingkid <programmingkidx@gmail.com>,
"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Daniel P . Berrangé" <berrange@redhat.com>,
"Akihiko Odaki" <akihiko.odaki@gmail.com>
Subject: [PATCH v4 3/4] ui/icons: Use bundle mechanism
Date: Wed, 15 Jun 2022 06:07:45 +0900 [thread overview]
Message-ID: <20220614210746.78911-4-akihiko.odaki@gmail.com> (raw)
In-Reply-To: <20220614210746.78911-1-akihiko.odaki@gmail.com>
Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
---
meson.build | 2 +-
ui/cocoa.m | 29 ++++++++++++++++-------------
ui/gtk.c | 6 +++++-
ui/icons/meson.build | 36 ++++++++++++++++++++++++++++--------
ui/sdl2.c | 18 +++++++++++-------
5 files changed, 61 insertions(+), 30 deletions(-)
diff --git a/meson.build b/meson.build
index c573815813f..e7b385eaf34 100644
--- a/meson.build
+++ b/meson.build
@@ -1687,7 +1687,7 @@ config_host_data.set_quoted('CONFIG_QEMU_BUNDLE_DATADIR', qemu_datadir)
config_host_data.set_quoted('CONFIG_QEMU_DESKTOPDIR', get_option('prefix') / qemu_desktopdir)
config_host_data.set_quoted('CONFIG_QEMU_FIRMWAREPATH', get_option('prefix') / get_option('qemu_firmwarepath'))
config_host_data.set_quoted('CONFIG_QEMU_HELPERDIR', get_option('prefix') / get_option('libexecdir'))
-config_host_data.set_quoted('CONFIG_QEMU_ICONDIR', get_option('prefix') / qemu_icondir)
+config_host_data.set_quoted('CONFIG_QEMU_BUNDLE_ICONDIR', qemu_icondir)
config_host_data.set_quoted('CONFIG_QEMU_LOCALEDIR', get_option('prefix') / get_option('localedir'))
config_host_data.set_quoted('CONFIG_QEMU_LOCALSTATEDIR', get_option('prefix') / get_option('localstatedir'))
config_host_data.set_quoted('CONFIG_QEMU_MODDIR', get_option('prefix') / qemu_moddir)
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 84c84e98fc5..bd8a3211d3b 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -1562,21 +1562,24 @@ - (BOOL)verifyQuit
- (IBAction) do_about_menu_item: (id) sender
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- char *icon_path_c = get_relocated_path(CONFIG_QEMU_ICONDIR "/hicolor/512x512/apps/qemu.png");
- NSString *icon_path = [NSString stringWithUTF8String:icon_path_c];
- g_free(icon_path_c);
- NSImage *icon = [[NSImage alloc] initWithContentsOfFile:icon_path];
+ char *icon_path_c = find_bundle(CONFIG_QEMU_BUNDLE_ICONDIR "/hicolor/512x512/apps/qemu.png");
NSString *version = @"QEMU emulator version " QEMU_FULL_VERSION;
NSString *copyright = @QEMU_COPYRIGHT;
- NSDictionary *options;
- if (icon) {
- options = @{
- NSAboutPanelOptionApplicationIcon : icon,
- NSAboutPanelOptionApplicationVersion : version,
- @"Copyright" : copyright,
- };
- [icon release];
- } else {
+ NSDictionary *options = nil;
+ if (icon_path_c) {
+ NSString *icon_path = [NSString stringWithUTF8String:icon_path_c];
+ g_free(icon_path_c);
+ NSImage *icon = [[NSImage alloc] initWithContentsOfFile:icon_path];
+ if (icon) {
+ options = @{
+ NSAboutPanelOptionApplicationIcon : icon,
+ NSAboutPanelOptionApplicationVersion : version,
+ @"Copyright" : copyright,
+ };
+ [icon release];
+ }
+ }
+ if (!options) {
options = @{
NSAboutPanelOptionApplicationVersion : version,
@"Copyright" : copyright,
diff --git a/ui/gtk.c b/ui/gtk.c
index 2a791dd2aa0..8f7afe795f4 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -2321,7 +2321,11 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts)
s->opts = opts;
theme = gtk_icon_theme_get_default();
- dir = get_relocated_path(CONFIG_QEMU_ICONDIR);
+ dir = find_bundle(CONFIG_QEMU_BUNDLE_ICONDIR);
+ if (dir) {
+ gtk_icon_theme_prepend_search_path(theme, dir);
+ g_free(dir);
+ }
gtk_icon_theme_prepend_search_path(theme, dir);
g_free(dir);
g_set_prgname("qemu");
diff --git a/ui/icons/meson.build b/ui/icons/meson.build
index 12c52080ebd..23292773074 100644
--- a/ui/icons/meson.build
+++ b/ui/icons/meson.build
@@ -1,13 +1,33 @@
+icons = [
+ {
+ 'source': 'qemu_32x32.bmp',
+ 'install': 'hicolor' / '32x32' / 'apps' / 'qemu.bmp',
+ },
+ {
+ 'source': 'qemu.svg',
+ 'install': 'hicolor' / 'scalable' / 'apps' / 'qemu.svg',
+ },
+]
+
foreach s: [16, 24, 32, 48, 64, 128, 256, 512]
s = '@0@x@0@'.format(s.to_string())
- install_data('qemu_@0@.png'.format(s),
- rename: 'qemu.png',
- install_dir: qemu_icondir / 'hicolor' / s / 'apps')
+ icons += {
+ 'source': 'qemu_@0@.png'.format(s),
+ 'install': 'hicolor' / s / 'apps' / 'qemu.png',
+ }
endforeach
-install_data('qemu_32x32.bmp',
- rename: 'qemu.bmp',
- install_dir: qemu_icondir / 'hicolor' / '32x32' / 'apps')
+foreach icon: icons
+ source = icon.get('source')
+ install = icon.get('install')
+
+ install_data(source,
+ rename: fs.name(install),
+ install_dir: qemu_icondir / fs.parent(install))
-install_data('qemu.svg',
- install_dir: qemu_icondir / 'hicolor' / 'scalable' / 'apps')
+ run_command('mkdir', '-p', qemu_bundledir / qemu_icondir / fs.parent(install),
+ check: true)
+
+ run_command('ln', '-sf', meson.current_source_dir() / source, qemu_bundledir / qemu_icondir / install,
+ check: true)
+endforeach
diff --git a/ui/sdl2.c b/ui/sdl2.c
index 8cb77416af2..bbcb4762e1b 100644
--- a/ui/sdl2.c
+++ b/ui/sdl2.c
@@ -910,15 +910,19 @@ static void sdl2_display_init(DisplayState *ds, DisplayOptions *o)
}
#ifdef CONFIG_SDL_IMAGE
- dir = get_relocated_path(CONFIG_QEMU_ICONDIR "/hicolor/128x128/apps/qemu.png");
- icon = IMG_Load(dir);
+ dir = find_bundle(CONFIG_QEMU_BUNDLE_ICONDIR "/hicolor/128x128/apps/qemu.png");
+ if (dir) {
+ icon = IMG_Load(dir);
+ }
#else
/* Load a 32x32x4 image. White pixels are transparent. */
- dir = get_relocated_path(CONFIG_QEMU_ICONDIR "/hicolor/32x32/apps/qemu.bmp");
- icon = SDL_LoadBMP(dir);
- if (icon) {
- uint32_t colorkey = SDL_MapRGB(icon->format, 255, 255, 255);
- SDL_SetColorKey(icon, SDL_TRUE, colorkey);
+ dir = find_bundle(CONFIG_QEMU_BUNDLE_ICONDIR "/hicolor/32x32/apps/qemu.bmp");
+ if (dir) {
+ icon = SDL_LoadBMP(dir);
+ if (icon) {
+ uint32_t colorkey = SDL_MapRGB(icon->format, 255, 255, 255);
+ SDL_SetColorKey(icon, SDL_TRUE, colorkey);
+ }
}
#endif
g_free(dir);
--
2.32.1 (Apple Git-133)
next prev parent reply other threads:[~2022-06-14 21:09 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-14 21:07 [PATCH v4 0/4] cutils: Introduce bundle mechanism Akihiko Odaki
2022-06-14 21:07 ` [PATCH v4 1/4] " Akihiko Odaki
2022-06-15 8:19 ` Paolo Bonzini
2022-06-15 13:12 ` Akihiko Odaki
2022-06-14 21:07 ` [PATCH v4 2/4] datadir: Use " Akihiko Odaki
2022-06-15 8:16 ` Daniel P. Berrangé
2022-06-15 8:21 ` Paolo Bonzini
2022-06-14 21:07 ` Akihiko Odaki [this message]
2022-06-14 21:07 ` [PATCH v4 4/4] net: " Akihiko Odaki
2022-06-15 8:30 ` [PATCH v4 0/4] cutils: Introduce " Daniel P. Berrangé
2022-06-15 11:02 ` Paolo Bonzini
2022-06-15 11:27 ` Daniel P. Berrangé
2022-06-15 8:39 ` Paolo Bonzini
2022-06-15 10:53 ` Daniel P. Berrangé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220614210746.78911-4-akihiko.odaki@gmail.com \
--to=akihiko.odaki@gmail.com \
--cc=berrange@redhat.com \
--cc=f4bug@amsat.org \
--cc=jasowang@redhat.com \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).