diff -Nru gnome-software-3.30.2/debian/changelog gnome-software-3.30.2/debian/changelog --- gnome-software-3.30.2/debian/changelog 2018-10-23 15:13:49.000000000 +0000 +++ gnome-software-3.30.2/debian/changelog 2019-01-18 03:05:50.000000000 +0000 @@ -1,3 +1,10 @@ +gnome-software (3.30.2-0ubuntu9) cosmic; urgency=medium + + * debian/patches/0025-snap-Use-new-media-API.patch: + - Use new snapd media API (LP: #1799614) + + -- Robert Ancell Fri, 18 Jan 2019 16:05:50 +1300 + gnome-software (3.30.2-0ubuntu8) cosmic; urgency=medium * debian/patches/0001-Revert-ef15f51d.patch: diff -Nru gnome-software-3.30.2/debian/control gnome-software-3.30.2/debian/control --- gnome-software-3.30.2/debian/control 2018-10-23 15:13:49.000000000 +0000 +++ gnome-software-3.30.2/debian/control 2019-01-18 03:05:50.000000000 +0000 @@ -29,7 +29,7 @@ libpackagekit-glib2-dev (>= 1.1.4), libpolkit-gobject-1-dev, libsecret-1-dev, - libsnapd-glib-dev (>= 1.43) [amd64 arm64 armel armhf i386 ppc64 ppc64el s390x], + libsnapd-glib-dev (>= 1.45) [amd64 arm64 armel armhf i386 ppc64 ppc64el s390x], libsoup2.4-dev (>= 2.52), libsqlite3-dev, libxml2-utils, diff -Nru gnome-software-3.30.2/debian/control.in gnome-software-3.30.2/debian/control.in --- gnome-software-3.30.2/debian/control.in 2018-10-23 15:03:50.000000000 +0000 +++ gnome-software-3.30.2/debian/control.in 2019-01-18 03:05:50.000000000 +0000 @@ -25,7 +25,7 @@ libpackagekit-glib2-dev (>= 1.1.4), libpolkit-gobject-1-dev, libsecret-1-dev, - libsnapd-glib-dev (>= 1.43) [amd64 arm64 armel armhf i386 ppc64 ppc64el s390x], + libsnapd-glib-dev (>= 1.45) [amd64 arm64 armel armhf i386 ppc64 ppc64el s390x], libsoup2.4-dev (>= 2.52), libsqlite3-dev, libxml2-utils, diff -Nru gnome-software-3.30.2/debian/patches/0025-snap-Use-new-media-API.patch gnome-software-3.30.2/debian/patches/0025-snap-Use-new-media-API.patch --- gnome-software-3.30.2/debian/patches/0025-snap-Use-new-media-API.patch 1970-01-01 00:00:00.000000000 +0000 +++ gnome-software-3.30.2/debian/patches/0025-snap-Use-new-media-API.patch 2019-01-18 03:05:50.000000000 +0000 @@ -0,0 +1,221 @@ +From ade099bb49ed1e149153986888873c610517598a Mon Sep 17 00:00:00 2001 +From: Robert Ancell +Date: Wed, 24 Oct 2018 16:12:40 +1300 +Subject: [PATCH 25/27] snap: Use new media API + +--- + meson.build | 2 +- + plugins/snap/gs-plugin-snap.c | 156 ++++++++++++++++++++++++---------- + 2 files changed, 113 insertions(+), 45 deletions(-) + +diff --git a/meson.build b/meson.build +index a4d35dc1..545a9870 100644 +--- a/meson.build ++++ b/meson.build +@@ -171,7 +171,7 @@ if get_option('gudev') + endif + + if get_option('snap') +- snap = dependency('snapd-glib', version : '>= 1.43') ++ snap = dependency('snapd-glib', version : '>= 1.45') + endif + + gnome = import('gnome') +diff --git a/plugins/snap/gs-plugin-snap.c b/plugins/snap/gs-plugin-snap.c +index 47148e5c..159ee95a 100644 +--- a/plugins/snap/gs-plugin-snap.c ++++ b/plugins/snap/gs-plugin-snap.c +@@ -429,6 +429,48 @@ is_banner_icon_image (const gchar *filename) + return g_regex_match_simple ("^banner-icon(?:_[a-zA-Z0-9]{7})?\\.(?:png|jpg)$", filename, 0, 0); + } + ++static const gchar * ++get_media_url (SnapdSnap *snap, gboolean (*match_func)(const gchar *filename)) ++{ ++ GPtrArray *media, *screenshots; ++ guint i; ++ ++ media = snapd_snap_get_media (snap); ++ for (i = 0; i < media->len; i++) { ++ SnapdMedia *m = media->pdata[i]; ++ ++ /* FIXME: In the future there will be a media type for these */ ++ ++ /* Fall back to old specially named screenshots */ ++ if (g_strcmp0 (snapd_media_get_media_type (m), "screenshot") == 0) { ++ const gchar *url; ++ g_autofree gchar *filename = NULL; ++ ++ url = snapd_media_get_url (m); ++ filename = g_path_get_basename (url); ++ if (match_func (filename)) ++ return url; ++ } ++ } ++ ++ /* Fall back to old screenshots */ ++G_GNUC_BEGIN_IGNORE_DEPRECATIONS ++ screenshots = snapd_snap_get_screenshots (snap); ++G_GNUC_END_IGNORE_DEPRECATIONS ++ for (i = 0; i < screenshots->len; i++) { ++ SnapdScreenshot *screenshot = screenshots->pdata[i]; ++ const gchar *url; ++ g_autofree gchar *filename = NULL; ++ ++ url = snapd_screenshot_get_url (screenshot); ++ filename = g_path_get_basename (url); ++ if (match_func (filename)) ++ return url; ++ } ++ ++ return NULL; ++} ++ + static gboolean + remove_cb (GsApp *app, gpointer user_data) + { +@@ -444,8 +486,6 @@ gs_plugin_add_featured (GsPlugin *plugin, + g_autoptr(GPtrArray) snaps = NULL; + SnapdSnap *snap; + g_autoptr(GsApp) app = NULL; +- GPtrArray *screenshots; +- guint i; + const gchar *banner_url = NULL, *icon_url = NULL; + g_autoptr(GString) background_css = NULL; + g_autofree gchar *css = NULL; +@@ -463,19 +503,8 @@ gs_plugin_add_featured (GsPlugin *plugin, + app = snap_to_app (plugin, snap); + + /* if has a screenshot called 'banner.png' or 'banner-icon.png' then use them for the banner */ +- screenshots = snapd_snap_get_screenshots (snap); +- for (i = 0; i < screenshots->len; i++) { +- SnapdScreenshot *screenshot = screenshots->pdata[i]; +- const gchar *url; +- g_autofree gchar *filename = NULL; +- +- url = snapd_screenshot_get_url (screenshot); +- filename = g_path_get_basename (url); +- if (is_banner_image (filename)) +- banner_url = url; +- else if (is_banner_icon_image (filename)) +- icon_url = url; +- } ++ banner_url = get_media_url (snap, is_banner_image); ++ icon_url = get_media_url (snap, is_banner_icon_image); + + background_css = g_string_new (""); + if (icon_url != NULL) +@@ -932,6 +961,72 @@ set_active_channel (GsApp *app, SnapdChannel *channel) + return FALSE; + } + ++static void ++refine_screenshots (GsApp *app, SnapdSnap *snap) ++{ ++ GPtrArray *media, *screenshots; ++ guint i; ++ ++ media = snapd_snap_get_media (snap); ++ for (i = 0; i < media->len; i++) { ++ SnapdMedia *m = media->pdata[i]; ++ const gchar *url; ++ g_autofree gchar *filename = NULL; ++ g_autoptr(AsScreenshot) ss = NULL; ++ g_autoptr(AsImage) image = NULL; ++ ++ if (g_strcmp0 (snapd_media_get_media_type (m), "screenshot") != 0) ++ continue; ++ ++ /* skip screenshots used for banner when app is featured */ ++ url = snapd_media_get_url (m); ++ filename = g_path_get_basename (url); ++ if (is_banner_image (filename) || is_banner_icon_image (filename)) ++ continue; ++ ++ ss = as_screenshot_new (); ++ as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_NORMAL); ++ image = as_image_new (); ++ as_image_set_url (image, snapd_media_get_url (m)); ++ as_image_set_kind (image, AS_IMAGE_KIND_SOURCE); ++ as_image_set_width (image, snapd_media_get_width (m)); ++ as_image_set_height (image, snapd_media_get_height (m)); ++ as_screenshot_add_image (ss, image); ++ gs_app_add_screenshot (app, ss); ++ } ++ ++ if (gs_app_get_screenshots (app)->len > 0) ++ return; ++ ++ /* fallback to old screenshots data */ ++G_GNUC_BEGIN_IGNORE_DEPRECATIONS ++ screenshots = snapd_snap_get_screenshots (snap); ++G_GNUC_END_IGNORE_DEPRECATIONS ++ for (i = 0; i < screenshots->len; i++) { ++ SnapdScreenshot *screenshot = screenshots->pdata[i]; ++ const gchar *url; ++ g_autofree gchar *filename = NULL; ++ g_autoptr(AsScreenshot) ss = NULL; ++ g_autoptr(AsImage) image = NULL; ++ ++ /* skip screenshots used for banner when app is featured */ ++ url = snapd_screenshot_get_url (screenshot); ++ filename = g_path_get_basename (url); ++ if (is_banner_image (filename) || is_banner_icon_image (filename)) ++ continue; ++ ++ ss = as_screenshot_new (); ++ as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_NORMAL); ++ image = as_image_new (); ++ as_image_set_url (image, snapd_screenshot_get_url (screenshot)); ++ as_image_set_kind (image, AS_IMAGE_KIND_SOURCE); ++ as_image_set_width (image, snapd_screenshot_get_width (screenshot)); ++ as_image_set_height (image, snapd_screenshot_get_height (screenshot)); ++ as_screenshot_add_image (ss, image); ++ gs_app_add_screenshot (app, ss); ++ } ++} ++ + gboolean + gs_plugin_refine_app (GsPlugin *plugin, + GsApp *app, +@@ -1070,35 +1165,8 @@ gs_plugin_refine_app (GsPlugin *plugin, + + gs_app_set_size_download (app, snapd_snap_get_download_size (store_snap)); + +- if (flags & GS_PLUGIN_REFINE_FLAGS_REQUIRE_SCREENSHOTS && gs_app_get_screenshots (app)->len == 0) { +- GPtrArray *screenshots; +- guint i; +- +- screenshots = snapd_snap_get_screenshots (store_snap); +- for (i = 0; i < screenshots->len; i++) { +- SnapdScreenshot *screenshot = screenshots->pdata[i]; +- const gchar *url; +- g_autofree gchar *filename = NULL; +- g_autoptr(AsScreenshot) ss = NULL; +- g_autoptr(AsImage) image = NULL; +- +- /* skip screenshots used for banner when app is featured */ +- url = snapd_screenshot_get_url (screenshot); +- filename = g_path_get_basename (url); +- if (is_banner_image (filename) || is_banner_icon_image (filename)) +- continue; +- +- ss = as_screenshot_new (); +- as_screenshot_set_kind (ss, AS_SCREENSHOT_KIND_NORMAL); +- image = as_image_new (); +- as_image_set_url (image, snapd_screenshot_get_url (screenshot)); +- as_image_set_kind (image, AS_IMAGE_KIND_SOURCE); +- as_image_set_width (image, snapd_screenshot_get_width (screenshot)); +- as_image_set_height (image, snapd_screenshot_get_height (screenshot)); +- as_screenshot_add_image (ss, image); +- gs_app_add_screenshot (app, ss); +- } +- } ++ if (flags & GS_PLUGIN_REFINE_FLAGS_REQUIRE_SCREENSHOTS && gs_app_get_screenshots (app)->len == 0) ++ refine_screenshots (app, store_snap); + } + + /* load icon if requested */ +-- +2.19.1 + diff -Nru gnome-software-3.30.2/debian/patches/series gnome-software-3.30.2/debian/patches/series --- gnome-software-3.30.2/debian/patches/series 2018-10-23 15:10:54.000000000 +0000 +++ gnome-software-3.30.2/debian/patches/series 2019-01-18 03:05:50.000000000 +0000 @@ -30,3 +30,4 @@ 0022-snap-Use-wide-scope-when-searching.patch 0023-snap-Don-t-treat-auth-cancellation-as-an-error.patch 0024-shell-search-provider-implement-XUbuntuCancel.patch +0025-snap-Use-new-media-API.patch