gnome-software/0001-port-to-appstream1.patch
2023-11-07 08:25:58 +01:00

495 lines
20 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From e6f7e28bdd50a63586ba6a82b936d54db19a311b Mon Sep 17 00:00:00 2001
From: Matthias Klumpp <matthias@tenstral.net>
Date: Sun, 8 Oct 2023 20:22:44 +0200
Subject: [PATCH] Adjust to build with AppStream 1.0 as well as 0.16.x
---
lib/gs-app.c | 4 ++
lib/gs-appstream.c | 58 ++++++++++++++++++++----
lib/gs-utils.c | 8 ++--
meson.build | 22 +--------
plugins/core/gs-plugin-appstream.c | 8 ----
plugins/fwupd/gs-fwupd-app.c | 8 ++++
plugins/fwupd/gs-plugin-fwupd.c | 4 ++
src/gs-hardware-support-context-dialog.c | 6 +++
src/gs-repos-dialog.c | 4 ++
src/gs-screenshot-carousel.c | 4 +-
src/gs-screenshot-image.c | 41 +++++++++++++----
src/gs-screenshot-image.h | 7 +++
subprojects/appstream.wrap | 2 +-
13 files changed, 120 insertions(+), 56 deletions(-)
diff --git a/lib/gs-app.c b/lib/gs-app.c
index 048a061225..e2694057cd 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -609,7 +609,11 @@ gs_app_to_string_append (GsApp *app, GString *str)
AsScreenshot *ss = g_ptr_array_index (priv->screenshots, i);
g_autofree gchar *key = NULL;
tmp = as_screenshot_get_caption (ss);
+#if AS_CHECK_VERSION(1, 0, 0)
+ im = as_screenshot_get_image (ss, 0, 0, 1);
+#else
im = as_screenshot_get_image (ss, 0, 0);
+#endif
if (im == NULL)
continue;
key = g_strdup_printf ("screenshot-%02u", i);
diff --git a/lib/gs-appstream.c b/lib/gs-appstream.c
index deca176dcf..2cc2427a19 100644
--- a/lib/gs-appstream.c
+++ b/lib/gs-appstream.c
@@ -1011,8 +1011,11 @@ gs_appstream_refine_app_relation (GsApp *app,
as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_CONTROL);
as_relation_set_value_control_kind (relation, as_control_kind_from_string (xb_node_get_text (child)));
} else if (g_str_equal (item_kind, "display_length")) {
- AsDisplayLengthKind display_length_kind;
const gchar *compare;
+ const gchar *side;
+#if !AS_CHECK_VERSION(1, 0, 0)
+ AsDisplayLengthKind display_length_kind;
+#endif
/* https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-relations-display_length */
as_relation_set_item_kind (relation, AS_RELATION_ITEM_KIND_DISPLAY_LENGTH);
@@ -1020,15 +1023,21 @@ gs_appstream_refine_app_relation (GsApp *app,
compare = xb_node_get_attr (child, "compare");
as_relation_set_compare (relation, (compare != NULL) ? as_relation_compare_from_string (compare) : AS_RELATION_COMPARE_GE);
+#if AS_CHECK_VERSION(1, 0, 0)
+ side = xb_node_get_attr (child, "side");
+ as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST);
+ as_relation_set_value_px (relation, xb_node_get_text_as_uint (child));
+#else
display_length_kind = as_display_length_kind_from_string (xb_node_get_text (child));
if (display_length_kind != AS_DISPLAY_LENGTH_KIND_UNKNOWN) {
/* Ignore the `side` attribute */
as_relation_set_value_display_length_kind (relation, display_length_kind);
} else {
- const gchar *side = xb_node_get_attr (child, "side");
+ side = xb_node_get_attr (child, "side");
as_relation_set_display_side_kind (relation, (side != NULL) ? as_display_side_kind_from_string (side) : AS_DISPLAY_SIDE_KIND_SHORTEST);
as_relation_set_value_px (relation, xb_node_get_text_as_uint (child));
}
+#endif
} else {
g_debug ("Relation type %s not currently supported for %s; ignoring",
item_kind, gs_app_get_id (app));
@@ -1472,7 +1481,7 @@ gs_appstream_refine_app (GsPlugin *plugin,
}
typedef struct {
- AsSearchTokenMatch match_value;
+ guint16 match_value;
XbQuery *query;
} GsAppstreamSearchHelper;
@@ -1522,7 +1531,7 @@ gs_appstream_silo_search_component (GPtrArray *array, XbNode *component, const g
}
typedef struct {
- AsSearchTokenMatch match_value;
+ guint16 match_value;
const gchar *xpath;
} Query;
@@ -1585,7 +1594,11 @@ gs_appstream_do_search (GsPlugin *plugin,
* Drop the ID token from it as its the highest
* numeric value but isnt visible to the user in the
* UI, which leads to confusing results ordering. */
+#if AS_CHECK_VERSION(1, 0, 0)
+ gs_app_set_match_value (app, match_value & (~as_utils_get_tag_search_weight ("id")));
+#else
gs_app_set_match_value (app, match_value & (~AS_SEARCH_TOKEN_MATCH_ID));
+#endif
gs_app_list_add (list, app);
if (gs_app_get_kind (app) == AS_COMPONENT_KIND_ADDON) {
@@ -1624,18 +1637,32 @@ gs_appstream_search (GsPlugin *plugin,
GCancellable *cancellable,
GError **error)
{
+#if AS_CHECK_VERSION(1, 0, 0)
+ guint16 pkgname_weight = as_utils_get_tag_search_weight ("pkgname");
+ guint16 name_weight = as_utils_get_tag_search_weight ("name");
+ guint16 id_weight = as_utils_get_tag_search_weight ("id");
const Query queries[] = {
- #ifdef HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE
- { AS_SEARCH_TOKEN_MATCH_MEDIATYPE, "mimetypes/mimetype[text()~=stem(?)]" },
- #else
- { AS_SEARCH_TOKEN_MATCH_MIMETYPE, "mimetypes/mimetype[text()~=stem(?)]" },
- #endif
+ { as_utils_get_tag_search_weight ("mediatype"), "provides/mediatype[text()~=stem(?)]" },
/* Search once with a tokenize-and-casefold operator (`~=`) to support casefolded
* full-text search, then again using substring matching (`contains()`), to
* support prefix matching. Only do the prefix matches on a few fields, and at a
* lower priority, otherwise things will get confusing.
- *
+ *
* See https://gitlab.gnome.org/GNOME/gnome-software/-/issues/2277 */
+ { pkgname_weight, "pkgname[text()~=stem(?)]" },
+ { pkgname_weight / 2, "pkgname[contains(text(),stem(?))]" },
+ { as_utils_get_tag_search_weight ("summary"), "summary[text()~=stem(?)]" },
+ { name_weight, "name[text()~=stem(?)]" },
+ { name_weight / 2, "name[contains(text(),stem(?))]" },
+ { as_utils_get_tag_search_weight ("keyword"), "keywords/keyword[text()~=stem(?)]" },
+ { id_weight, "id[text()~=stem(?)]" },
+ { id_weight, "launchable[text()~=stem(?)]" },
+ { as_utils_get_tag_search_weight ("origin"), "../components[@origin~=stem(?)]" },
+ { 0, NULL }
+ };
+#else
+ const Query queries[] = {
+ { AS_SEARCH_TOKEN_MATCH_MEDIATYPE, "mimetypes/mimetype[text()~=stem(?)]" },
{ AS_SEARCH_TOKEN_MATCH_PKGNAME, "pkgname[text()~=stem(?)]" },
{ AS_SEARCH_TOKEN_MATCH_PKGNAME / 2, "pkgname[contains(text(),stem(?))]" },
{ AS_SEARCH_TOKEN_MATCH_SUMMARY, "summary[text()~=stem(?)]" },
@@ -1647,6 +1674,7 @@ gs_appstream_search (GsPlugin *plugin,
{ AS_SEARCH_TOKEN_MATCH_ORIGIN, "../components[@origin~=stem(?)]" },
{ AS_SEARCH_TOKEN_MATCH_NONE, NULL }
};
+#endif
return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error);
}
@@ -1659,11 +1687,21 @@ gs_appstream_search_developer_apps (GsPlugin *plugin,
GCancellable *cancellable,
GError **error)
{
+#if AS_CHECK_VERSION(1, 0, 0)
+ const Query queries[] = {
+ { as_utils_get_tag_search_weight ("pkgname"), "developer/name[text()~=stem(?)]" },
+ { as_utils_get_tag_search_weight ("summary"), "project_group[text()~=stem(?)]" },
+ /* for legacy support */
+ { as_utils_get_tag_search_weight ("pkgname"), "developer_name[text()~=stem(?)]" },
+ { 0, NULL }
+ };
+#else
const Query queries[] = {
{ AS_SEARCH_TOKEN_MATCH_PKGNAME, "developer_name[text()~=stem(?)]" },
{ AS_SEARCH_TOKEN_MATCH_SUMMARY, "project_group[text()~=stem(?)]" },
{ AS_SEARCH_TOKEN_MATCH_NONE, NULL }
};
+#endif
return gs_appstream_do_search (plugin, silo, values, queries, list, cancellable, error);
}
diff --git a/lib/gs-utils.c b/lib/gs-utils.c
index cf9073025f..19e6ebd046 100644
--- a/lib/gs-utils.c
+++ b/lib/gs-utils.c
@@ -1694,9 +1694,9 @@ gs_utils_gstring_replace (GString *str,
const gchar *find,
const gchar *replace)
{
- #ifdef HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS
+#if AS_CHECK_VERSION(1, 0, 0)
as_gstring_replace (str, find, replace, 0);
- #else
- as_gstring_replace (str, find, replace);
- #endif
+#else
+ as_gstring_replace2 (str, find, replace, 0);
+#endif
}
diff --git a/meson.build b/meson.build
index 09c39df180..ad105869e5 100644
--- a/meson.build
+++ b/meson.build
@@ -113,7 +113,7 @@ add_project_arguments('-D_GNU_SOURCE', language : 'c')
conf.set('HAVE_LINUX_UNISTD_H', cc.has_header('linux/unistd.h'))
appstream = dependency('appstream',
- version : '>= 0.14.0',
+ version : '>= 0.16.2',
fallback : ['appstream', 'appstream_dep'],
default_options : [
'docs=false',
@@ -121,26 +121,6 @@ appstream = dependency('appstream',
'install-docs=false'
]
)
-if appstream.type_name() == 'internal'
-else
- if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_SEARCH_TOKEN_MATCH_MEDIATYPE', dependencies: appstream)
- conf.set('HAVE_AS_SEARCH_TOKEN_MATCH_MEDIATYPE', '1')
- endif
- if meson.get_compiler('c').has_header_symbol('appstream.h', 'AS_FORMAT_STYLE_CATALOG', dependencies: appstream)
- conf.set('HAVE_AS_FORMAT_STYLE_CATALOG', '1')
- endif
- if meson.get_compiler('c').has_function('as_metadata_components_to_catalog', prefix: '#include <appstream.h>', dependencies: appstream)
- conf.set('HAVE_AS_METADATA_COMPONENTS_TO_CATALOG', '1')
- endif
- if meson.get_compiler('c').links('''#include <appstream.h>
- int main (void)
- {
- as_gstring_replace (NULL, "a", "b", 0);
- return 0;
- }''', name: 'as_gstring_replace() has four arguments', dependencies: appstream)
- conf.set('HAVE_AS_GSTRING_REPLACE_WITH_FOUR_ARGS', '1')
- endif
-endif
gdk_pixbuf = dependency('gdk-pixbuf-2.0', version : '>= 2.32.0')
libxmlb = dependency('xmlb', version : '>= 0.1.7', fallback : ['libxmlb', 'libxmlb_dep'])
diff --git a/plugins/core/gs-plugin-appstream.c b/plugins/core/gs-plugin-appstream.c
index cf9f3022b1..ef3226a591 100644
--- a/plugins/core/gs-plugin-appstream.c
+++ b/plugins/core/gs-plugin-appstream.c
@@ -414,11 +414,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self,
if (bytes == NULL)
return NULL;
- #ifdef HAVE_AS_FORMAT_STYLE_CATALOG
as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_CATALOG);
- #else
- as_metadata_set_format_style (mdata, AS_FORMAT_STYLE_COLLECTION);
- #endif
as_metadata_parse_bytes (mdata,
bytes,
AS_FORMAT_KIND_YAML,
@@ -428,11 +424,7 @@ gs_plugin_appstream_load_dep11_cb (XbBuilderSource *self,
return NULL;
}
- #ifdef HAVE_AS_METADATA_COMPONENTS_TO_CATALOG
xml = as_metadata_components_to_catalog (mdata, AS_FORMAT_KIND_XML, &tmp_error);
- #else
- xml = as_metadata_components_to_collection (mdata, AS_FORMAT_KIND_XML, &tmp_error);
- #endif
if (xml == NULL) {
// This API currently returns NULL if there is nothing to serialize, so we
// have to test if this is an error or not.
diff --git a/plugins/fwupd/gs-fwupd-app.c b/plugins/fwupd/gs-fwupd-app.c
index 6dcda6ee92..5d3254da59 100644
--- a/plugins/fwupd/gs-fwupd-app.c
+++ b/plugins/fwupd/gs-fwupd-app.c
@@ -164,7 +164,11 @@ gs_fwupd_app_set_from_device (GsApp *app,
gs_app_set_install_date (app, fwupd_device_get_created (dev));
if (fwupd_device_get_description (dev) != NULL) {
g_autofree gchar *tmp = NULL;
+#if AS_CHECK_VERSION(1, 0, 0)
+ tmp = as_markup_convert (fwupd_device_get_description (dev), AS_MARKUP_KIND_TEXT, NULL);
+#else
tmp = as_markup_convert_simple (fwupd_device_get_description (dev), NULL);
+#endif
if (tmp != NULL)
gs_app_set_description (app, GS_APP_QUALITY_NORMAL, tmp);
}
@@ -402,7 +406,11 @@ gs_fwupd_app_set_from_release (GsApp *app, FwupdRelease *rel)
}
if (fwupd_release_get_description (rel) != NULL) {
g_autofree gchar *tmp = NULL;
+#if AS_CHECK_VERSION(1, 0, 0)
+ tmp = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL);
+#else
tmp = as_markup_convert_simple (fwupd_release_get_description (rel), NULL);
+#endif
if (tmp != NULL)
gs_app_set_update_details_text (app, tmp);
}
diff --git a/plugins/fwupd/gs-plugin-fwupd.c b/plugins/fwupd/gs-plugin-fwupd.c
index e931b2b6db..0747d6e250 100644
--- a/plugins/fwupd/gs-plugin-fwupd.c
+++ b/plugins/fwupd/gs-plugin-fwupd.c
@@ -726,7 +726,11 @@ gs_plugin_add_updates (GsPlugin *plugin,
g_autofree gchar *desc = NULL;
if (fwupd_release_get_description (rel) == NULL)
continue;
+#if AS_CHECK_VERSION(1, 0, 0)
+ desc = as_markup_convert (fwupd_release_get_description (rel), AS_MARKUP_KIND_TEXT, NULL);
+#else
desc = as_markup_convert_simple (fwupd_release_get_description (rel), NULL);
+#endif
if (desc == NULL)
continue;
g_string_append_printf (update_desc,
diff --git a/src/gs-hardware-support-context-dialog.c b/src/gs-hardware-support-context-dialog.c
index 0e48c8c266..14653401de 100644
--- a/src/gs-hardware-support-context-dialog.c
+++ b/src/gs-hardware-support-context-dialog.c
@@ -461,6 +461,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor,
AsRelationCompare comparator = as_relation_get_compare (relation);
Range current_display_comparand, relation_comparand;
+#if !AS_CHECK_VERSION(1, 0, 0)
/* From https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-requires-recommends-display_length */
Range display_lengths[] = {
[AS_DISPLAY_LENGTH_KIND_XSMALL] = { 0, 360 },
@@ -469,6 +470,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor,
[AS_DISPLAY_LENGTH_KIND_LARGE] = { 1024, 3840 },
[AS_DISPLAY_LENGTH_KIND_XLARGE] = { 3840, G_MAXUINT },
};
+#endif
any_display_relations_set = TRUE;
@@ -485,11 +487,14 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor,
case AS_DISPLAY_SIDE_KIND_LAST:
default:
current_display_comparand.min = current_display_comparand.max = MAX (current_screen_size.width, current_screen_size.height);
+#if !AS_CHECK_VERSION(1, 0, 0)
relation_comparand.min = display_lengths[as_relation_get_value_display_length_kind (relation)].min;
relation_comparand.max = display_lengths[as_relation_get_value_display_length_kind (relation)].max;
+#endif
break;
}
+#if !AS_CHECK_VERSION(1, 0, 0)
if (evaluate_display_comparison (display_lengths[AS_DISPLAY_LENGTH_KIND_SMALL], comparator, relation_comparand)) {
*mobile_relation_kind_out = max_relation_kind (*mobile_relation_kind_out, as_relation_get_kind (relation));
*mobile_match_out = TRUE;
@@ -499,6 +504,7 @@ gs_hardware_support_context_dialog_get_display_support (GdkMonitor *monitor,
*desktop_relation_kind_out = max_relation_kind (*desktop_relation_kind_out, as_relation_get_kind (relation));
*desktop_match_out = TRUE;
}
+#endif
if (evaluate_display_comparison (current_display_comparand, comparator, relation_comparand)) {
*current_relation_kind_out = max_relation_kind (*current_relation_kind_out, as_relation_get_kind (relation));
diff --git a/src/gs-repos-dialog.c b/src/gs-repos-dialog.c
index c41c4944a1..7dac0416d9 100644
--- a/src/gs-repos-dialog.c
+++ b/src/gs-repos-dialog.c
@@ -154,7 +154,11 @@ enable_repo (GsReposDialog *dialog,
g_autoptr(GError) error = NULL;
/* convert from AppStream markup */
+#if AS_CHECK_VERSION(1, 0, 0)
+ message = as_markup_convert (gs_app_get_agreement (repo), AS_MARKUP_KIND_TEXT, &error);
+#else
message = as_markup_convert_simple (gs_app_get_agreement (repo), &error);
+#endif
if (message == NULL) {
/* failed, so just try and show the original markup */
message = g_strdup (gs_app_get_agreement (repo));
diff --git a/src/gs-screenshot-carousel.c b/src/gs-screenshot-carousel.c
index 04bbf86a1e..d269af6605 100644
--- a/src/gs-screenshot-carousel.c
+++ b/src/gs-screenshot-carousel.c
@@ -141,8 +141,8 @@ gs_screenshot_carousel_load_screenshots (GsScreenshotCarousel *self, GsApp *app,
gtk_widget_set_can_focus (gtk_widget_get_first_child (ssimg), FALSE);
gs_screenshot_image_set_screenshot (GS_SCREENSHOT_IMAGE (ssimg), ss);
gs_screenshot_image_set_size (GS_SCREENSHOT_IMAGE (ssimg),
- AS_IMAGE_NORMAL_WIDTH,
- AS_IMAGE_NORMAL_HEIGHT);
+ GS_IMAGE_NORMAL_WIDTH,
+ GS_IMAGE_NORMAL_HEIGHT);
gtk_widget_add_css_class (ssimg, "screenshot-image-main");
gs_screenshot_image_load_async (GS_SCREENSHOT_IMAGE (ssimg), cancellable);
diff --git a/src/gs-screenshot-image.c b/src/gs-screenshot-image.c
index c313a2589f..b24083b387 100644
--- a/src/gs-screenshot-image.c
+++ b/src/gs-screenshot-image.c
@@ -284,13 +284,13 @@ gs_screenshot_image_save_downloaded_img (GsScreenshotImage *ssimg,
if (images->len > 1)
return TRUE;
- if (width == AS_IMAGE_THUMBNAIL_WIDTH &&
- height == AS_IMAGE_THUMBNAIL_HEIGHT) {
- width = AS_IMAGE_NORMAL_WIDTH;
- height = AS_IMAGE_NORMAL_HEIGHT;
+ if (width == GS_IMAGE_THUMBNAIL_WIDTH &&
+ height == GS_IMAGE_THUMBNAIL_HEIGHT) {
+ width = GS_IMAGE_NORMAL_WIDTH;
+ height = GS_IMAGE_NORMAL_HEIGHT;
} else {
- width = AS_IMAGE_THUMBNAIL_WIDTH;
- height = AS_IMAGE_THUMBNAIL_HEIGHT;
+ width = GS_IMAGE_THUMBNAIL_WIDTH;
+ height = GS_IMAGE_THUMBNAIL_HEIGHT;
}
width *= ssimg->scale;
@@ -582,16 +582,30 @@ gs_screenshot_image_get_url (GsScreenshotImage *ssimg)
} else if (as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE) {
AsImage *im;
+#if AS_CHECK_VERSION(1, 0, 0)
+ im = as_screenshot_get_image (ssimg->screenshot,
+ ssimg->width,
+ ssimg->height,
+ ssimg->scale);
+#else
im = as_screenshot_get_image (ssimg->screenshot,
ssimg->width * ssimg->scale,
ssimg->height * ssimg->scale);
+#endif
/* if we've failed to load a HiDPI image, fallback to LoDPI */
if (im == NULL && ssimg->scale > 1) {
ssimg->scale = 1;
+#if AS_CHECK_VERSION(1, 0, 0)
+ im = as_screenshot_get_image (ssimg->screenshot,
+ ssimg->width,
+ ssimg->height,
+ 1);
+#else
im = as_screenshot_get_image (ssimg->screenshot,
ssimg->width,
ssimg->height);
+#endif
}
if (im)
@@ -698,15 +712,22 @@ gs_screenshot_image_load_async (GsScreenshotImage *ssimg,
* smaller version of it straight away */
if (!ssimg->showing_image &&
as_screenshot_get_media_kind (ssimg->screenshot) == AS_SCREENSHOT_MEDIA_KIND_IMAGE &&
- ssimg->width > AS_IMAGE_THUMBNAIL_WIDTH &&
- ssimg->height > AS_IMAGE_THUMBNAIL_HEIGHT) {
+ ssimg->width > GS_IMAGE_THUMBNAIL_WIDTH &&
+ ssimg->height > GS_IMAGE_THUMBNAIL_HEIGHT) {
const gchar *url_thumb;
g_autofree gchar *basename_thumb = NULL;
g_autofree gchar *cache_kind_thumb = NULL;
AsImage *im;
+#if AS_CHECK_VERSION(1, 0, 0)
im = as_screenshot_get_image (ssimg->screenshot,
- AS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale,
- AS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale);
+ GS_IMAGE_THUMBNAIL_WIDTH,
+ GS_IMAGE_THUMBNAIL_HEIGHT,
+ ssimg->scale);
+#else
+ im = as_screenshot_get_image (ssimg->screenshot,
+ GS_IMAGE_THUMBNAIL_WIDTH * ssimg->scale,
+ GS_IMAGE_THUMBNAIL_HEIGHT * ssimg->scale);
+#endif
url_thumb = as_image_get_url (im);
basename_thumb = gs_screenshot_get_cachefn_for_url (url_thumb);
cache_kind_thumb = g_build_filename ("screenshots", "112x63", NULL);
diff --git a/src/gs-screenshot-image.h b/src/gs-screenshot-image.h
index 1f6cf81ce6..6e45f5d20a 100644
--- a/src/gs-screenshot-image.h
+++ b/src/gs-screenshot-image.h
@@ -21,6 +21,13 @@ G_BEGIN_DECLS
G_DECLARE_FINAL_TYPE (GsScreenshotImage, gs_screenshot_image, GS, SCREENSHOT_IMAGE, GtkWidget)
+#define GS_IMAGE_LARGE_HEIGHT 423
+#define GS_IMAGE_LARGE_WIDTH 752
+#define GS_IMAGE_NORMAL_HEIGHT 351
+#define GS_IMAGE_NORMAL_WIDTH 624
+#define GS_IMAGE_THUMBNAIL_HEIGHT 63
+#define GS_IMAGE_THUMBNAIL_WIDTH 112
+
GtkWidget *gs_screenshot_image_new (SoupSession *session);
AsScreenshot *gs_screenshot_image_get_screenshot (GsScreenshotImage *ssimg);
diff --git a/subprojects/appstream.wrap b/subprojects/appstream.wrap
index 6f0beb0cbc..5763a32c64 100644
--- a/subprojects/appstream.wrap
+++ b/subprojects/appstream.wrap
@@ -1,5 +1,5 @@
[wrap-git]
directory = appstream
url = https://github.com/ximion/appstream.git
-revision = v0.14.1
+revision = v0.16.3
depth = 1
--
GitLab