1
0
gnome-software/gnome-software-support-appstream-1_0.patch
2023-12-15 10:49:32 +00:00

512 lines
21 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.

Support building with appstream 0.16 and 1.0
Origin: https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/1810
https://gitlab.gnome.org/GNOME/gnome-software/-/merge_requests/1830
---
lib/gs-app.c | 4 ++
lib/gs-appstream.c | 63 +++++++++++++++++++-----
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, 122 insertions(+), 59 deletions(-)
diff --git a/lib/gs-app.c b/lib/gs-app.c
index 048a061..e269405 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 deca176..4fd7f53 100644
--- a/lib/gs-appstream.c
+++ b/lib/gs-appstream.c
@@ -587,8 +587,6 @@ gs_appstream_refine_add_provides (GsApp *app, XbNode *component, GError **error)
kind = AS_PROVIDED_KIND_FIRMWARE_RUNTIME;
else if (g_strcmp0 (fw_type, "flashed") == 0)
kind = AS_PROVIDED_KIND_FIRMWARE_FLASHED;
- } else if (g_strcmp0 (element_name, "python2") == 0) {
- kind = AS_PROVIDED_KIND_PYTHON_2;
} else if (g_strcmp0 (element_name, "python3") == 0) {
kind = AS_PROVIDED_KIND_PYTHON;
} else if (g_strcmp0 (element_name, "dbus") == 0) {
@@ -1011,8 +1009,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 +1021,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 +1479,7 @@ gs_appstream_refine_app (GsPlugin *plugin,
}
typedef struct {
- AsSearchTokenMatch match_value;
+ guint16 match_value;
XbQuery *query;
} GsAppstreamSearchHelper;
@@ -1522,7 +1529,7 @@ gs_appstream_silo_search_component (GPtrArray *array, XbNode *component, const g
}
typedef struct {
- AsSearchTokenMatch match_value;
+ guint16 match_value;
const gchar *xpath;
} Query;
@@ -1539,6 +1546,11 @@ gs_appstream_do_search (GsPlugin *plugin,
g_autoptr(GPtrArray) array = g_ptr_array_new_with_free_func ((GDestroyNotify) gs_appstream_search_helper_free);
g_autoptr(GPtrArray) components = NULL;
g_autoptr(GTimer) timer = g_timer_new ();
+#if AS_CHECK_VERSION(1, 0, 0)
+ const guint16 component_id_weight = as_utils_get_tag_search_weight ("id");
+#else
+ const guint16 component_id_weight = AS_SEARCH_TOKEN_MATCH_ID;
+#endif
g_return_val_if_fail (GS_IS_PLUGIN (plugin), FALSE);
g_return_val_if_fail (XB_IS_SILO (silo), FALSE);
@@ -1585,7 +1597,7 @@ 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. */
- gs_app_set_match_value (app, match_value & (~AS_SEARCH_TOKEN_MATCH_ID));
+ gs_app_set_match_value (app, match_value & (~component_id_weight));
gs_app_list_add (list, app);
if (gs_app_get_kind (app) == AS_COMPONENT_KIND_ADDON) {
@@ -1624,18 +1636,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 +1673,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 +1686,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 cf90730..19e6ebd 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 da9e7ac..2cab9d6 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.4',
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 cf9f302..ef3226a 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 6dcda6e..5d3254d 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 e931b2b..0747d6e 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 0e48c8c..1465340 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 c41c494..7dac041 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 04bbf86..d269af6 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 c313a25..b24083b 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 1f6cf81..6e45f5d 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 6f0beb0..b9a9c7d 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.4
depth = 1
--
2.43.0