504688b143
This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/gnome-software.git#dbac9fa7a31701e5c4e70faa75ee216c66053da5
62 lines
2.3 KiB
Diff
62 lines
2.3 KiB
Diff
From 3e86354cc5ccffc5ef27fa9e5ce2e99e3e60bc8c Mon Sep 17 00:00:00 2001
|
||
From: Philip Withnall <pwithnall@endlessos.org>
|
||
Date: Tue, 16 Mar 2021 13:36:23 +0000
|
||
Subject: [PATCH 3/4] gs-icon: Work around invalid icon names from some
|
||
appstream files
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
Cached icons are supposed to provide a name (like `krita.png`), `width`
|
||
and `height` attributes, and then gnome-software can build the path to
|
||
the cached icon file according to
|
||
https://www.freedesktop.org/software/appstream/docs/sect-AppStream-IconCache.html#spec-iconcache-location.
|
||
|
||
Due to a bug in appstream-builder in appstream-glib
|
||
(https://github.com/hughsie/appstream-glib/pull/390), some appstream
|
||
files – for example, rpmfusion-free-33 – had invalid cached icon names,
|
||
which resulted in those icons not being loadable, and not appearing for
|
||
their applications.
|
||
|
||
As it may take a while for the fix in appstream-builder to be merged and
|
||
be used to regenerate all the appstream files for different app
|
||
repositories, add a workaround in gnome-software.
|
||
|
||
Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
|
||
|
||
Helps: #1171
|
||
---
|
||
lib/gs-icon.c | 10 ++++++++++
|
||
1 file changed, 10 insertions(+)
|
||
|
||
diff --git a/lib/gs-icon.c b/lib/gs-icon.c
|
||
index a88e62d34..955ab0217 100644
|
||
--- a/lib/gs-icon.c
|
||
+++ b/lib/gs-icon.c
|
||
@@ -200,12 +200,22 @@ gs_icon_load_cached (AsIcon *icon)
|
||
{
|
||
const gchar *filename = as_icon_get_filename (icon);
|
||
const gchar *name = as_icon_get_name (icon);
|
||
+ g_autofree gchar *name_allocated = NULL;
|
||
g_autofree gchar *full_filename = NULL;
|
||
g_autoptr(GFile) file = NULL;
|
||
|
||
if (filename == NULL || name == NULL)
|
||
return NULL;
|
||
|
||
+ /* FIXME: Work around https://github.com/hughsie/appstream-glib/pull/390
|
||
+ * where appstream files generated with appstream-builder from
|
||
+ * appstream-glib, with its hidpi option enabled, will contain an
|
||
+ * unnecessary size subdirectory in the icon name. */
|
||
+ if (g_str_has_prefix (name, "64x64/"))
|
||
+ name = name_allocated = g_strdup (name + strlen ("64x64/"));
|
||
+ else if (g_str_has_prefix (name, "128x128/"))
|
||
+ name = name_allocated = g_strdup (name + strlen ("128x128/"));
|
||
+
|
||
if (!g_str_has_suffix (filename, name)) {
|
||
/* Spec: https://www.freedesktop.org/software/appstream/docs/sect-AppStream-IconCache.html#spec-iconcache-location */
|
||
if (as_icon_get_scale (icon) <= 1) {
|
||
--
|
||
2.30.2
|
||
|