diff -pruN 1.59-3/debian/changelog 1.60-0ubuntu1/debian/changelog
--- 1.59-3/debian/changelog	2021-11-28 17:39:25.000000000 +0000
+++ 1.60-0ubuntu1/debian/changelog	2022-02-16 23:45:02.000000000 +0000
@@ -1,3 +1,25 @@
+snapd-glib (1.60-0ubuntu1) jammy; urgency=medium
+
+  * New upstream release.
+  * debian/*.symbols:
+    - Updated
+
+ -- Robert Ancell <robert.ancell@canonical.com>  Thu, 17 Feb 2022 12:45:02 +1300
+
+snapd-glib (1.59-3ubuntu1) jammy; urgency=medium
+
+  * Merge with Debian, remaining Ubuntu changes:
+  * debian/rules:
+    - Use dh-translations to make translatable
+    - Not using pkgkde_symbolshelper
+  * debian/control:
+    - Set maintainer to Ubuntu.
+    - Build-depend on dh-translations, drop pkgkde_symbolshelper
+  * debian/libsnapd-qt1.symbols:
+    - Use C++ symbol names.
+
+ -- Robert Ancell <robert.ancell@canonical.com>  Thu, 17 Feb 2022 12:33:08 +1300
+
 snapd-glib (1.59-3) unstable; urgency=medium
 
   * debian/libsnapd-qt1.symbols:
diff -pruN 1.59-3/debian/control 1.60-0ubuntu1/debian/control
--- 1.59-3/debian/control	2021-11-27 17:38:16.000000000 +0000
+++ 1.60-0ubuntu1/debian/control	2022-02-16 23:45:02.000000000 +0000
@@ -1,12 +1,14 @@
 Source: snapd-glib
 Section: libs
 Priority: optional
-Maintainer: Ayatana Packagers <pkg-ayatana-devel@alioth-lists.debian.net>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Ayatana Packagers <pkg-ayatana-devel@alioth-lists.debian.net>
 Uploaders:
  Jeremy Bicha <jbicha@debian.org>,
  Mike Gabriel <sunweaver@debian.org>,
  Robert Ancell <robert.ancell@canonical.com>
 Build-Depends: debhelper-compat (= 13),
+               dh-translations,
                gobject-introspection,
                gtk-doc-tools (>= 1.20),
                libgirepository1.0-dev,
@@ -14,7 +16,6 @@ Build-Depends: debhelper-compat (= 13),
                libjson-glib-dev (>= 1.2),
                libsoup2.4-dev (>= 2.32),
                meson (>= 0.43.0),
-               pkg-kde-tools,
                qtbase5-dev,
                qtdeclarative5-dev,
                valac
diff -pruN 1.59-3/debian/libsnapd-glib1.symbols 1.60-0ubuntu1/debian/libsnapd-glib1.symbols
--- 1.59-3/debian/libsnapd-glib1.symbols	2021-11-27 17:37:25.000000000 +0000
+++ 1.60-0ubuntu1/debian/libsnapd-glib1.symbols	2022-02-16 23:45:02.000000000 +0000
@@ -65,6 +65,9 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_client_check_buy_async@Base 1.3
  snapd_client_check_buy_finish@Base 1.3
  snapd_client_check_buy_sync@Base 1.3
+ snapd_client_check_themes_async@Base 1.60
+ snapd_client_check_themes_finish@Base 1.60
+ snapd_client_check_themes_sync@Base 1.60
  snapd_client_connect_async@Base 1.3
  snapd_client_connect_finish@Base 1.3
  snapd_client_connect_interface_async@Base 0.1
@@ -170,6 +173,9 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_client_install_stream_finish@Base 1.9
  snapd_client_install_stream_sync@Base 1.9
  snapd_client_install_sync@Base 0.1
+ snapd_client_install_themes_async@Base 1.60
+ snapd_client_install_themes_finish@Base 1.60
+ snapd_client_install_themes_sync@Base 1.60
  snapd_client_list_async@Base 0.1
  snapd_client_list_finish@Base 0.1
  snapd_client_list_one_async@Base 0.1
@@ -267,6 +273,7 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_get_snaps_flags_get_type@Base 1.42
  snapd_get_snaps_get_type@Base 1.25
  snapd_get_system_info_get_type@Base 1.25
+ snapd_get_themes_get_type@Base 1.60
  snapd_get_users_get_type@Base 1.26
  snapd_icon_get_data@Base 0.1
  snapd_icon_get_mime_type@Base 0.1
@@ -331,6 +338,7 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_post_snap_try_get_type@Base 1.25
  snapd_post_snapctl_get_type@Base 1.25
  snapd_post_snaps_get_type@Base 1.25
+ snapd_post_themes_get_type@Base 1.60
  snapd_price_get_amount@Base 0.1
  snapd_price_get_currency@Base 0.1
  snapd_price_get_type@Base 0.1
@@ -388,6 +396,7 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_snap_get_screenshots@Base 1.0
  snapd_snap_get_snap_type@Base 0.1
  snapd_snap_get_status@Base 0.1
+ snapd_snap_get_store_url@Base 1.60
  snapd_snap_get_summary@Base 0.1
  snapd_snap_get_title@Base 1.14
  snapd_snap_get_tracking_channel@Base 1.7
@@ -430,6 +439,7 @@ libsnapd-glib.so.1 libsnapd-glib1 #MINVE
  snapd_task_get_status@Base 0.4
  snapd_task_get_summary@Base 0.4
  snapd_task_get_type@Base 0.4
+ snapd_theme_status_get_type@Base 1.60
  snapd_user_information_get_auth_data@Base 1.26
  snapd_user_information_get_email@Base 1.26
  snapd_user_information_get_id@Base 1.26
diff -pruN 1.59-3/debian/libsnapd-qt1.symbols 1.60-0ubuntu1/debian/libsnapd-qt1.symbols
--- 1.59-3/debian/libsnapd-qt1.symbols	2021-11-28 17:38:49.000000000 +0000
+++ 1.60-0ubuntu1/debian/libsnapd-qt1.symbols	2022-02-16 23:45:02.000000000 +0000
@@ -1,1438 +1,446 @@
-# SymbolsHelper-Confirmed: 1.59 amd64 arm64 armel armhf hppa i386 ia64 m68k mips64el mipsel powerpc ppc64 ppc64el riscv64 s390x sh4 sparc64 x32
 libsnapd-qt.so.1 libsnapd-qt1 #MINVER#
-* Build-Depends-Package: libsnapd-qt-dev
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_Z27qRegisterNormalizedMetaTypeIP9QIODeviceEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS5_Xaasr12QMetaTypeId2IS5_E7DefinedntsrSA_9IsBuiltInEE11DefinedTypeE@Base 1.58
- _Z5loginRK7QStringS1_@Base 1.58
- _Z5loginRK7QStringS1_S1_@Base 1.58
- _ZN10QByteArrayD1Ev@Base 1.58
- _ZN10QByteArrayD2Ev@Base 1.58
- _ZN10QSnapdIcon11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN10QSnapdIcon11qt_metacastEPKc@Base 1.58
- _ZN10QSnapdIcon16staticMetaObjectE@Base 1.58
- _ZN10QSnapdIconC1EPvP7QObject@Base 1.58
- _ZN10QSnapdIconC2EPvP7QObject@Base 1.58
- _ZN10QSnapdIconD0Ev@Base 1.58
- _ZN10QSnapdIconD1Ev@Base 1.58
- _ZN10QSnapdIconD2Ev@Base 1.58
- _ZN10QSnapdPlug11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN10QSnapdPlug11qt_metacastEPKc@Base 1.58
- _ZN10QSnapdPlug16staticMetaObjectE@Base 1.58
- _ZN10QSnapdPlugC1EPvP7QObject@Base 1.58
- _ZN10QSnapdPlugC2EPvP7QObject@Base 1.58
- _ZN10QSnapdPlugD0Ev@Base 1.58
- _ZN10QSnapdPlugD1Ev@Base 1.58
- _ZN10QSnapdPlugD2Ev@Base 1.58
- _ZN10QSnapdSlot11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN10QSnapdSlot11qt_metacastEPKc@Base 1.58
- _ZN10QSnapdSlot16staticMetaObjectE@Base 1.58
- _ZN10QSnapdSlotC1EPvP7QObject@Base 1.58
- _ZN10QSnapdSlotC2EPvP7QObject@Base 1.58
- _ZN10QSnapdSlotD0Ev@Base 1.58
- _ZN10QSnapdSlotD1Ev@Base 1.58
- _ZN10QSnapdSlotD2Ev@Base 1.58
- _ZN10QSnapdSnap11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN10QSnapdSnap11qt_metacastEPKc@Base 1.58
- _ZN10QSnapdSnap16staticMetaObjectE@Base 1.58
- _ZN10QSnapdSnapC1EPvP7QObject@Base 1.58
- _ZN10QSnapdSnapC2EPvP7QObject@Base 1.58
- _ZN10QSnapdSnapD0Ev@Base 1.58
- _ZN10QSnapdSnapD1Ev@Base 1.58
- _ZN10QSnapdSnapD2Ev@Base 1.58
- _ZN10QSnapdTask11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN10QSnapdTask11qt_metacastEPKc@Base 1.58
- _ZN10QSnapdTask16staticMetaObjectE@Base 1.58
- _ZN10QSnapdTaskC1EPvP7QObject@Base 1.58
- _ZN10QSnapdTaskC2EPvP7QObject@Base 1.58
- _ZN10QSnapdTaskD0Ev@Base 1.58
- _ZN10QSnapdTaskD1Ev@Base 1.58
- _ZN10QSnapdTaskD2Ev@Base 1.58
- _ZN11QSnapdAlias11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN11QSnapdAlias11qt_metacastEPKc@Base 1.58
- _ZN11QSnapdAlias16staticMetaObjectE@Base 1.58
- _ZN11QSnapdAliasC1EPvP7QObject@Base 1.58
- _ZN11QSnapdAliasC2EPvP7QObject@Base 1.58
- _ZN11QSnapdAliasD0Ev@Base 1.58
- _ZN11QSnapdAliasD1Ev@Base 1.58
- _ZN11QSnapdAliasD2Ev@Base 1.58
- _ZN11QSnapdEnums11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN11QSnapdEnums11qt_metacastEPKc@Base 1.58
- _ZN11QSnapdEnums16staticMetaObjectE@Base 1.58
- _ZN11QSnapdEnumsD0Ev@Base 1.58
- _ZN11QSnapdEnumsD1Ev@Base 1.58
- _ZN11QSnapdEnumsD2Ev@Base 1.58
- _ZN11QSnapdMedia11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN11QSnapdMedia11qt_metacastEPKc@Base 1.58
- _ZN11QSnapdMedia16staticMetaObjectE@Base 1.58
- _ZN11QSnapdMediaC1EPvP7QObject@Base 1.58
- _ZN11QSnapdMediaC2EPvP7QObject@Base 1.58
- _ZN11QSnapdMediaD0Ev@Base 1.58
- _ZN11QSnapdMediaD1Ev@Base 1.58
- _ZN11QSnapdMediaD2Ev@Base 1.58
- _ZN11QSnapdPrice11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN11QSnapdPrice11qt_metacastEPKc@Base 1.58
- _ZN11QSnapdPrice16staticMetaObjectE@Base 1.58
- _ZN11QSnapdPriceC1EPvP7QObject@Base 1.58
- _ZN11QSnapdPriceC2EPvP7QObject@Base 1.58
- _ZN11QSnapdPriceD0Ev@Base 1.58
- _ZN11QSnapdPriceD1Ev@Base 1.58
- _ZN11QSnapdPriceD2Ev@Base 1.58
- _ZN12QSnapdChange11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN12QSnapdChange11qt_metacastEPKc@Base 1.58
- _ZN12QSnapdChange16staticMetaObjectE@Base 1.58
- _ZN12QSnapdChangeC1EPvP7QObject@Base 1.58
- _ZN12QSnapdChangeC2EPvP7QObject@Base 1.58
- _ZN12QSnapdChangeD0Ev@Base 1.58
- _ZN12QSnapdChangeD1Ev@Base 1.58
- _ZN12QSnapdChangeD2Ev@Base 1.58
- _ZN12QSnapdClient10createUserERK7QString6QFlagsINS_14CreateUserFlagEE@Base 1.58
- _ZN12QSnapdClient10createUserERK7QString@Base 1.58
- _ZN12QSnapdClient10getAliasesEv@Base 1.58
- _ZN12QSnapdClient10getChangesENS_12ChangeFilterE@Base 1.58
- _ZN12QSnapdClient10getChangesENS_12ChangeFilterERK7QString@Base 1.58
- _ZN12QSnapdClient10getChangesERK7QString@Base 1.58
- _ZN12QSnapdClient10getChangesEv@Base 1.58
- _ZN12QSnapdClient10refreshAllEv@Base 1.58
- _ZN12QSnapdClient10runSnapCtlE7QStringRK11QStringList@Base 1.58
- _ZN12QSnapdClient11abortChangeERK7QString@Base 1.58
- _ZN12QSnapdClient11createUsersEv@Base 1.58
- _ZN12QSnapdClient11findSectionE6QFlagsINS_8FindFlagEERK7QStringS5_@Base 1.58
- _ZN12QSnapdClient11findSectionERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient11getSectionsEv@Base 1.58
- _ZN12QSnapdClient11getSnapConfERK7QString@Base 1.58
- _ZN12QSnapdClient11getSnapConfERK7QStringRK11QStringList@Base 1.58
- _ZN12QSnapdClient11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN12QSnapdClient11qt_metacastEPKc@Base 1.58
- _ZN12QSnapdClient11setAuthDataEP14QSnapdAuthData@Base 1.58
- _ZN12QSnapdClient11setSnapConfERK7QStringRK5QHashIS0_8QVariantE@Base 1.58
- _ZN12QSnapdClient12resetAliasesE7QStringRK11QStringList@Base 1.58
- _ZN12QSnapdClient12setUserAgentERK7QString@Base 1.58
- _ZN12QSnapdClient13addAssertionsERK11QStringList@Base 1.58
- _ZN12QSnapdClient13enableAliasesE7QStringRK11QStringList@Base 1.58
- _ZN12QSnapdClient13getAssertionsERK7QString@Base 1.58
- _ZN12QSnapdClient13getInterfacesEv@Base 1.58
- _ZN12QSnapdClient13setSocketPathERK7QString@Base 1.58
- _ZN12QSnapdClient13switchChannelERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient14disableAliasesE7QStringRK11QStringList@Base 1.58
- _ZN12QSnapdClient14getConnectionsE6QFlagsINS_18GetConnectionsFlagEE@Base 1.58
- _ZN12QSnapdClient14getConnectionsE6QFlagsINS_18GetConnectionsFlagEERK7QStringS5_@Base 1.58
- _ZN12QSnapdClient14getConnectionsERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient14getConnectionsEv@Base 1.58
- _ZN12QSnapdClient14getInterfaces2E6QFlagsINS_13InterfaceFlagEE@Base 1.58
- _ZN12QSnapdClient14getInterfaces2E6QFlagsINS_13InterfaceFlagEERK11QStringList@Base 1.58
- _ZN12QSnapdClient14getInterfaces2ERK11QStringList@Base 1.58
- _ZN12QSnapdClient14getInterfaces2Ev@Base 1.58
- _ZN12QSnapdClient15findRefreshableEv@Base 1.58
- _ZN12QSnapdClient16connectInterfaceERK7QStringS2_S2_S2_@Base 1.58
- _ZN12QSnapdClient16staticMetaObjectE@Base 1.58
- _ZN12QSnapdClient19disconnectInterfaceERK7QStringS2_S2_S2_@Base 1.58
- _ZN12QSnapdClient19setAllowInteractionEb@Base 1.58
- _ZN12QSnapdClient20getSystemInformationEv@Base 1.58
- _ZN12QSnapdClient3buyERK7QStringdS2_@Base 1.58
- _ZN12QSnapdClient4findE6QFlagsINS_8FindFlagEE@Base 1.58
- _ZN12QSnapdClient4findE6QFlagsINS_8FindFlagEERK7QString@Base 1.58
- _ZN12QSnapdClient4findERK7QString@Base 1.58
- _ZN12QSnapdClient4listEv@Base 1.58
- _ZN12QSnapdClient5aliasERK7QStringS2_S2_@Base 1.58
- _ZN12QSnapdClient5loginERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient5loginERK7QStringS2_S2_@Base 1.58
- _ZN12QSnapdClient6enableERK7QString@Base 1.58
- _ZN12QSnapdClient6logoutEx@Base 1.58
- _ZN12QSnapdClient6preferERK7QString@Base 1.58
- _ZN12QSnapdClient6removeE6QFlagsINS_10RemoveFlagEERK7QString@Base 1.58
- _ZN12QSnapdClient6removeERK7QString@Base 1.58
- _ZN12QSnapdClient7connectEv@Base 1.58
- _ZN12QSnapdClient7disableERK7QString@Base 1.58
- _ZN12QSnapdClient7getAppsE6QFlagsINS_11GetAppsFlagEE@Base 1.58
- _ZN12QSnapdClient7getAppsE6QFlagsINS_11GetAppsFlagEERK11QStringList@Base 1.58
- _ZN12QSnapdClient7getAppsE6QFlagsINS_11GetAppsFlagEERK7QString@Base 1.58
- _ZN12QSnapdClient7getAppsERK11QStringList@Base 1.58
- _ZN12QSnapdClient7getAppsERK7QString@Base 1.58
- _ZN12QSnapdClient7getAppsEv@Base 1.58
- _ZN12QSnapdClient7getIconERK7QString@Base 1.58
- _ZN12QSnapdClient7getSnapERK7QString@Base 1.58
- _ZN12QSnapdClient7installE6QFlagsINS_11InstallFlagEEP9QIODevice@Base 1.58
- _ZN12QSnapdClient7installE6QFlagsINS_11InstallFlagEERK7QString@Base 1.58
- _ZN12QSnapdClient7installE6QFlagsINS_11InstallFlagEERK7QStringS5_@Base 1.58
- _ZN12QSnapdClient7installE6QFlagsINS_11InstallFlagEERK7QStringS5_S5_@Base 1.58
- _ZN12QSnapdClient7installEP9QIODevice@Base 1.58
- _ZN12QSnapdClient7installERK7QString@Base 1.58
- _ZN12QSnapdClient7installERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient7installERK7QStringS2_S2_@Base 1.58
- _ZN12QSnapdClient7listOneERK7QString@Base 1.58
- _ZN12QSnapdClient7refreshERK7QString@Base 1.58
- _ZN12QSnapdClient7refreshERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient7trySnapERK7QString@Base 1.58
- _ZN12QSnapdClient7unaliasERK7QString@Base 1.58
- _ZN12QSnapdClient7unaliasERK7QStringS2_@Base 1.58
- _ZN12QSnapdClient8authDataEv@Base 1.58
- _ZN12QSnapdClient8checkBuyEv@Base 1.58
- _ZN12QSnapdClient8downloadERK7QString@Base 1.58
- _ZN12QSnapdClient8downloadERK7QStringS2_S2_@Base 1.58
- _ZN12QSnapdClient8getSnapsE6QFlagsINS_12GetSnapsFlagEERK11QStringList@Base 1.58
- _ZN12QSnapdClient8getSnapsE6QFlagsINS_12GetSnapsFlagEERK7QString@Base 1.58
- _ZN12QSnapdClient8getSnapsERK11QStringList@Base 1.58
- _ZN12QSnapdClient8getSnapsERK7QString@Base 1.58
- _ZN12QSnapdClient8getSnapsEv@Base 1.58
- _ZN12QSnapdClient8getUsersEv@Base 1.58
- _ZN12QSnapdClient9getChangeERK7QString@Base 1.58
- _ZN12QSnapdClientC1EP7QObject@Base 1.58
- _ZN12QSnapdClientC1EiP7QObject@Base 1.58
- _ZN12QSnapdClientC2EP7QObject@Base 1.58
- _ZN12QSnapdClientC2EiP7QObject@Base 1.58
- _ZN12QSnapdClientD0Ev@Base 1.58
- _ZN12QSnapdClientD1Ev@Base 1.58
- _ZN12QSnapdClientD2Ev@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN12QWeakPointerI7QObjectED1Ev@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN12QWeakPointerI7QObjectED2Ev@Base 1.58
- _ZN13QSnapdChannel11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN13QSnapdChannel11qt_metacastEPKc@Base 1.58
- _ZN13QSnapdChannel16staticMetaObjectE@Base 1.58
- _ZN13QSnapdChannelC1EPvP7QObject@Base 1.58
- _ZN13QSnapdChannelC2EPvP7QObject@Base 1.58
- _ZN13QSnapdChannelD0Ev@Base 1.58
- _ZN13QSnapdChannelD1Ev@Base 1.58
- _ZN13QSnapdChannelD2Ev@Base 1.58
- _ZN13QSnapdPlugRef11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN13QSnapdPlugRef11qt_metacastEPKc@Base 1.58
- _ZN13QSnapdPlugRef16staticMetaObjectE@Base 1.58
- _ZN13QSnapdPlugRefC1EPvP7QObject@Base 1.58
- _ZN13QSnapdPlugRefC2EPvP7QObject@Base 1.58
- _ZN13QSnapdPlugRefD0Ev@Base 1.58
- _ZN13QSnapdPlugRefD1Ev@Base 1.58
- _ZN13QSnapdPlugRefD2Ev@Base 1.58
- _ZN13QSnapdRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN13QSnapdRequest11qt_metacastEPKc@Base 1.58
- _ZN13QSnapdRequest14handleProgressEPv@Base 1.58
- _ZN13QSnapdRequest16staticMetaObjectE@Base 1.58
- _ZN13QSnapdRequest6cancelEv@Base 1.58
- _ZN13QSnapdRequest6finishEPv@Base 1.58
- _ZN13QSnapdRequest8completeEv@Base 1.58
- _ZN13QSnapdRequest8progressEv@Base 1.58
- _ZN13QSnapdRequestC1EPvP7QObject@Base 1.58
- _ZN13QSnapdRequestC2EPvP7QObject@Base 1.58
- _ZN13QSnapdRequestD0Ev@Base 1.58
- _ZN13QSnapdRequestD1Ev@Base 1.58
- _ZN13QSnapdRequestD2Ev@Base 1.58
- _ZN13QSnapdSlotRef11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN13QSnapdSlotRef11qt_metacastEPKc@Base 1.58
- _ZN13QSnapdSlotRef16staticMetaObjectE@Base 1.58
- _ZN13QSnapdSlotRefC1EPvP7QObject@Base 1.58
- _ZN13QSnapdSlotRefC2EPvP7QObject@Base 1.58
- _ZN13QSnapdSlotRefD0Ev@Base 1.58
- _ZN13QSnapdSlotRefD1Ev@Base 1.58
- _ZN13QSnapdSlotRefD2Ev@Base 1.58
- _ZN14QSnapdAuthData11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN14QSnapdAuthData11qt_metacastEPKc@Base 1.58
- _ZN14QSnapdAuthData16staticMetaObjectE@Base 1.58
- _ZN14QSnapdAuthDataC1EP7QObject@Base 1.58
- _ZN14QSnapdAuthDataC1EPvP7QObject@Base 1.58
- _ZN14QSnapdAuthDataC1ERK7QStringRK11QStringListP7QObject@Base 1.58
- _ZN14QSnapdAuthDataC2EP7QObject@Base 1.58
- _ZN14QSnapdAuthDataC2EPvP7QObject@Base 1.58
- _ZN14QSnapdAuthDataC2ERK7QStringRK11QStringListP7QObject@Base 1.58
- _ZN14QSnapdAuthDataD0Ev@Base 1.58
- _ZN14QSnapdAuthDataD1Ev@Base 1.58
- _ZN14QSnapdAuthDataD2Ev@Base 1.58
- _ZN15QSnapdAssertion11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN15QSnapdAssertion11qt_metacastEPKc@Base 1.58
- _ZN15QSnapdAssertion16staticMetaObjectE@Base 1.58
- _ZN15QSnapdAssertionC1ERK7QStringP7QObject@Base 1.58
- _ZN15QSnapdAssertionC2ERK7QStringP7QObject@Base 1.58
- _ZN15QSnapdAssertionD0Ev@Base 1.58
- _ZN15QSnapdAssertionD1Ev@Base 1.58
- _ZN15QSnapdAssertionD2Ev@Base 1.58
- _ZN15QSnapdInterface11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN15QSnapdInterface11qt_metacastEPKc@Base 1.58
- _ZN15QSnapdInterface16staticMetaObjectE@Base 1.58
- _ZN15QSnapdInterfaceC1EPvP7QObject@Base 1.58
- _ZN15QSnapdInterfaceC2EPvP7QObject@Base 1.58
- _ZN15QSnapdInterfaceD0Ev@Base 1.58
- _ZN15QSnapdInterfaceD1Ev@Base 1.58
- _ZN15QSnapdInterfaceD2Ev@Base 1.58
-#MISSING: 1.59-1# _ZN15QtSharedPointer20ExternalRefCountDataD1Ev@Base 1.58
-#MISSING: 1.59-1# _ZN15QtSharedPointer20ExternalRefCountDataD2Ev@Base 1.58
- _ZN16QSnapdBuyRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN16QSnapdBuyRequest11qt_metacastEPKc@Base 1.58
- _ZN16QSnapdBuyRequest12handleResultEPvS0_@Base 1.58
- _ZN16QSnapdBuyRequest16staticMetaObjectE@Base 1.58
- _ZN16QSnapdBuyRequest7runSyncEv@Base 1.58
- _ZN16QSnapdBuyRequest8runAsyncEv@Base 1.58
- _ZN16QSnapdBuyRequestC1ERK7QStringdS2_PvP7QObject@Base 1.58
- _ZN16QSnapdBuyRequestC2ERK7QStringdS2_PvP7QObject@Base 1.58
- _ZN16QSnapdBuyRequestD0Ev@Base 1.58
- _ZN16QSnapdBuyRequestD1Ev@Base 1.58
- _ZN16QSnapdBuyRequestD2Ev@Base 1.58
- _ZN16QSnapdConnection11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN16QSnapdConnection11qt_metacastEPKc@Base 1.58
- _ZN16QSnapdConnection16staticMetaObjectE@Base 1.58
- _ZN16QSnapdConnectionC1EPvP7QObject@Base 1.58
- _ZN16QSnapdConnectionC2EPvP7QObject@Base 1.58
- _ZN16QSnapdConnectionD0Ev@Base 1.58
- _ZN16QSnapdConnectionD1Ev@Base 1.58
- _ZN16QSnapdConnectionD2Ev@Base 1.58
- _ZN16QSnapdScreenshot11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN16QSnapdScreenshot11qt_metacastEPKc@Base 1.58
- _ZN16QSnapdScreenshot16staticMetaObjectE@Base 1.58
- _ZN16QSnapdScreenshotC1EPvP7QObject@Base 1.58
- _ZN16QSnapdScreenshotC2EPvP7QObject@Base 1.58
- _ZN16QSnapdScreenshotD0Ev@Base 1.58
- _ZN16QSnapdScreenshotD1Ev@Base 1.58
- _ZN16QSnapdScreenshotD2Ev@Base 1.58
- _ZN16QSnapdTryRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN16QSnapdTryRequest11qt_metacastEPKc@Base 1.58
- _ZN16QSnapdTryRequest12handleResultEPvS0_@Base 1.58
- _ZN16QSnapdTryRequest16staticMetaObjectE@Base 1.58
- _ZN16QSnapdTryRequest7runSyncEv@Base 1.58
- _ZN16QSnapdTryRequest8runAsyncEv@Base 1.58
- _ZN16QSnapdTryRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN16QSnapdTryRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN16QSnapdTryRequestD0Ev@Base 1.58
- _ZN16QSnapdTryRequestD1Ev@Base 1.58
- _ZN16QSnapdTryRequestD2Ev@Base 1.58
- _ZN17QSnapdFindRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN17QSnapdFindRequest11qt_metacastEPKc@Base 1.58
- _ZN17QSnapdFindRequest12handleResultEPvS0_@Base 1.58
- _ZN17QSnapdFindRequest16staticMetaObjectE@Base 1.58
- _ZN17QSnapdFindRequest7runSyncEv@Base 1.58
- _ZN17QSnapdFindRequest8runAsyncEv@Base 1.58
- _ZN17QSnapdFindRequestC1EiRK7QStringS2_PvP7QObject@Base 1.58
- _ZN17QSnapdFindRequestC2EiRK7QStringS2_PvP7QObject@Base 1.58
- _ZN17QSnapdFindRequestD0Ev@Base 1.58
- _ZN17QSnapdFindRequestD1Ev@Base 1.58
- _ZN17QSnapdFindRequestD2Ev@Base 1.58
- _ZN17QSnapdListRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN17QSnapdListRequest11qt_metacastEPKc@Base 1.58
- _ZN17QSnapdListRequest12handleResultEPvS0_@Base 1.58
- _ZN17QSnapdListRequest16staticMetaObjectE@Base 1.58
- _ZN17QSnapdListRequest7runSyncEv@Base 1.58
- _ZN17QSnapdListRequest8runAsyncEv@Base 1.58
- _ZN17QSnapdListRequestC1EPvP7QObject@Base 1.58
- _ZN17QSnapdListRequestC2EPvP7QObject@Base 1.58
- _ZN17QSnapdListRequestD0Ev@Base 1.58
- _ZN17QSnapdListRequestD1Ev@Base 1.58
- _ZN17QSnapdListRequestD2Ev@Base 1.58
- _ZN17QSnapdMaintenance11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN17QSnapdMaintenance11qt_metacastEPKc@Base 1.58
- _ZN17QSnapdMaintenance16staticMetaObjectE@Base 1.58
- _ZN17QSnapdMaintenanceC1EPvP7QObject@Base 1.58
- _ZN17QSnapdMaintenanceC2EPvP7QObject@Base 1.58
- _ZN17QSnapdMaintenanceD0Ev@Base 1.58
- _ZN17QSnapdMaintenanceD1Ev@Base 1.58
- _ZN17QSnapdMaintenanceD2Ev@Base 1.58
- (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP9QIODeviceLb1EE8DestructEPv@Base 1.58
- (optional=templinst)_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP9QIODeviceLb1EE9ConstructEPvPKv@Base 1.58
- (optional=templinst)_ZN18QMetaTypeIdQObjectIP9QIODeviceLi8EE14qt_metatype_idEv@Base 1.58
- _ZN18QSnapdAliasRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN18QSnapdAliasRequest11qt_metacastEPKc@Base 1.58
- _ZN18QSnapdAliasRequest12handleResultEPvS0_@Base 1.58
- _ZN18QSnapdAliasRequest16staticMetaObjectE@Base 1.58
- _ZN18QSnapdAliasRequest7runSyncEv@Base 1.58
- _ZN18QSnapdAliasRequest8runAsyncEv@Base 1.58
- _ZN18QSnapdAliasRequestC1ERK7QStringS2_S2_PvP7QObject@Base 1.58
- _ZN18QSnapdAliasRequestC2ERK7QStringS2_S2_PvP7QObject@Base 1.58
- _ZN18QSnapdAliasRequestD0Ev@Base 1.58
- _ZN18QSnapdAliasRequestD1Ev@Base 1.58
- _ZN18QSnapdAliasRequestD2Ev@Base 1.58
- _ZN18QSnapdLoginRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN18QSnapdLoginRequest11qt_metacastEPKc@Base 1.58
- _ZN18QSnapdLoginRequest12handleResultEPvS0_@Base 1.58
- _ZN18QSnapdLoginRequest15userInformationEv@Base 1.58
- _ZN18QSnapdLoginRequest16staticMetaObjectE@Base 1.58
- _ZN18QSnapdLoginRequest7runSyncEv@Base 1.58
- _ZN18QSnapdLoginRequest8authDataEv@Base 1.58
- _ZN18QSnapdLoginRequest8runAsyncEv@Base 1.58
- _ZN18QSnapdLoginRequestC1EPvRK7QStringS3_S3_P7QObject@Base 1.58
- _ZN18QSnapdLoginRequestC2EPvRK7QStringS3_S3_P7QObject@Base 1.58
- _ZN18QSnapdLoginRequestD0Ev@Base 1.58
- _ZN18QSnapdLoginRequestD1Ev@Base 1.58
- _ZN18QSnapdLoginRequestD2Ev@Base 1.58
- _ZN18QSnapdMarkdownNode11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN18QSnapdMarkdownNode11qt_metacastEPKc@Base 1.58
- _ZN18QSnapdMarkdownNode16staticMetaObjectE@Base 1.58
- _ZN18QSnapdMarkdownNodeC1EPvP7QObject@Base 1.58
- _ZN18QSnapdMarkdownNodeC1ERKS_@Base 1.58
- _ZN18QSnapdMarkdownNodeC2EPvP7QObject@Base 1.58
- _ZN18QSnapdMarkdownNodeC2ERKS_@Base 1.58
- _ZN18QSnapdMarkdownNodeD0Ev@Base 1.58
- _ZN18QSnapdMarkdownNodeD1Ev@Base 1.58
- _ZN18QSnapdMarkdownNodeD2Ev@Base 1.58
- _ZN19QSnapdEnableRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN19QSnapdEnableRequest11qt_metacastEPKc@Base 1.58
- _ZN19QSnapdEnableRequest12handleResultEPvS0_@Base 1.58
- _ZN19QSnapdEnableRequest16staticMetaObjectE@Base 1.58
- _ZN19QSnapdEnableRequest7runSyncEv@Base 1.58
- _ZN19QSnapdEnableRequest8runAsyncEv@Base 1.58
- _ZN19QSnapdEnableRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdEnableRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdEnableRequestD0Ev@Base 1.58
- _ZN19QSnapdEnableRequestD1Ev@Base 1.58
- _ZN19QSnapdEnableRequestD2Ev@Base 1.58
- _ZN19QSnapdLogoutRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN19QSnapdLogoutRequest11qt_metacastEPKc@Base 1.58
- _ZN19QSnapdLogoutRequest12handleResultEPvS0_@Base 1.58
- _ZN19QSnapdLogoutRequest16staticMetaObjectE@Base 1.58
- _ZN19QSnapdLogoutRequest7runSyncEv@Base 1.58
- _ZN19QSnapdLogoutRequest8runAsyncEv@Base 1.58
- _ZN19QSnapdLogoutRequestC1EPvxP7QObject@Base 1.58
- _ZN19QSnapdLogoutRequestC2EPvxP7QObject@Base 1.58
- _ZN19QSnapdLogoutRequestD0Ev@Base 1.58
- _ZN19QSnapdLogoutRequestD1Ev@Base 1.58
- _ZN19QSnapdLogoutRequestD2Ev@Base 1.58
- _ZN19QSnapdPreferRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN19QSnapdPreferRequest11qt_metacastEPKc@Base 1.58
- _ZN19QSnapdPreferRequest12handleResultEPvS0_@Base 1.58
- _ZN19QSnapdPreferRequest16staticMetaObjectE@Base 1.58
- _ZN19QSnapdPreferRequest7runSyncEv@Base 1.58
- _ZN19QSnapdPreferRequest8runAsyncEv@Base 1.58
- _ZN19QSnapdPreferRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdPreferRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdPreferRequestD0Ev@Base 1.58
- _ZN19QSnapdPreferRequestD1Ev@Base 1.58
- _ZN19QSnapdPreferRequestD2Ev@Base 1.58
- _ZN19QSnapdRemoveRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN19QSnapdRemoveRequest11qt_metacastEPKc@Base 1.58
- _ZN19QSnapdRemoveRequest12handleResultEPvS0_@Base 1.58
- _ZN19QSnapdRemoveRequest16staticMetaObjectE@Base 1.58
- _ZN19QSnapdRemoveRequest7runSyncEv@Base 1.58
- _ZN19QSnapdRemoveRequest8runAsyncEv@Base 1.58
- _ZN19QSnapdRemoveRequestC1EiRK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdRemoveRequestC2EiRK7QStringPvP7QObject@Base 1.58
- _ZN19QSnapdRemoveRequestD0Ev@Base 1.58
- _ZN19QSnapdRemoveRequestD1Ev@Base 1.58
- _ZN19QSnapdRemoveRequestD2Ev@Base 1.58
- _ZN19QSnapdWrappedObject11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN19QSnapdWrappedObject11qt_metacastEPKc@Base 1.58
- _ZN19QSnapdWrappedObject16staticMetaObjectE@Base 1.58
- _ZN19QSnapdWrappedObjectD0Ev@Base 1.58
- _ZN19QSnapdWrappedObjectD1Ev@Base 1.58
- _ZN19QSnapdWrappedObjectD2Ev@Base 1.58
- _ZN20QSnapdConnectRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdConnectRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdConnectRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdConnectRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdConnectRequest7runSyncEv@Base 1.58
- _ZN20QSnapdConnectRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdConnectRequestC1EPvP7QObject@Base 1.58
- _ZN20QSnapdConnectRequestC2EPvP7QObject@Base 1.58
- _ZN20QSnapdConnectRequestD0Ev@Base 1.58
- _ZN20QSnapdConnectRequestD1Ev@Base 1.58
- _ZN20QSnapdConnectRequestD2Ev@Base 1.58
- _ZN20QSnapdDisableRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdDisableRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdDisableRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdDisableRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdDisableRequest7runSyncEv@Base 1.58
- _ZN20QSnapdDisableRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdDisableRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdDisableRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdDisableRequestD0Ev@Base 1.58
- _ZN20QSnapdDisableRequestD1Ev@Base 1.58
- _ZN20QSnapdDisableRequestD2Ev@Base 1.58
- _ZN20QSnapdGetAppsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdGetAppsRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdGetAppsRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdGetAppsRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdGetAppsRequest7runSyncEv@Base 1.58
- _ZN20QSnapdGetAppsRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdGetAppsRequestC1EiPvP7QObject@Base 1.58
- _ZN20QSnapdGetAppsRequestC1EiRK11QStringListPvP7QObject@Base 1.58
- _ZN20QSnapdGetAppsRequestC2EiPvP7QObject@Base 1.58
- _ZN20QSnapdGetAppsRequestC2EiRK11QStringListPvP7QObject@Base 1.58
- _ZN20QSnapdGetAppsRequestD0Ev@Base 1.58
- _ZN20QSnapdGetAppsRequestD1Ev@Base 1.58
- _ZN20QSnapdGetAppsRequestD2Ev@Base 1.58
- _ZN20QSnapdGetIconRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdGetIconRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdGetIconRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdGetIconRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdGetIconRequest7runSyncEv@Base 1.58
- _ZN20QSnapdGetIconRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdGetIconRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdGetIconRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdGetIconRequestD0Ev@Base 1.58
- _ZN20QSnapdGetIconRequestD1Ev@Base 1.58
- _ZN20QSnapdGetIconRequestD2Ev@Base 1.58
- _ZN20QSnapdGetSnapRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdGetSnapRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdGetSnapRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdGetSnapRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdGetSnapRequest7runSyncEv@Base 1.58
- _ZN20QSnapdGetSnapRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdGetSnapRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdGetSnapRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdGetSnapRequestD0Ev@Base 1.58
- _ZN20QSnapdGetSnapRequestD1Ev@Base 1.58
- _ZN20QSnapdGetSnapRequestD2Ev@Base 1.58
- _ZN20QSnapdInstallRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdInstallRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdInstallRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdInstallRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdInstallRequest7runSyncEv@Base 1.58
- _ZN20QSnapdInstallRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdInstallRequestC1EiRK7QStringS2_S2_P9QIODevicePvP7QObject@Base 1.58
- _ZN20QSnapdInstallRequestC2EiRK7QStringS2_S2_P9QIODevicePvP7QObject@Base 1.58
- _ZN20QSnapdInstallRequestD0Ev@Base 1.58
- _ZN20QSnapdInstallRequestD1Ev@Base 1.58
- _ZN20QSnapdInstallRequestD2Ev@Base 1.58
- _ZN20QSnapdListOneRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdListOneRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdListOneRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdListOneRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdListOneRequest7runSyncEv@Base 1.58
- _ZN20QSnapdListOneRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdListOneRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdListOneRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN20QSnapdListOneRequestD0Ev@Base 1.58
- _ZN20QSnapdListOneRequestD1Ev@Base 1.58
- _ZN20QSnapdListOneRequestD2Ev@Base 1.58
- _ZN20QSnapdMarkdownParser11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdMarkdownParser11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdMarkdownParser16staticMetaObjectE@Base 1.58
- _ZN20QSnapdMarkdownParserC1ENS_15MarkdownVersionEP7QObject@Base 1.58
- _ZN20QSnapdMarkdownParserC2ENS_15MarkdownVersionEP7QObject@Base 1.58
- _ZN20QSnapdMarkdownParserD0Ev@Base 1.58
- _ZN20QSnapdMarkdownParserD1Ev@Base 1.58
- _ZN20QSnapdMarkdownParserD2Ev@Base 1.58
- _ZN20QSnapdRefreshRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdRefreshRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdRefreshRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdRefreshRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdRefreshRequest7runSyncEv@Base 1.58
- _ZN20QSnapdRefreshRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdRefreshRequestC1ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN20QSnapdRefreshRequestC2ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN20QSnapdRefreshRequestD0Ev@Base 1.58
- _ZN20QSnapdRefreshRequestD1Ev@Base 1.58
- _ZN20QSnapdRefreshRequestD2Ev@Base 1.58
- _ZN20QSnapdUnaliasRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN20QSnapdUnaliasRequest11qt_metacastEPKc@Base 1.58
- _ZN20QSnapdUnaliasRequest12handleResultEPvS0_@Base 1.58
- _ZN20QSnapdUnaliasRequest16staticMetaObjectE@Base 1.58
- _ZN20QSnapdUnaliasRequest7runSyncEv@Base 1.58
- _ZN20QSnapdUnaliasRequest8runAsyncEv@Base 1.58
- _ZN20QSnapdUnaliasRequestC1ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN20QSnapdUnaliasRequestC2ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN20QSnapdUnaliasRequestD0Ev@Base 1.58
- _ZN20QSnapdUnaliasRequestD1Ev@Base 1.58
- _ZN20QSnapdUnaliasRequestD2Ev@Base 1.58
- _ZN21QSnapdCheckBuyRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN21QSnapdCheckBuyRequest11qt_metacastEPKc@Base 1.58
- _ZN21QSnapdCheckBuyRequest12handleResultEPvS0_@Base 1.58
- _ZN21QSnapdCheckBuyRequest16staticMetaObjectE@Base 1.58
- _ZN21QSnapdCheckBuyRequest7runSyncEv@Base 1.58
- _ZN21QSnapdCheckBuyRequest8runAsyncEv@Base 1.58
- _ZN21QSnapdCheckBuyRequestC1EPvP7QObject@Base 1.58
- _ZN21QSnapdCheckBuyRequestC2EPvP7QObject@Base 1.58
- _ZN21QSnapdCheckBuyRequestD0Ev@Base 1.58
- _ZN21QSnapdCheckBuyRequestD1Ev@Base 1.58
- _ZN21QSnapdCheckBuyRequestD2Ev@Base 1.58
- _ZN21QSnapdDownloadRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN21QSnapdDownloadRequest11qt_metacastEPKc@Base 1.58
- _ZN21QSnapdDownloadRequest12handleResultEPvS0_@Base 1.58
- _ZN21QSnapdDownloadRequest16staticMetaObjectE@Base 1.58
- _ZN21QSnapdDownloadRequest7runSyncEv@Base 1.58
- _ZN21QSnapdDownloadRequest8runAsyncEv@Base 1.58
- _ZN21QSnapdDownloadRequestC1ERK7QStringS2_S2_PvP7QObject@Base 1.58
- _ZN21QSnapdDownloadRequestC2ERK7QStringS2_S2_PvP7QObject@Base 1.58
- _ZN21QSnapdDownloadRequestD0Ev@Base 1.58
- _ZN21QSnapdDownloadRequestD1Ev@Base 1.58
- _ZN21QSnapdDownloadRequestD2Ev@Base 1.58
- _ZN21QSnapdGetSnapsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN21QSnapdGetSnapsRequest11qt_metacastEPKc@Base 1.58
- _ZN21QSnapdGetSnapsRequest12handleResultEPvS0_@Base 1.58
- _ZN21QSnapdGetSnapsRequest16staticMetaObjectE@Base 1.58
- _ZN21QSnapdGetSnapsRequest7runSyncEv@Base 1.58
- _ZN21QSnapdGetSnapsRequest8runAsyncEv@Base 1.58
- _ZN21QSnapdGetSnapsRequestC1EiRK11QStringListPvP7QObject@Base 1.58
- _ZN21QSnapdGetSnapsRequestC2EiRK11QStringListPvP7QObject@Base 1.58
- _ZN21QSnapdGetSnapsRequestD0Ev@Base 1.58
- _ZN21QSnapdGetSnapsRequestD1Ev@Base 1.58
- _ZN21QSnapdGetSnapsRequestD2Ev@Base 1.58
- _ZN21QSnapdGetUsersRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN21QSnapdGetUsersRequest11qt_metacastEPKc@Base 1.58
- _ZN21QSnapdGetUsersRequest12handleResultEPvS0_@Base 1.58
- _ZN21QSnapdGetUsersRequest16staticMetaObjectE@Base 1.58
- _ZN21QSnapdGetUsersRequest7runSyncEv@Base 1.58
- _ZN21QSnapdGetUsersRequest8runAsyncEv@Base 1.58
- _ZN21QSnapdGetUsersRequestC1EPvP7QObject@Base 1.58
- _ZN21QSnapdGetUsersRequestC2EPvP7QObject@Base 1.58
- _ZN21QSnapdGetUsersRequestD0Ev@Base 1.58
- _ZN21QSnapdGetUsersRequestD1Ev@Base 1.58
- _ZN21QSnapdGetUsersRequestD2Ev@Base 1.58
- _ZN21QSnapdUserInformation11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN21QSnapdUserInformation11qt_metacastEPKc@Base 1.58
- _ZN21QSnapdUserInformation16staticMetaObjectE@Base 1.58
- _ZN21QSnapdUserInformationC1EPvP7QObject@Base 1.58
- _ZN21QSnapdUserInformationC2EPvP7QObject@Base 1.58
- _ZN21QSnapdUserInformationD0Ev@Base 1.58
- _ZN21QSnapdUserInformationD1Ev@Base 1.58
- _ZN21QSnapdUserInformationD2Ev@Base 1.58
- _ZN22QSnapdGetChangeRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN22QSnapdGetChangeRequest11qt_metacastEPKc@Base 1.58
- _ZN22QSnapdGetChangeRequest12handleResultEPvS0_@Base 1.58
- _ZN22QSnapdGetChangeRequest16staticMetaObjectE@Base 1.58
- _ZN22QSnapdGetChangeRequest7runSyncEv@Base 1.58
- _ZN22QSnapdGetChangeRequest8runAsyncEv@Base 1.58
- _ZN22QSnapdGetChangeRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN22QSnapdGetChangeRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN22QSnapdGetChangeRequestD0Ev@Base 1.58
- _ZN22QSnapdGetChangeRequestD1Ev@Base 1.58
- _ZN22QSnapdGetChangeRequestD2Ev@Base 1.58
- _ZN23QSnapdCreateUserRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdCreateUserRequest11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdCreateUserRequest12handleResultEPvS0_@Base 1.58
- _ZN23QSnapdCreateUserRequest16staticMetaObjectE@Base 1.58
- _ZN23QSnapdCreateUserRequest7runSyncEv@Base 1.58
- _ZN23QSnapdCreateUserRequest8runAsyncEv@Base 1.58
- _ZN23QSnapdCreateUserRequestC1ERK7QStringiPvP7QObject@Base 1.58
- _ZN23QSnapdCreateUserRequestC2ERK7QStringiPvP7QObject@Base 1.58
- _ZN23QSnapdCreateUserRequestD0Ev@Base 1.58
- _ZN23QSnapdCreateUserRequestD1Ev@Base 1.58
- _ZN23QSnapdCreateUserRequestD2Ev@Base 1.58
- _ZN23QSnapdGetAliasesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdGetAliasesRequest11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdGetAliasesRequest12handleResultEPvS0_@Base 1.58
- _ZN23QSnapdGetAliasesRequest16staticMetaObjectE@Base 1.58
- _ZN23QSnapdGetAliasesRequest7runSyncEv@Base 1.58
- _ZN23QSnapdGetAliasesRequest8runAsyncEv@Base 1.58
- _ZN23QSnapdGetAliasesRequestC1EPvP7QObject@Base 1.58
- _ZN23QSnapdGetAliasesRequestC2EPvP7QObject@Base 1.58
- _ZN23QSnapdGetAliasesRequestD0Ev@Base 1.58
- _ZN23QSnapdGetAliasesRequestD1Ev@Base 1.58
- _ZN23QSnapdGetAliasesRequestD2Ev@Base 1.58
- _ZN23QSnapdGetChangesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdGetChangesRequest11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdGetChangesRequest12handleResultEPvS0_@Base 1.58
- _ZN23QSnapdGetChangesRequest16staticMetaObjectE@Base 1.58
- _ZN23QSnapdGetChangesRequest7runSyncEv@Base 1.58
- _ZN23QSnapdGetChangesRequest8runAsyncEv@Base 1.58
- _ZN23QSnapdGetChangesRequestC1EiRK7QStringPvP7QObject@Base 1.58
- _ZN23QSnapdGetChangesRequestC2EiRK7QStringPvP7QObject@Base 1.58
- _ZN23QSnapdGetChangesRequestD0Ev@Base 1.58
- _ZN23QSnapdGetChangesRequestD1Ev@Base 1.58
- _ZN23QSnapdGetChangesRequestD2Ev@Base 1.58
- _ZN23QSnapdRefreshAllRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdRefreshAllRequest11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdRefreshAllRequest12handleResultEPvS0_@Base 1.58
- _ZN23QSnapdRefreshAllRequest16staticMetaObjectE@Base 1.58
- _ZN23QSnapdRefreshAllRequest7runSyncEv@Base 1.58
- _ZN23QSnapdRefreshAllRequest8runAsyncEv@Base 1.58
- _ZN23QSnapdRefreshAllRequestC1EPvP7QObject@Base 1.58
- _ZN23QSnapdRefreshAllRequestC2EPvP7QObject@Base 1.58
- _ZN23QSnapdRefreshAllRequestD0Ev@Base 1.58
- _ZN23QSnapdRefreshAllRequestD1Ev@Base 1.58
- _ZN23QSnapdRefreshAllRequestD2Ev@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest12handleResultEPvS0_@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest16staticMetaObjectE@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest7runSyncEv@Base 1.58
- _ZN23QSnapdRunSnapCtlRequest8runAsyncEv@Base 1.58
- _ZN23QSnapdRunSnapCtlRequestC1ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN23QSnapdRunSnapCtlRequestC2ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN23QSnapdRunSnapCtlRequestD0Ev@Base 1.58
- _ZN23QSnapdRunSnapCtlRequestD1Ev@Base 1.58
- _ZN23QSnapdRunSnapCtlRequestD2Ev@Base 1.58
- _ZN23QSnapdSystemInformation11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN23QSnapdSystemInformation11qt_metacastEPKc@Base 1.58
- _ZN23QSnapdSystemInformation16staticMetaObjectE@Base 1.58
- _ZN23QSnapdSystemInformationC1EPvP7QObject@Base 1.58
- _ZN23QSnapdSystemInformationC2EPvP7QObject@Base 1.58
- _ZN23QSnapdSystemInformationD0Ev@Base 1.58
- _ZN23QSnapdSystemInformationD1Ev@Base 1.58
- _ZN23QSnapdSystemInformationD2Ev@Base 1.58
- _ZN24QSnapdAbortChangeRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN24QSnapdAbortChangeRequest11qt_metacastEPKc@Base 1.58
- _ZN24QSnapdAbortChangeRequest12handleResultEPvS0_@Base 1.58
- _ZN24QSnapdAbortChangeRequest16staticMetaObjectE@Base 1.58
- _ZN24QSnapdAbortChangeRequest7runSyncEv@Base 1.58
- _ZN24QSnapdAbortChangeRequest8runAsyncEv@Base 1.58
- _ZN24QSnapdAbortChangeRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN24QSnapdAbortChangeRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN24QSnapdAbortChangeRequestD0Ev@Base 1.58
- _ZN24QSnapdAbortChangeRequestD1Ev@Base 1.58
- _ZN24QSnapdAbortChangeRequestD2Ev@Base 1.58
- _ZN24QSnapdCreateUsersRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN24QSnapdCreateUsersRequest11qt_metacastEPKc@Base 1.58
- _ZN24QSnapdCreateUsersRequest12handleResultEPvS0_@Base 1.58
- _ZN24QSnapdCreateUsersRequest16staticMetaObjectE@Base 1.58
- _ZN24QSnapdCreateUsersRequest7runSyncEv@Base 1.58
- _ZN24QSnapdCreateUsersRequest8runAsyncEv@Base 1.58
- _ZN24QSnapdCreateUsersRequestC1EPvP7QObject@Base 1.58
- _ZN24QSnapdCreateUsersRequestC2EPvP7QObject@Base 1.58
- _ZN24QSnapdCreateUsersRequestD0Ev@Base 1.58
- _ZN24QSnapdCreateUsersRequestD1Ev@Base 1.58
- _ZN24QSnapdCreateUsersRequestD2Ev@Base 1.58
- _ZN24QSnapdGetSectionsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN24QSnapdGetSectionsRequest11qt_metacastEPKc@Base 1.58
- _ZN24QSnapdGetSectionsRequest12handleResultEPvS0_@Base 1.58
- _ZN24QSnapdGetSectionsRequest16staticMetaObjectE@Base 1.58
- _ZN24QSnapdGetSectionsRequest7runSyncEv@Base 1.58
- _ZN24QSnapdGetSectionsRequest8runAsyncEv@Base 1.58
- _ZN24QSnapdGetSectionsRequestC1EPvP7QObject@Base 1.58
- _ZN24QSnapdGetSectionsRequestC2EPvP7QObject@Base 1.58
- _ZN24QSnapdGetSectionsRequestD0Ev@Base 1.58
- _ZN24QSnapdGetSectionsRequestD1Ev@Base 1.58
- _ZN24QSnapdGetSectionsRequestD2Ev@Base 1.58
- _ZN24QSnapdGetSnapConfRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN24QSnapdGetSnapConfRequest11qt_metacastEPKc@Base 1.58
- _ZN24QSnapdGetSnapConfRequest12handleResultEPvS0_@Base 1.58
- _ZN24QSnapdGetSnapConfRequest16staticMetaObjectE@Base 1.58
- _ZN24QSnapdGetSnapConfRequest7runSyncEv@Base 1.58
- _ZN24QSnapdGetSnapConfRequest8runAsyncEv@Base 1.58
- _ZN24QSnapdGetSnapConfRequestC1ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN24QSnapdGetSnapConfRequestC2ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN24QSnapdGetSnapConfRequestD0Ev@Base 1.58
- _ZN24QSnapdGetSnapConfRequestD1Ev@Base 1.58
- _ZN24QSnapdGetSnapConfRequestD2Ev@Base 1.58
- _ZN24QSnapdSetSnapConfRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN24QSnapdSetSnapConfRequest11qt_metacastEPKc@Base 1.58
- _ZN24QSnapdSetSnapConfRequest12handleResultEPvS0_@Base 1.58
- _ZN24QSnapdSetSnapConfRequest16staticMetaObjectE@Base 1.58
- _ZN24QSnapdSetSnapConfRequest7runSyncEv@Base 1.58
- _ZN24QSnapdSetSnapConfRequest8runAsyncEv@Base 1.58
- _ZN24QSnapdSetSnapConfRequestC1ERK7QStringRK5QHashIS0_8QVariantEPvP7QObject@Base 1.58
- _ZN24QSnapdSetSnapConfRequestC2ERK7QStringRK5QHashIS0_8QVariantEPvP7QObject@Base 1.58
- _ZN24QSnapdSetSnapConfRequestD0Ev@Base 1.58
- _ZN24QSnapdSetSnapConfRequestD1Ev@Base 1.58
- _ZN24QSnapdSetSnapConfRequestD2Ev@Base 1.58
- _ZN25QSnapdResetAliasesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN25QSnapdResetAliasesRequest11qt_metacastEPKc@Base 1.58
- _ZN25QSnapdResetAliasesRequest12handleResultEPvS0_@Base 1.58
- _ZN25QSnapdResetAliasesRequest16staticMetaObjectE@Base 1.58
- _ZN25QSnapdResetAliasesRequest7runSyncEv@Base 1.58
- _ZN25QSnapdResetAliasesRequest8runAsyncEv@Base 1.58
- _ZN25QSnapdResetAliasesRequestC1ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN25QSnapdResetAliasesRequestC2ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN25QSnapdResetAliasesRequestD0Ev@Base 1.58
- _ZN25QSnapdResetAliasesRequestD1Ev@Base 1.58
- _ZN25QSnapdResetAliasesRequestD2Ev@Base 1.58
- _ZN26QSnapdAddAssertionsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN26QSnapdAddAssertionsRequest11qt_metacastEPKc@Base 1.58
- _ZN26QSnapdAddAssertionsRequest12handleResultEPvS0_@Base 1.58
- _ZN26QSnapdAddAssertionsRequest16staticMetaObjectE@Base 1.58
- _ZN26QSnapdAddAssertionsRequest7runSyncEv@Base 1.58
- _ZN26QSnapdAddAssertionsRequest8runAsyncEv@Base 1.58
- _ZN26QSnapdAddAssertionsRequestC1ERK11QStringListPvP7QObject@Base 1.58
- _ZN26QSnapdAddAssertionsRequestC2ERK11QStringListPvP7QObject@Base 1.58
- _ZN26QSnapdAddAssertionsRequestD0Ev@Base 1.58
- _ZN26QSnapdAddAssertionsRequestD1Ev@Base 1.58
- _ZN26QSnapdAddAssertionsRequestD2Ev@Base 1.58
- _ZN26QSnapdEnableAliasesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN26QSnapdEnableAliasesRequest11qt_metacastEPKc@Base 1.58
- _ZN26QSnapdEnableAliasesRequest12handleResultEPvS0_@Base 1.58
- _ZN26QSnapdEnableAliasesRequest16staticMetaObjectE@Base 1.58
- _ZN26QSnapdEnableAliasesRequest7runSyncEv@Base 1.58
- _ZN26QSnapdEnableAliasesRequest8runAsyncEv@Base 1.58
- _ZN26QSnapdEnableAliasesRequestC1ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN26QSnapdEnableAliasesRequestC2ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN26QSnapdEnableAliasesRequestD0Ev@Base 1.58
- _ZN26QSnapdEnableAliasesRequestD1Ev@Base 1.58
- _ZN26QSnapdEnableAliasesRequestD2Ev@Base 1.58
- _ZN26QSnapdGetAssertionsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN26QSnapdGetAssertionsRequest11qt_metacastEPKc@Base 1.58
- _ZN26QSnapdGetAssertionsRequest12handleResultEPvS0_@Base 1.58
- _ZN26QSnapdGetAssertionsRequest16staticMetaObjectE@Base 1.58
- _ZN26QSnapdGetAssertionsRequest7runSyncEv@Base 1.58
- _ZN26QSnapdGetAssertionsRequest8runAsyncEv@Base 1.58
- _ZN26QSnapdGetAssertionsRequestC1ERK7QStringPvP7QObject@Base 1.58
- _ZN26QSnapdGetAssertionsRequestC2ERK7QStringPvP7QObject@Base 1.58
- _ZN26QSnapdGetAssertionsRequestD0Ev@Base 1.58
- _ZN26QSnapdGetAssertionsRequestD1Ev@Base 1.58
- _ZN26QSnapdGetAssertionsRequestD2Ev@Base 1.58
- _ZN26QSnapdGetInterfacesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN26QSnapdGetInterfacesRequest11qt_metacastEPKc@Base 1.58
- _ZN26QSnapdGetInterfacesRequest12handleResultEPvS0_@Base 1.58
- _ZN26QSnapdGetInterfacesRequest16staticMetaObjectE@Base 1.58
- _ZN26QSnapdGetInterfacesRequest7runSyncEv@Base 1.58
- _ZN26QSnapdGetInterfacesRequest8runAsyncEv@Base 1.58
- _ZN26QSnapdGetInterfacesRequestC1EPvP7QObject@Base 1.58
- _ZN26QSnapdGetInterfacesRequestC2EPvP7QObject@Base 1.58
- _ZN26QSnapdGetInterfacesRequestD0Ev@Base 1.58
- _ZN26QSnapdGetInterfacesRequestD1Ev@Base 1.58
- _ZN26QSnapdGetInterfacesRequestD2Ev@Base 1.58
- _ZN26QSnapdSwitchChannelRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN26QSnapdSwitchChannelRequest11qt_metacastEPKc@Base 1.58
- _ZN26QSnapdSwitchChannelRequest12handleResultEPvS0_@Base 1.58
- _ZN26QSnapdSwitchChannelRequest16staticMetaObjectE@Base 1.58
- _ZN26QSnapdSwitchChannelRequest7runSyncEv@Base 1.58
- _ZN26QSnapdSwitchChannelRequest8runAsyncEv@Base 1.58
- _ZN26QSnapdSwitchChannelRequestC1ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN26QSnapdSwitchChannelRequestC2ERK7QStringS2_PvP7QObject@Base 1.58
- _ZN26QSnapdSwitchChannelRequestD0Ev@Base 1.58
- _ZN26QSnapdSwitchChannelRequestD1Ev@Base 1.58
- _ZN26QSnapdSwitchChannelRequestD2Ev@Base 1.58
- _ZN27QSnapdDisableAliasesRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN27QSnapdDisableAliasesRequest11qt_metacastEPKc@Base 1.58
- _ZN27QSnapdDisableAliasesRequest12handleResultEPvS0_@Base 1.58
- _ZN27QSnapdDisableAliasesRequest16staticMetaObjectE@Base 1.58
- _ZN27QSnapdDisableAliasesRequest7runSyncEv@Base 1.58
- _ZN27QSnapdDisableAliasesRequest8runAsyncEv@Base 1.58
- _ZN27QSnapdDisableAliasesRequestC1ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN27QSnapdDisableAliasesRequestC2ERK7QStringRK11QStringListPvP7QObject@Base 1.58
- _ZN27QSnapdDisableAliasesRequestD0Ev@Base 1.58
- _ZN27QSnapdDisableAliasesRequestD1Ev@Base 1.58
- _ZN27QSnapdDisableAliasesRequestD2Ev@Base 1.58
- _ZN27QSnapdGetConnectionsRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN27QSnapdGetConnectionsRequest11qt_metacastEPKc@Base 1.58
- _ZN27QSnapdGetConnectionsRequest12handleResultEPvS0_@Base 1.58
- _ZN27QSnapdGetConnectionsRequest16staticMetaObjectE@Base 1.58
- _ZN27QSnapdGetConnectionsRequest7runSyncEv@Base 1.58
- _ZN27QSnapdGetConnectionsRequest8runAsyncEv@Base 1.58
- _ZN27QSnapdGetConnectionsRequestC1EiRK7QStringS2_PvP7QObject@Base 1.58
- _ZN27QSnapdGetConnectionsRequestC2EiRK7QStringS2_PvP7QObject@Base 1.58
- _ZN27QSnapdGetConnectionsRequestD0Ev@Base 1.58
- _ZN27QSnapdGetConnectionsRequestD1Ev@Base 1.58
- _ZN27QSnapdGetConnectionsRequestD2Ev@Base 1.58
- _ZN27QSnapdGetInterfaces2Request11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN27QSnapdGetInterfaces2Request11qt_metacastEPKc@Base 1.58
- _ZN27QSnapdGetInterfaces2Request12handleResultEPvS0_@Base 1.58
- _ZN27QSnapdGetInterfaces2Request16staticMetaObjectE@Base 1.58
- _ZN27QSnapdGetInterfaces2Request7runSyncEv@Base 1.58
- _ZN27QSnapdGetInterfaces2Request8runAsyncEv@Base 1.58
- _ZN27QSnapdGetInterfaces2RequestC1EiRK11QStringListPvP7QObject@Base 1.58
- _ZN27QSnapdGetInterfaces2RequestC2EiRK11QStringListPvP7QObject@Base 1.58
- _ZN27QSnapdGetInterfaces2RequestD0Ev@Base 1.58
- _ZN27QSnapdGetInterfaces2RequestD1Ev@Base 1.58
- _ZN27QSnapdGetInterfaces2RequestD2Ev@Base 1.58
- _ZN27QSnapdInstallRequestPrivate11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN27QSnapdInstallRequestPrivate11qt_metacastEPKc@Base 1.58
- _ZN27QSnapdInstallRequestPrivate16staticMetaObjectE@Base 1.58
- _ZN27QSnapdInstallRequestPrivateD0Ev@Base 1.58
- _ZN27QSnapdInstallRequestPrivateD1Ev@Base 1.58
- _ZN27QSnapdInstallRequestPrivateD2Ev@Base 1.58
- _ZN28QSnapdFindRefreshableRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN28QSnapdFindRefreshableRequest11qt_metacastEPKc@Base 1.58
- _ZN28QSnapdFindRefreshableRequest12handleResultEPvS0_@Base 1.58
- _ZN28QSnapdFindRefreshableRequest16staticMetaObjectE@Base 1.58
- _ZN28QSnapdFindRefreshableRequest7runSyncEv@Base 1.58
- _ZN28QSnapdFindRefreshableRequest8runAsyncEv@Base 1.58
- _ZN28QSnapdFindRefreshableRequestC1EPvP7QObject@Base 1.58
- _ZN28QSnapdFindRefreshableRequestC2EPvP7QObject@Base 1.58
- _ZN28QSnapdFindRefreshableRequestD0Ev@Base 1.58
- _ZN28QSnapdFindRefreshableRequestD1Ev@Base 1.58
- _ZN28QSnapdFindRefreshableRequestD2Ev@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest11qt_metacastEPKc@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest12handleResultEPvS0_@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest16staticMetaObjectE@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest7runSyncEv@Base 1.58
- _ZN29QSnapdConnectInterfaceRequest8runAsyncEv@Base 1.58
- _ZN29QSnapdConnectInterfaceRequestC1ERK7QStringS2_S2_S2_PvP7QObject@Base 1.58
- _ZN29QSnapdConnectInterfaceRequestC2ERK7QStringS2_S2_S2_PvP7QObject@Base 1.58
- _ZN29QSnapdConnectInterfaceRequestD0Ev@Base 1.58
- _ZN29QSnapdConnectInterfaceRequestD1Ev@Base 1.58
- _ZN29QSnapdConnectInterfaceRequestD2Ev@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest11qt_metacastEPKc@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest12handleResultEPvS0_@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest16staticMetaObjectE@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest7runSyncEv@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequest8runAsyncEv@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequestC1ERK7QStringS2_S2_S2_PvP7QObject@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequestC2ERK7QStringS2_S2_S2_PvP7QObject@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequestD0Ev@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequestD1Ev@Base 1.58
- _ZN32QSnapdDisconnectInterfaceRequestD2Ev@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest11qt_metacastEPKc@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest12handleResultEPvS0_@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest16staticMetaObjectE@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest17systemInformationEv@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest7runSyncEv@Base 1.58
- _ZN33QSnapdGetSystemInformationRequest8runAsyncEv@Base 1.58
- _ZN33QSnapdGetSystemInformationRequestC1EPvP7QObject@Base 1.58
- _ZN33QSnapdGetSystemInformationRequestC2EPvP7QObject@Base 1.58
- _ZN33QSnapdGetSystemInformationRequestD0Ev@Base 1.58
- _ZN33QSnapdGetSystemInformationRequestD1Ev@Base 1.58
- _ZN33QSnapdGetSystemInformationRequestD2Ev@Base 1.58
-#MISSING: 1.59-1# (optional=templinst)_ZN4QMapI7QString8QVariantEC1ERKS2_@Base 1.58
-#MISSING: 1.59-1# (optional=templinst)_ZN4QMapI7QString8QVariantEC2ERKS2_@Base 1.58
- (optional=templinst)_ZN4QMapI7QString8QVariantED1Ev@Base 1.58
- (optional=templinst)_ZN4QMapI7QString8QVariantED2Ev@Base 1.58
- (optional=templinst)_ZN5QHashI7QString11QStringListE11deleteNode2EPN9QHashData4NodeE@Base 1.58
- (optional=templinst)_ZN5QHashI7QString11QStringListE13duplicateNodeEPN9QHashData4NodeEPv@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN5QHashI7QString11QStringListED1Ev@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN5QHashI7QString11QStringListED2Ev@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantE11deleteNode2EPN9QHashData4NodeE@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantE13detach_helperEv@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantE13duplicateNodeEPN9QHashData4NodeEPv@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantE6insertERKS0_RKS1_@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantED1Ev@Base 1.58
- (optional=templinst)_ZN5QHashI7QString8QVariantED2Ev@Base 1.58
- (optional=templinst)_ZN5QListI18QSnapdMarkdownNodeE18detach_helper_growEii@Base 1.58
- (optional=templinst)_ZN5QListI18QSnapdMarkdownNodeE6appendERKS0_@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN5QListI18QSnapdMarkdownNodeED1Ev@Base 1.58
-#MISSING: 1.59-1# (optional=templinst|arch=amd64)_ZN5QListI18QSnapdMarkdownNodeED2Ev@Base 1.58
- (optional=templinst)_ZN5QListI7QStringE18detach_helper_growEii@Base 1.58
- (optional=templinst)_ZN5QListI7QStringE6appendERKS0_@Base 1.58
- (optional=templinst)_ZN5QListI7QStringEC1ERKS1_@Base 1.58
- (optional=templinst)_ZN5QListI7QStringEC2ERKS1_@Base 1.58
- (optional=templinst)_ZN5QListI7QStringED1Ev@Base 1.58
- (optional=templinst)_ZN5QListI7QStringED2Ev@Base 1.58
- (optional=templinst)_ZN5QListI8QVariantE13detach_helperEi@Base 1.58
- (optional=templinst)_ZN5QListI8QVariantE18detach_helper_growEii@Base 1.58
- (optional=templinst)_ZN5QListI8QVariantE6appendERKS0_@Base 1.58
- (optional=templinst)_ZN5QListI8QVariantED1Ev@Base 1.58
- (optional=templinst)_ZN5QListI8QVariantED2Ev@Base 1.58
- (arch=!amd64 !arm64 !hppa !x32)_ZN7QStringC1ERKS_@Base 1.59
- (arch=!amd64 !arm64 !hppa !x32)_ZN7QStringC2ERKS_@Base 1.59
- _ZN7QStringD1Ev@Base 1.58
- _ZN7QStringD2Ev@Base 1.58
- (optional=templinst)_ZN8QMapNodeI7QString8QVariantE14destroySubTreeEv@Base 1.58
- _ZN9QSnapdApp11qt_metacallEN11QMetaObject4CallEiPPv@Base 1.58
- _ZN9QSnapdApp11qt_metacastEPKc@Base 1.58
- _ZN9QSnapdApp16staticMetaObjectE@Base 1.58
- _ZN9QSnapdAppC1EPvP7QObject@Base 1.58
- _ZN9QSnapdAppC2EPvP7QObject@Base 1.58
- _ZN9QSnapdAppD0Ev@Base 1.58
- _ZN9QSnapdAppD1Ev@Base 1.58
- _ZN9QSnapdAppD2Ev@Base 1.58
- _ZNK10QSnapdIcon10metaObjectEv@Base 1.58
- _ZNK10QSnapdIcon4dataEv@Base 1.58
- _ZNK10QSnapdIcon8mimeTypeEv@Base 1.58
- _ZNK10QSnapdPlug10connectionEi@Base 1.58
- _ZNK10QSnapdPlug10metaObjectEv@Base 1.58
- _ZNK10QSnapdPlug12hasAttributeERK7QString@Base 1.58
- _ZNK10QSnapdPlug13connectedSlotEi@Base 1.58
- _ZNK10QSnapdPlug14attributeNamesEv@Base 1.58
- _ZNK10QSnapdPlug15connectionCountEv@Base 1.58
- _ZNK10QSnapdPlug18connectedSlotCountEv@Base 1.58
- _ZNK10QSnapdPlug4nameEv@Base 1.58
- _ZNK10QSnapdPlug4snapEv@Base 1.58
- _ZNK10QSnapdPlug5labelEv@Base 1.58
- _ZNK10QSnapdPlug9attributeERK7QString@Base 1.58
- _ZNK10QSnapdPlug9interfaceEv@Base 1.58
- _ZNK10QSnapdSlot10connectionEi@Base 1.58
- _ZNK10QSnapdSlot10metaObjectEv@Base 1.58
- _ZNK10QSnapdSlot12hasAttributeERK7QString@Base 1.58
- _ZNK10QSnapdSlot13connectedPlugEi@Base 1.58
- _ZNK10QSnapdSlot14attributeNamesEv@Base 1.58
- _ZNK10QSnapdSlot15connectionCountEv@Base 1.58
- _ZNK10QSnapdSlot18connectedPlugCountEv@Base 1.58
- _ZNK10QSnapdSlot4nameEv@Base 1.58
- _ZNK10QSnapdSlot4snapEv@Base 1.58
- _ZNK10QSnapdSlot5labelEv@Base 1.58
- _ZNK10QSnapdSlot9attributeERK7QString@Base 1.58
- _ZNK10QSnapdSlot9interfaceEv@Base 1.58
- _ZNK10QSnapdSnap10mediaCountEv@Base 1.58
- _ZNK10QSnapdSnap10metaObjectEv@Base 1.58
- _ZNK10QSnapdSnap10priceCountEv@Base 1.58
- _ZNK10QSnapdSnap10screenshotEi@Base 1.58
- _ZNK10QSnapdSnap11confinementEv@Base 1.58
- _ZNK10QSnapdSnap11descriptionEv@Base 1.58
- _ZNK10QSnapdSnap11installDateEv@Base 1.58
- _ZNK10QSnapdSnap11mountedFromEv@Base 1.58
- _ZNK10QSnapdSnap11publisherIdEv@Base 1.58
- _ZNK10QSnapdSnap12channelCountEv@Base 1.58
- _ZNK10QSnapdSnap12downloadSizeEv@Base 1.58
- _ZNK10QSnapdSnap12matchChannelERK7QString@Base 1.58
- _ZNK10QSnapdSnap13installedSizeEv@Base 1.58
- _ZNK10QSnapdSnap15screenshotCountEv@Base 1.58
- _ZNK10QSnapdSnap15trackingChannelEv@Base 1.58
- _ZNK10QSnapdSnap17publisherUsernameEv@Base 1.58
- _ZNK10QSnapdSnap19publisherValidationEv@Base 1.58
- _ZNK10QSnapdSnap20publisherDisplayNameEv@Base 1.58
- _ZNK10QSnapdSnap2idEv@Base 1.58
- _ZNK10QSnapdSnap3appEi@Base 1.58
- _ZNK10QSnapdSnap4baseEv@Base 1.58
- _ZNK10QSnapdSnap4iconEv@Base 1.58
- _ZNK10QSnapdSnap4nameEv@Base 1.58
- _ZNK10QSnapdSnap5mediaEi@Base 1.58
- _ZNK10QSnapdSnap5priceEi@Base 1.58
- _ZNK10QSnapdSnap5titleEv@Base 1.58
- _ZNK10QSnapdSnap6brokenEv@Base 1.58
- _ZNK10QSnapdSnap6statusEv@Base 1.58
- _ZNK10QSnapdSnap6tracksEv@Base 1.58
- _ZNK10QSnapdSnap7channelEi@Base 1.58
- _ZNK10QSnapdSnap7channelEv@Base 1.58
- _ZNK10QSnapdSnap7contactEv@Base 1.58
- _ZNK10QSnapdSnap7devmodeEv@Base 1.58
- _ZNK10QSnapdSnap7licenseEv@Base 1.58
- _ZNK10QSnapdSnap7summaryEv@Base 1.58
- _ZNK10QSnapdSnap7trymodeEv@Base 1.58
- _ZNK10QSnapdSnap7versionEv@Base 1.58
- _ZNK10QSnapdSnap7websiteEv@Base 1.58
- _ZNK10QSnapdSnap8appCountEv@Base 1.58
- _ZNK10QSnapdSnap8jailmodeEv@Base 1.58
- _ZNK10QSnapdSnap8revisionEv@Base 1.58
- _ZNK10QSnapdSnap8snapTypeEv@Base 1.58
- _ZNK10QSnapdSnap9commonIdsEv@Base 1.58
- _ZNK10QSnapdSnap9developerEv@Base 1.58
- _ZNK10QSnapdSnap9isPrivateEv@Base 1.58
- _ZNK10QSnapdTask10metaObjectEv@Base 1.58
- _ZNK10QSnapdTask12progressDoneEv@Base 1.58
- _ZNK10QSnapdTask13progressLabelEv@Base 1.58
- _ZNK10QSnapdTask13progressTotalEv@Base 1.58
- _ZNK10QSnapdTask2idEv@Base 1.58
- _ZNK10QSnapdTask4kindEv@Base 1.58
- _ZNK10QSnapdTask6statusEv@Base 1.58
- _ZNK10QSnapdTask7summaryEv@Base 1.58
- _ZNK10QSnapdTask9readyTimeEv@Base 1.58
- _ZNK10QSnapdTask9spawnTimeEv@Base 1.58
- _ZNK11QSnapdAlias10metaObjectEv@Base 1.58
- _ZNK11QSnapdAlias3appEv@Base 1.58
- _ZNK11QSnapdAlias4nameEv@Base 1.58
- _ZNK11QSnapdAlias4snapEv@Base 1.58
- _ZNK11QSnapdAlias6statusEv@Base 1.58
- _ZNK11QSnapdAlias7appAutoEv@Base 1.58
- _ZNK11QSnapdAlias7commandEv@Base 1.58
- _ZNK11QSnapdAlias9appManualEv@Base 1.58
- _ZNK11QSnapdEnums10metaObjectEv@Base 1.58
- _ZNK11QSnapdMedia10metaObjectEv@Base 1.58
- _ZNK11QSnapdMedia3urlEv@Base 1.58
- _ZNK11QSnapdMedia4typeEv@Base 1.58
- _ZNK11QSnapdMedia5widthEv@Base 1.58
- _ZNK11QSnapdMedia6heightEv@Base 1.58
- _ZNK11QSnapdPrice10metaObjectEv@Base 1.58
- _ZNK11QSnapdPrice6amountEv@Base 1.58
- _ZNK11QSnapdPrice8currencyEv@Base 1.58
- _ZNK12QSnapdChange10metaObjectEv@Base 1.58
- _ZNK12QSnapdChange2idEv@Base 1.58
- _ZNK12QSnapdChange4kindEv@Base 1.58
- _ZNK12QSnapdChange4taskEi@Base 1.58
- _ZNK12QSnapdChange5errorEv@Base 1.58
- _ZNK12QSnapdChange5readyEv@Base 1.58
- _ZNK12QSnapdChange6statusEv@Base 1.58
- _ZNK12QSnapdChange7summaryEv@Base 1.58
- _ZNK12QSnapdChange9readyTimeEv@Base 1.58
- _ZNK12QSnapdChange9spawnTimeEv@Base 1.58
- _ZNK12QSnapdChange9taskCountEv@Base 1.58
- _ZNK12QSnapdClient10metaObjectEv@Base 1.58
- _ZNK12QSnapdClient10socketPathEv@Base 1.58
- _ZNK12QSnapdClient11maintenanceEv@Base 1.58
- _ZNK12QSnapdClient16allowInteractionEv@Base 1.58
- _ZNK12QSnapdClient9userAgentEv@Base 1.58
- _ZNK13QSnapdChannel10metaObjectEv@Base 1.58
- _ZNK13QSnapdChannel10releasedAtEv@Base 1.58
- _ZNK13QSnapdChannel11confinementEv@Base 1.58
- _ZNK13QSnapdChannel4nameEv@Base 1.58
- _ZNK13QSnapdChannel4riskEv@Base 1.58
- _ZNK13QSnapdChannel4sizeEv@Base 1.58
- _ZNK13QSnapdChannel5epochEv@Base 1.58
- _ZNK13QSnapdChannel5trackEv@Base 1.58
- _ZNK13QSnapdChannel6branchEv@Base 1.58
- _ZNK13QSnapdChannel7versionEv@Base 1.58
- _ZNK13QSnapdChannel8revisionEv@Base 1.58
- _ZNK13QSnapdPlugRef10metaObjectEv@Base 1.58
- _ZNK13QSnapdPlugRef4plugEv@Base 1.58
- _ZNK13QSnapdPlugRef4snapEv@Base 1.58
- _ZNK13QSnapdRequest10isFinishedEv@Base 1.58
- _ZNK13QSnapdRequest10metaObjectEv@Base 1.58
- _ZNK13QSnapdRequest11errorStringEv@Base 1.58
- _ZNK13QSnapdRequest14getCancellableEv@Base 1.58
- _ZNK13QSnapdRequest5errorEv@Base 1.58
- _ZNK13QSnapdRequest6changeEv@Base 1.58
- _ZNK13QSnapdRequest9getClientEv@Base 1.58
- _ZNK13QSnapdSlotRef10metaObjectEv@Base 1.58
- _ZNK13QSnapdSlotRef4slotEv@Base 1.58
- _ZNK13QSnapdSlotRef4snapEv@Base 1.58
- _ZNK14QSnapdAuthData10dischargesEv@Base 1.58
- _ZNK14QSnapdAuthData10metaObjectEv@Base 1.58
- _ZNK14QSnapdAuthData8macaroonEv@Base 1.58
- _ZNK15QSnapdAssertion10metaObjectEv@Base 1.58
- _ZNK15QSnapdAssertion4bodyEv@Base 1.58
- _ZNK15QSnapdAssertion6headerERK7QString@Base 1.58
- _ZNK15QSnapdAssertion7headersEv@Base 1.58
- _ZNK15QSnapdAssertion9signatureEv@Base 1.58
- _ZNK15QSnapdInterface10metaObjectEv@Base 1.58
- _ZNK15QSnapdInterface4nameEv@Base 1.58
- _ZNK15QSnapdInterface4plugEi@Base 1.58
- _ZNK15QSnapdInterface4slotEi@Base 1.58
- _ZNK15QSnapdInterface6docUrlEv@Base 1.58
- _ZNK15QSnapdInterface7summaryEv@Base 1.58
- _ZNK15QSnapdInterface9makeLabelEv@Base 1.58
- _ZNK15QSnapdInterface9plugCountEv@Base 1.58
- _ZNK15QSnapdInterface9slotCountEv@Base 1.58
- _ZNK16QSnapdBuyRequest10metaObjectEv@Base 1.58
- _ZNK16QSnapdConnection10metaObjectEv@Base 1.58
- _ZNK16QSnapdConnection13plugAttributeERK7QString@Base 1.58
- _ZNK16QSnapdConnection13slotAttributeERK7QString@Base 1.58
- _ZNK16QSnapdConnection16hasPlugAttributeERK7QString@Base 1.58
- _ZNK16QSnapdConnection16hasSlotAttributeERK7QString@Base 1.58
- _ZNK16QSnapdConnection18plugAttributeNamesEv@Base 1.58
- _ZNK16QSnapdConnection18slotAttributeNamesEv@Base 1.58
- _ZNK16QSnapdConnection4nameEv@Base 1.58
- _ZNK16QSnapdConnection4plugEv@Base 1.58
- _ZNK16QSnapdConnection4slotEv@Base 1.58
- _ZNK16QSnapdConnection4snapEv@Base 1.58
- _ZNK16QSnapdConnection6gadgetEv@Base 1.58
- _ZNK16QSnapdConnection6manualEv@Base 1.58
- _ZNK16QSnapdConnection9interfaceEv@Base 1.58
- _ZNK16QSnapdScreenshot10metaObjectEv@Base 1.58
- _ZNK16QSnapdScreenshot3urlEv@Base 1.58
- _ZNK16QSnapdScreenshot5widthEv@Base 1.58
- _ZNK16QSnapdScreenshot6heightEv@Base 1.58
- _ZNK16QSnapdTryRequest10metaObjectEv@Base 1.58
- _ZNK17QSnapdFindRequest10metaObjectEv@Base 1.58
- _ZNK17QSnapdFindRequest17suggestedCurrencyEv@Base 1.58
- _ZNK17QSnapdFindRequest4snapEi@Base 1.58
- _ZNK17QSnapdFindRequest9snapCountEv@Base 1.58
- _ZNK17QSnapdListRequest10metaObjectEv@Base 1.58
- _ZNK17QSnapdListRequest4snapEi@Base 1.58
- _ZNK17QSnapdListRequest9snapCountEv@Base 1.58
- _ZNK17QSnapdMaintenance10metaObjectEv@Base 1.58
- _ZNK17QSnapdMaintenance4kindEv@Base 1.58
- _ZNK17QSnapdMaintenance7messageEv@Base 1.58
- _ZNK18QSnapdAliasRequest10metaObjectEv@Base 1.58
- _ZNK18QSnapdLoginRequest10metaObjectEv@Base 1.58
- _ZNK18QSnapdMarkdownNode10childCountEv@Base 1.58
- _ZNK18QSnapdMarkdownNode10metaObjectEv@Base 1.58
- _ZNK18QSnapdMarkdownNode4textEv@Base 1.58
- _ZNK18QSnapdMarkdownNode4typeEv@Base 1.58
- _ZNK18QSnapdMarkdownNode5childEi@Base 1.58
- _ZNK19QSnapdEnableRequest10metaObjectEv@Base 1.58
- _ZNK19QSnapdLogoutRequest10metaObjectEv@Base 1.58
- _ZNK19QSnapdPreferRequest10metaObjectEv@Base 1.58
- _ZNK19QSnapdRemoveRequest10metaObjectEv@Base 1.58
- _ZNK19QSnapdWrappedObject10metaObjectEv@Base 1.58
- _ZNK20QSnapdConnectRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdDisableRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdGetAppsRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdGetAppsRequest3appEi@Base 1.58
- _ZNK20QSnapdGetAppsRequest8appCountEv@Base 1.58
- _ZNK20QSnapdGetIconRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdGetIconRequest4iconEv@Base 1.58
- _ZNK20QSnapdGetSnapRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdGetSnapRequest4snapEv@Base 1.58
- _ZNK20QSnapdInstallRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdListOneRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdListOneRequest4snapEv@Base 1.58
- _ZNK20QSnapdMarkdownParser10metaObjectEv@Base 1.58
- _ZNK20QSnapdMarkdownParser18preserveWhitespaceEv@Base 1.58
- _ZNK20QSnapdMarkdownParser21setPreserveWhitespaceEb@Base 1.58
- _ZNK20QSnapdMarkdownParser5parseERK7QString@Base 1.58
- _ZNK20QSnapdRefreshRequest10metaObjectEv@Base 1.58
- _ZNK20QSnapdUnaliasRequest10metaObjectEv@Base 1.58
- _ZNK21QSnapdCheckBuyRequest10metaObjectEv@Base 1.58
- _ZNK21QSnapdCheckBuyRequest6canBuyEv@Base 1.58
- _ZNK21QSnapdDownloadRequest10metaObjectEv@Base 1.58
- _ZNK21QSnapdDownloadRequest4dataEv@Base 1.58
- _ZNK21QSnapdGetSnapsRequest10metaObjectEv@Base 1.58
- _ZNK21QSnapdGetSnapsRequest4snapEi@Base 1.58
- _ZNK21QSnapdGetSnapsRequest9snapCountEv@Base 1.58
- _ZNK21QSnapdGetUsersRequest10metaObjectEv@Base 1.58
- _ZNK21QSnapdGetUsersRequest15userInformationEi@Base 1.58
- _ZNK21QSnapdGetUsersRequest20userInformationCountEv@Base 1.58
- _ZNK21QSnapdUserInformation10metaObjectEv@Base 1.58
- _ZNK21QSnapdUserInformation2idEv@Base 1.58
- _ZNK21QSnapdUserInformation5emailEv@Base 1.58
- _ZNK21QSnapdUserInformation7sshKeysEv@Base 1.58
- _ZNK21QSnapdUserInformation8authDataEv@Base 1.58
- _ZNK21QSnapdUserInformation8usernameEv@Base 1.58
- _ZNK22QSnapdGetChangeRequest10metaObjectEv@Base 1.58
- _ZNK22QSnapdGetChangeRequest6changeEv@Base 1.58
- _ZNK23QSnapdCreateUserRequest10metaObjectEv@Base 1.58
- _ZNK23QSnapdCreateUserRequest15userInformationEv@Base 1.58
- _ZNK23QSnapdGetAliasesRequest10aliasCountEv@Base 1.58
- _ZNK23QSnapdGetAliasesRequest10metaObjectEv@Base 1.58
- _ZNK23QSnapdGetAliasesRequest5aliasEi@Base 1.58
- _ZNK23QSnapdGetChangesRequest10metaObjectEv@Base 1.58
- _ZNK23QSnapdGetChangesRequest11changeCountEv@Base 1.58
- _ZNK23QSnapdGetChangesRequest6changeEi@Base 1.58
- _ZNK23QSnapdRefreshAllRequest10metaObjectEv@Base 1.58
- _ZNK23QSnapdRefreshAllRequest9snapNamesEv@Base 1.58
- _ZNK23QSnapdRunSnapCtlRequest10metaObjectEv@Base 1.58
- _ZNK23QSnapdRunSnapCtlRequest6stderrEv@Base 1.58
- _ZNK23QSnapdRunSnapCtlRequest6stdoutEv@Base 1.58
- _ZNK23QSnapdRunSnapCtlRequest8exitCodeEv@Base 1.59
- _ZNK23QSnapdSystemInformation10metaObjectEv@Base 1.58
- _ZNK23QSnapdSystemInformation11confinementEv@Base 1.58
- _ZNK23QSnapdSystemInformation11refreshHoldEv@Base 1.58
- _ZNK23QSnapdSystemInformation11refreshLastEv@Base 1.58
- _ZNK23QSnapdSystemInformation11refreshNextEv@Base 1.58
- _ZNK23QSnapdSystemInformation12refreshTimerEv@Base 1.58
- _ZNK23QSnapdSystemInformation13kernelVersionEv@Base 1.58
- _ZNK23QSnapdSystemInformation14mountDirectoryEv@Base 1.58
- _ZNK23QSnapdSystemInformation15refreshScheduleEv@Base 1.58
- _ZNK23QSnapdSystemInformation15sandboxFeaturesEv@Base 1.58
- _ZNK23QSnapdSystemInformation17binariesDirectoryEv@Base 1.58
- _ZNK23QSnapdSystemInformation4osIdEv@Base 1.58
- _ZNK23QSnapdSystemInformation5storeEv@Base 1.58
- _ZNK23QSnapdSystemInformation6seriesEv@Base 1.58
- _ZNK23QSnapdSystemInformation7buildIdEv@Base 1.58
- _ZNK23QSnapdSystemInformation7managedEv@Base 1.58
- _ZNK23QSnapdSystemInformation7versionEv@Base 1.58
- _ZNK23QSnapdSystemInformation9onClassicEv@Base 1.58
- _ZNK23QSnapdSystemInformation9osVersionEv@Base 1.58
- _ZNK24QSnapdAbortChangeRequest10metaObjectEv@Base 1.58
- _ZNK24QSnapdAbortChangeRequest6changeEv@Base 1.58
- _ZNK24QSnapdCreateUsersRequest10metaObjectEv@Base 1.58
- _ZNK24QSnapdCreateUsersRequest15userInformationEi@Base 1.58
- _ZNK24QSnapdCreateUsersRequest20userInformationCountEv@Base 1.58
- _ZNK24QSnapdGetSectionsRequest10metaObjectEv@Base 1.58
- _ZNK24QSnapdGetSectionsRequest8sectionsEv@Base 1.58
- _ZNK24QSnapdGetSnapConfRequest10metaObjectEv@Base 1.58
- _ZNK24QSnapdGetSnapConfRequest13configurationEv@Base 1.58
- _ZNK24QSnapdSetSnapConfRequest10metaObjectEv@Base 1.58
- _ZNK25QSnapdResetAliasesRequest10metaObjectEv@Base 1.58
- _ZNK26QSnapdAddAssertionsRequest10metaObjectEv@Base 1.58
- _ZNK26QSnapdEnableAliasesRequest10metaObjectEv@Base 1.58
- _ZNK26QSnapdGetAssertionsRequest10assertionsEv@Base 1.58
- _ZNK26QSnapdGetAssertionsRequest10metaObjectEv@Base 1.58
- _ZNK26QSnapdGetInterfacesRequest10metaObjectEv@Base 1.58
- _ZNK26QSnapdGetInterfacesRequest4plugEi@Base 1.58
- _ZNK26QSnapdGetInterfacesRequest4slotEi@Base 1.58
- _ZNK26QSnapdGetInterfacesRequest9plugCountEv@Base 1.58
- _ZNK26QSnapdGetInterfacesRequest9slotCountEv@Base 1.58
- _ZNK26QSnapdSwitchChannelRequest10metaObjectEv@Base 1.58
- _ZNK27QSnapdDisableAliasesRequest10metaObjectEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest10metaObjectEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest11establishedEi@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest14undesiredCountEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest16establishedCountEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest4plugEi@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest4slotEi@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest9plugCountEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest9slotCountEv@Base 1.58
- _ZNK27QSnapdGetConnectionsRequest9undesiredEi@Base 1.58
- _ZNK27QSnapdGetInterfaces2Request10metaObjectEv@Base 1.58
- _ZNK27QSnapdGetInterfaces2Request14interfaceCountEv@Base 1.58
- _ZNK27QSnapdGetInterfaces2Request9interfaceEi@Base 1.58
- _ZNK27QSnapdInstallRequestPrivate10metaObjectEv@Base 1.58
- _ZNK28QSnapdFindRefreshableRequest10metaObjectEv@Base 1.58
- _ZNK28QSnapdFindRefreshableRequest4snapEi@Base 1.58
- _ZNK28QSnapdFindRefreshableRequest9snapCountEv@Base 1.58
- _ZNK29QSnapdConnectInterfaceRequest10metaObjectEv@Base 1.58
- _ZNK32QSnapdDisconnectInterfaceRequest10metaObjectEv@Base 1.58
- _ZNK33QSnapdGetSystemInformationRequest10metaObjectEv@Base 1.58
- (optional=templinst)_ZNK5QHashI7QString11QStringListE8findNodeERKS0_j@Base 1.58
- (optional=templinst)_ZNK5QHashI7QString8QVariantE8findNodeERKS0_j@Base 1.58
- _ZNK7QString11toStdStringB5cxx11Ev@Base 1.58
- (optional=templinst)_ZNK8QMapNodeI7QString8QVariantE4copyEP8QMapDataIS0_S1_E@Base 1.58
- _ZNK9QSnapdApp10daemonTypeEv@Base 1.58
- _ZNK9QSnapdApp10metaObjectEv@Base 1.58
- _ZNK9QSnapdApp11desktopFileEv@Base 1.58
- _ZNK9QSnapdApp4nameEv@Base 1.58
- _ZNK9QSnapdApp4snapEv@Base 1.58
- _ZNK9QSnapdApp6activeEv@Base 1.58
- _ZNK9QSnapdApp7aliasesEv@Base 1.58
- _ZNK9QSnapdApp7enabledEv@Base 1.58
- _ZNK9QSnapdApp8commonIdEv@Base 1.58
- _ZTI10QSnapdIcon@Base 1.58
- _ZTI10QSnapdPlug@Base 1.58
- _ZTI10QSnapdSlot@Base 1.58
- _ZTI10QSnapdSnap@Base 1.58
- _ZTI10QSnapdTask@Base 1.58
- _ZTI11QSnapdAlias@Base 1.58
- _ZTI11QSnapdEnums@Base 1.58
- _ZTI11QSnapdMedia@Base 1.58
- _ZTI11QSnapdPrice@Base 1.58
- _ZTI12QSnapdChange@Base 1.58
- _ZTI12QSnapdClient@Base 1.58
- _ZTI13QSnapdChannel@Base 1.58
- _ZTI13QSnapdPlugRef@Base 1.58
- _ZTI13QSnapdRequest@Base 1.58
- _ZTI13QSnapdSlotRef@Base 1.58
- _ZTI14QSnapdAuthData@Base 1.58
- _ZTI15QSnapdAssertion@Base 1.58
- _ZTI15QSnapdInterface@Base 1.58
- _ZTI16QSnapdBuyRequest@Base 1.58
- _ZTI16QSnapdConnection@Base 1.58
- _ZTI16QSnapdScreenshot@Base 1.58
- _ZTI16QSnapdTryRequest@Base 1.58
- _ZTI17QSnapdFindRequest@Base 1.58
- _ZTI17QSnapdListRequest@Base 1.58
- _ZTI17QSnapdMaintenance@Base 1.58
- _ZTI18QSnapdAliasRequest@Base 1.58
- _ZTI18QSnapdLoginRequest@Base 1.58
- _ZTI18QSnapdMarkdownNode@Base 1.58
- _ZTI19QSnapdEnableRequest@Base 1.58
- _ZTI19QSnapdLogoutRequest@Base 1.58
- _ZTI19QSnapdPreferRequest@Base 1.58
- _ZTI19QSnapdRemoveRequest@Base 1.58
- _ZTI19QSnapdWrappedObject@Base 1.58
- _ZTI20QSnapdConnectRequest@Base 1.58
- _ZTI20QSnapdDisableRequest@Base 1.58
- _ZTI20QSnapdGetAppsRequest@Base 1.58
- _ZTI20QSnapdGetIconRequest@Base 1.58
- _ZTI20QSnapdGetSnapRequest@Base 1.58
- _ZTI20QSnapdInstallRequest@Base 1.58
- _ZTI20QSnapdListOneRequest@Base 1.58
- _ZTI20QSnapdMarkdownParser@Base 1.58
- _ZTI20QSnapdRefreshRequest@Base 1.58
- _ZTI20QSnapdUnaliasRequest@Base 1.58
- _ZTI21QSnapdCheckBuyRequest@Base 1.58
- _ZTI21QSnapdDownloadRequest@Base 1.58
- _ZTI21QSnapdGetSnapsRequest@Base 1.58
- _ZTI21QSnapdGetUsersRequest@Base 1.58
- _ZTI21QSnapdUserInformation@Base 1.58
- _ZTI22QSnapdGetChangeRequest@Base 1.58
- _ZTI23QSnapdCreateUserRequest@Base 1.58
- _ZTI23QSnapdGetAliasesRequest@Base 1.58
- _ZTI23QSnapdGetChangesRequest@Base 1.58
- _ZTI23QSnapdRefreshAllRequest@Base 1.58
- _ZTI23QSnapdRunSnapCtlRequest@Base 1.58
- _ZTI23QSnapdSystemInformation@Base 1.58
- _ZTI24QSnapdAbortChangeRequest@Base 1.58
- _ZTI24QSnapdCreateUsersRequest@Base 1.58
- _ZTI24QSnapdGetSectionsRequest@Base 1.58
- _ZTI24QSnapdGetSnapConfRequest@Base 1.58
- _ZTI24QSnapdSetSnapConfRequest@Base 1.58
- _ZTI25QSnapdResetAliasesRequest@Base 1.58
- _ZTI26QSnapdAddAssertionsRequest@Base 1.58
- _ZTI26QSnapdEnableAliasesRequest@Base 1.58
- _ZTI26QSnapdGetAssertionsRequest@Base 1.58
- _ZTI26QSnapdGetInterfacesRequest@Base 1.58
- _ZTI26QSnapdSwitchChannelRequest@Base 1.58
- _ZTI27QSnapdDisableAliasesRequest@Base 1.58
- _ZTI27QSnapdGetConnectionsRequest@Base 1.58
- _ZTI27QSnapdGetInterfaces2Request@Base 1.58
- _ZTI27QSnapdInstallRequestPrivate@Base 1.58
- _ZTI28QSnapdFindRefreshableRequest@Base 1.58
- _ZTI29QSnapdConnectInterfaceRequest@Base 1.58
- _ZTI32QSnapdDisconnectInterfaceRequest@Base 1.58
- _ZTI33QSnapdGetSystemInformationRequest@Base 1.58
- _ZTI9QSnapdApp@Base 1.58
- _ZTS10QSnapdIcon@Base 1.58
- _ZTS10QSnapdPlug@Base 1.58
- _ZTS10QSnapdSlot@Base 1.58
- _ZTS10QSnapdSnap@Base 1.58
- _ZTS10QSnapdTask@Base 1.58
- _ZTS11QSnapdAlias@Base 1.58
- _ZTS11QSnapdEnums@Base 1.58
- _ZTS11QSnapdMedia@Base 1.58
- _ZTS11QSnapdPrice@Base 1.58
- _ZTS12QSnapdChange@Base 1.58
- _ZTS12QSnapdClient@Base 1.58
- _ZTS13QSnapdChannel@Base 1.58
- _ZTS13QSnapdPlugRef@Base 1.58
- _ZTS13QSnapdRequest@Base 1.58
- _ZTS13QSnapdSlotRef@Base 1.58
- _ZTS14QSnapdAuthData@Base 1.58
- _ZTS15QSnapdAssertion@Base 1.58
- _ZTS15QSnapdInterface@Base 1.58
- _ZTS16QSnapdBuyRequest@Base 1.58
- _ZTS16QSnapdConnection@Base 1.58
- _ZTS16QSnapdScreenshot@Base 1.58
- _ZTS16QSnapdTryRequest@Base 1.58
- _ZTS17QSnapdFindRequest@Base 1.58
- _ZTS17QSnapdListRequest@Base 1.58
- _ZTS17QSnapdMaintenance@Base 1.58
- _ZTS18QSnapdAliasRequest@Base 1.58
- _ZTS18QSnapdLoginRequest@Base 1.58
- _ZTS18QSnapdMarkdownNode@Base 1.58
- _ZTS19QSnapdEnableRequest@Base 1.58
- _ZTS19QSnapdLogoutRequest@Base 1.58
- _ZTS19QSnapdPreferRequest@Base 1.58
- _ZTS19QSnapdRemoveRequest@Base 1.58
- _ZTS19QSnapdWrappedObject@Base 1.58
- _ZTS20QSnapdConnectRequest@Base 1.58
- _ZTS20QSnapdDisableRequest@Base 1.58
- _ZTS20QSnapdGetAppsRequest@Base 1.58
- _ZTS20QSnapdGetIconRequest@Base 1.58
- _ZTS20QSnapdGetSnapRequest@Base 1.58
- _ZTS20QSnapdInstallRequest@Base 1.58
- _ZTS20QSnapdListOneRequest@Base 1.58
- _ZTS20QSnapdMarkdownParser@Base 1.58
- _ZTS20QSnapdRefreshRequest@Base 1.58
- _ZTS20QSnapdUnaliasRequest@Base 1.58
- _ZTS21QSnapdCheckBuyRequest@Base 1.58
- _ZTS21QSnapdDownloadRequest@Base 1.58
- _ZTS21QSnapdGetSnapsRequest@Base 1.58
- _ZTS21QSnapdGetUsersRequest@Base 1.58
- _ZTS21QSnapdUserInformation@Base 1.58
- _ZTS22QSnapdGetChangeRequest@Base 1.58
- _ZTS23QSnapdCreateUserRequest@Base 1.58
- _ZTS23QSnapdGetAliasesRequest@Base 1.58
- _ZTS23QSnapdGetChangesRequest@Base 1.58
- _ZTS23QSnapdRefreshAllRequest@Base 1.58
- _ZTS23QSnapdRunSnapCtlRequest@Base 1.58
- _ZTS23QSnapdSystemInformation@Base 1.58
- _ZTS24QSnapdAbortChangeRequest@Base 1.58
- _ZTS24QSnapdCreateUsersRequest@Base 1.58
- _ZTS24QSnapdGetSectionsRequest@Base 1.58
- _ZTS24QSnapdGetSnapConfRequest@Base 1.58
- _ZTS24QSnapdSetSnapConfRequest@Base 1.58
- _ZTS25QSnapdResetAliasesRequest@Base 1.58
- _ZTS26QSnapdAddAssertionsRequest@Base 1.58
- _ZTS26QSnapdEnableAliasesRequest@Base 1.58
- _ZTS26QSnapdGetAssertionsRequest@Base 1.58
- _ZTS26QSnapdGetInterfacesRequest@Base 1.58
- _ZTS26QSnapdSwitchChannelRequest@Base 1.58
- _ZTS27QSnapdDisableAliasesRequest@Base 1.58
- _ZTS27QSnapdGetConnectionsRequest@Base 1.58
- _ZTS27QSnapdGetInterfaces2Request@Base 1.58
- _ZTS27QSnapdInstallRequestPrivate@Base 1.58
- _ZTS28QSnapdFindRefreshableRequest@Base 1.58
- _ZTS29QSnapdConnectInterfaceRequest@Base 1.58
- _ZTS32QSnapdDisconnectInterfaceRequest@Base 1.58
- _ZTS33QSnapdGetSystemInformationRequest@Base 1.58
- _ZTS9QSnapdApp@Base 1.58
- _ZTV10QSnapdIcon@Base 1.58
- _ZTV10QSnapdPlug@Base 1.58
- _ZTV10QSnapdSlot@Base 1.58
- _ZTV10QSnapdSnap@Base 1.58
- _ZTV10QSnapdTask@Base 1.58
- _ZTV11QSnapdAlias@Base 1.58
- _ZTV11QSnapdEnums@Base 1.58
- _ZTV11QSnapdMedia@Base 1.58
- _ZTV11QSnapdPrice@Base 1.58
- _ZTV12QSnapdChange@Base 1.58
- _ZTV12QSnapdClient@Base 1.58
- _ZTV13QSnapdChannel@Base 1.58
- _ZTV13QSnapdPlugRef@Base 1.58
- _ZTV13QSnapdRequest@Base 1.58
- _ZTV13QSnapdSlotRef@Base 1.58
- _ZTV14QSnapdAuthData@Base 1.58
- _ZTV15QSnapdAssertion@Base 1.58
- _ZTV15QSnapdInterface@Base 1.58
- _ZTV16QSnapdBuyRequest@Base 1.58
- _ZTV16QSnapdConnection@Base 1.58
- _ZTV16QSnapdScreenshot@Base 1.58
- _ZTV16QSnapdTryRequest@Base 1.58
- _ZTV17QSnapdFindRequest@Base 1.58
- _ZTV17QSnapdListRequest@Base 1.58
- _ZTV17QSnapdMaintenance@Base 1.58
- _ZTV18QSnapdAliasRequest@Base 1.58
- _ZTV18QSnapdLoginRequest@Base 1.58
- _ZTV18QSnapdMarkdownNode@Base 1.58
- _ZTV19QSnapdEnableRequest@Base 1.58
- _ZTV19QSnapdLogoutRequest@Base 1.58
- _ZTV19QSnapdPreferRequest@Base 1.58
- _ZTV19QSnapdRemoveRequest@Base 1.58
- _ZTV19QSnapdWrappedObject@Base 1.58
- _ZTV20QSnapdConnectRequest@Base 1.58
- _ZTV20QSnapdDisableRequest@Base 1.58
- _ZTV20QSnapdGetAppsRequest@Base 1.58
- _ZTV20QSnapdGetIconRequest@Base 1.58
- _ZTV20QSnapdGetSnapRequest@Base 1.58
- _ZTV20QSnapdInstallRequest@Base 1.58
- _ZTV20QSnapdListOneRequest@Base 1.58
- _ZTV20QSnapdMarkdownParser@Base 1.58
- _ZTV20QSnapdRefreshRequest@Base 1.58
- _ZTV20QSnapdUnaliasRequest@Base 1.58
- _ZTV21QSnapdCheckBuyRequest@Base 1.58
- _ZTV21QSnapdDownloadRequest@Base 1.58
- _ZTV21QSnapdGetSnapsRequest@Base 1.58
- _ZTV21QSnapdGetUsersRequest@Base 1.58
- _ZTV21QSnapdUserInformation@Base 1.58
- _ZTV22QSnapdGetChangeRequest@Base 1.58
- _ZTV23QSnapdCreateUserRequest@Base 1.58
- _ZTV23QSnapdGetAliasesRequest@Base 1.58
- _ZTV23QSnapdGetChangesRequest@Base 1.58
- _ZTV23QSnapdRefreshAllRequest@Base 1.58
- _ZTV23QSnapdRunSnapCtlRequest@Base 1.58
- _ZTV23QSnapdSystemInformation@Base 1.58
- _ZTV24QSnapdAbortChangeRequest@Base 1.58
- _ZTV24QSnapdCreateUsersRequest@Base 1.58
- _ZTV24QSnapdGetSectionsRequest@Base 1.58
- _ZTV24QSnapdGetSnapConfRequest@Base 1.58
- _ZTV24QSnapdSetSnapConfRequest@Base 1.58
- _ZTV25QSnapdResetAliasesRequest@Base 1.58
- _ZTV26QSnapdAddAssertionsRequest@Base 1.58
- _ZTV26QSnapdEnableAliasesRequest@Base 1.58
- _ZTV26QSnapdGetAssertionsRequest@Base 1.58
- _ZTV26QSnapdGetInterfacesRequest@Base 1.58
- _ZTV26QSnapdSwitchChannelRequest@Base 1.58
- _ZTV27QSnapdDisableAliasesRequest@Base 1.58
- _ZTV27QSnapdGetConnectionsRequest@Base 1.58
- _ZTV27QSnapdGetInterfaces2Request@Base 1.58
- _ZTV27QSnapdInstallRequestPrivate@Base 1.58
- _ZTV28QSnapdFindRefreshableRequest@Base 1.58
- _ZTV29QSnapdConnectInterfaceRequest@Base 1.58
- _ZTV32QSnapdDisconnectInterfaceRequest@Base 1.58
- _ZTV33QSnapdGetSystemInformationRequest@Base 1.58
- _ZTV9QSnapdApp@Base 1.58
- (optional=templinst)_ZZN18QMetaTypeIdQObjectIP9QIODeviceLi8EE14qt_metatype_idEvE11metatype_id@Base 1.58
- stream_wrapper_get_type@Base 1.58
+ (c++|regex)"^.*::metaObject\(\) const@Base$" 0
+ (c++|regex)"^.*::qt_metacall\(QMetaObject::Call, int, void[*][*]\)@Base$" 0
+ (c++|regex)"^.*::qt_metacast\(char const[*]\)@Base$" 0
+ (c++|regex)"^.*Request::handleResult\(void[*], void[*]\)@Base$" 0
+ (c++|regex)"^.*Request::.*Request\(.*\)@Base$" 0
+ (c++|regex)"^.*Request::runAsync\(\)@Base$" 0
+ (c++|regex)"^.*Request::runSync\(\)@Base$" 0
+ (c++|regex)"^.*::staticMetaObject@Base$" 0
+ (c++|regex)"^typeinfo for .*@Base$" 0
+ (c++|regex)"^typeinfo name for .*@Base$" 0
+ (c++|regex)"^vtable for .*$" 0
+ (c++|regex)"^QtMetaTypePrivate::.*@Base$" 0
+ (c++|regex)"^QMetaTypeIdQObject<.*@Base$" 0
+ (c++|regex|optional)"^int qRegisterNormalizedMetaType<.*>\(.*\)@Base$" 0
+ (c++)"login(QString const&, QString const&)@Base" 1.8
+ (c++)"login(QString const&, QString const&, QString const&)@Base" 0
+ (c++|optional)"QByteArray::~QByteArray()@Base" 0
+ (c++|optional)"QHash<QString, QStringList>::deleteNode2(QHashData::Node*)@Base" 0
+ (c++|optional)"QHash<QString, QStringList>::duplicateNode(QHashData::Node*, void*)@Base" 0
+ (c++|optional)"QHash<QString, QStringList>::findNode(QString const&, unsigned int) const@Base" 0
+ (c++|optional)"QHash<QString, QStringList>::~QHash()@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::deleteNode2(QHashData::Node*)@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::detach_helper()@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::duplicateNode(QHashData::Node*, void*)@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::findNode(QString const&, unsigned int) const@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::insert(QString const&, QVariant const&)@Base" 0
+ (c++|optional)"QHash<QString, QVariant>::~QHash()@Base" 0
+ (c++|optional)"QList<QSnapdMarkdownNode>::append(QSnapdMarkdownNode const&)@Base" 0
+ (c++|optional)"QList<QSnapdMarkdownNode>::detach_helper_grow(int, int)@Base" 0
+ (c++|optional)"QList<QSnapdMarkdownNode>::~QList()@Base" 0
+ (c++|optional)"QList<QString>::append(QString const&)@Base" 0
+ (c++|optional)"QList<QString>::detach_helper_grow(int, int)@Base" 0
+ (c++|optional)"QList<QString>::~QList()@Base" 0
+ (c++|optional)"QList<QString>::QList(QList<QString> const&)@Base" 0
+ (c++|optional)"QList<QVariant>::append(QVariant const&)@Base" 0
+ (c++|optional)"QList<QVariant>::detach_helper_grow(int, int)@Base" 0
+ (c++|optional)"QList<QVariant>::detach_helper(int)@Base" 0
+ (c++|optional)"QList<QVariant>::~QList()@Base" 0
+ (c++|optional)"QMapNode<QString, QVariant>::copy(QMapData<QString, QVariant>*) const@Base" 0
+ (c++|optional)"QMapNode<QString, QVariant>::destroySubTree()@Base" 0
+ (c++|optional)"QMap<QString, QVariant>::~QMap()@Base" 0
+ (c++|optional)"QMap<QString, QVariant>::QMap(QMap<QString, QVariant> const&)@Base" 0
+ (c++|optional)"QSnapdInstallRequestPrivate::~QSnapdInstallRequestPrivate()@Base" 1.9
+ (c++|optional)"QSnapdRequest::finish(void*)@Base" 1.5
+ (c++|optional)"QSnapdRequest::handleProgress(void*)@Base" 1.5
+ (c++|optional)"QString::~QString()@Base" 0
+ (c++|optional)"QString::QString(QString const&)@Base" 0
+ (c++|optional)"QString::toStdString[abi:cxx11]() const@Base" 0
+ (c++|optional)"QtSharedPointer::ExternalRefCountData::~ExternalRefCountData()@Base" 0
+ (c++|optional)"QWeakPointer<QObject>::~QWeakPointer()@Base" 0
+ (c++|optional)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)@Base" 1.44
+ (c++|optional)callback_data_get_type()@Base 1.60 
+ (c++|optional)callback_data_new(void*)@Base 1.60
+ (optional)stream_wrapper_get_type@Base 1.9
+ (c++)"QSnapdAbortChangeRequest::change() const@Base" 1.30
+ (c++)"QSnapdAlias::app() const@Base" 1.8
+ (c++)"QSnapdAlias::appAuto() const@Base" 1.25
+ (c++)"QSnapdAlias::appManual() const@Base" 1.25
+ (c++)"QSnapdAlias::command() const@Base" 1.25
+ (c++)"QSnapdAlias::name() const@Base" 1.8
+ (c++|optional=lto)"QSnapdAlias::~QSnapdAlias()@Base" 1.8
+ (c++)"QSnapdAlias::QSnapdAlias(void*, QObject*)@Base" 1.8
+ (c++)"QSnapdAlias::snap() const@Base" 1.8
+ (c++)"QSnapdAlias::status() const@Base" 1.8
+ (c++)"QSnapdApp::active() const@Base" 1.25
+ (c++)"QSnapdApp::aliases() const@Base" 1.7
+ (c++)"QSnapdApp::commonId() const@Base" 1.41
+ (c++)"QSnapdApp::daemonType() const@Base" 1.9
+ (c++)"QSnapdApp::desktopFile() const@Base" 1.14
+ (c++)"QSnapdApp::enabled() const@Base" 1.25
+ (c++)"QSnapdApp::name() const@Base" 1.5
+ (c++)"QSnapdApp::snap() const@Base" 1.25
+ (c++|optional=lto)"QSnapdApp::~QSnapdApp()@Base" 1.5
+ (c++)"QSnapdApp::QSnapdApp(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdAssertion::body() const@Base" 1.8
+ (c++)"QSnapdAssertion::header(QString const&) const@Base" 1.8
+ (c++)"QSnapdAssertion::headers() const@Base" 1.8
+ (c++|optional=lto)"QSnapdAssertion::~QSnapdAssertion()@Base" 1.8
+ (c++)"QSnapdAssertion::QSnapdAssertion(QString const&, QObject*)@Base" 1.8
+ (c++)"QSnapdAssertion::signature() const@Base" 1.8
+ (c++)"QSnapdAuthData::discharges() const@Base" 1.5
+ (c++)"QSnapdAuthData::macaroon() const@Base" 1.5
+ (c++|optional=lto)"QSnapdAuthData::~QSnapdAuthData()@Base" 1.5
+ (c++)"QSnapdAuthData::QSnapdAuthData(QString const&, QStringList const&, QObject*)@Base" 1.5
+ (c++)"QSnapdAuthData::QSnapdAuthData(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdAuthData::QSnapdAuthData(QObject*)@Base" 1.33
+ (c++)"QSnapdChange::error() const@Base" 1.30
+ (c++)"QSnapdChange::id() const@Base" 1.5
+ (c++)"QSnapdChange::kind() const@Base" 1.5
+ (c++|optional=lto)"QSnapdChange::~QSnapdChange()@Base" 1.5
+ (c++)"QSnapdChange::QSnapdChange(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdChange::ready() const@Base" 1.5
+ (c++)"QSnapdChange::readyTime() const@Base" 1.5
+ (c++)"QSnapdChange::spawnTime() const@Base" 1.5
+ (c++)"QSnapdChange::status() const@Base" 1.5
+ (c++)"QSnapdChange::summary() const@Base" 1.5
+ (c++)"QSnapdChange::taskCount() const@Base" 1.8
+ (c++)"QSnapdChange::task(int) const@Base" 1.8
+ (c++|optional=lto)"QSnapdChannel::~QSnapdChannel()@Base" 1.24
+ (c++)"QSnapdChannel::QSnapdChannel(void*, QObject*)@Base" 1.24
+ (c++)"QSnapdChannel::confinement() const@Base" 1.24
+ (c++)"QSnapdChannel::branch() const@Base" 1.31
+ (c++)"QSnapdChannel::epoch() const@Base" 1.24
+ (c++)"QSnapdChannel::name() const@Base" 1.24
+ (c++)"QSnapdChannel::releasedAt() const@Base" 1.46
+ (c++)"QSnapdChannel::revision() const@Base" 1.24
+ (c++)"QSnapdChannel::risk() const@Base" 1.31
+ (c++)"QSnapdChannel::size() const@Base" 1.24
+ (c++)"QSnapdChannel::track() const@Base" 1.31
+ (c++)"QSnapdChannel::version() const@Base" 1.24
+ (c++)"QSnapdCheckBuyRequest::canBuy() const@Base" 1.5
+ (c++)"QSnapdClient::abortChange(QString const&)@Base" 1.30
+ (c++)"QSnapdClient::addAssertions(QStringList const&)@Base" 1.8
+ (c++)"QSnapdClient::alias(QString const&, QString const&, QString const&)@Base" 1.25
+ (c++)"QSnapdClient::allowInteraction() const@Base" 1.19
+ (c++)"QSnapdClient::authData()@Base" 1.8
+ (c++)"QSnapdClient::buy(QString const&, double, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::checkBuy()@Base" 1.5
+ (c++)"QSnapdClient::createUser(QString const&, QFlags<QSnapdClient::CreateUserFlag>)@Base" 1.25
+ (c++)"QSnapdClient::createUser(QString const&)@Base" 1.25
+ (c++)"QSnapdClient::createUsers()@Base" 1.25
+ (c++)"QSnapdClient::connect()@Base" 1.5
+ (c++)"QSnapdClient::connectInterface(QString const&, QString const&, QString const&, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::disableAliases(QString, QStringList const&)@Base" 1.8
+ (c++)"QSnapdClient::disable(QString const&)@Base" 1.5
+ (c++)"QSnapdClient::disconnectInterface(QString const&, QString const&, QString const&, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::download(QString const&)@Base" 1.55
+ (c++)"QSnapdClient::download(QString const&, QString const&, QString const&)@Base" 1.55
+ (c++)"QSnapdClient::enableAliases(QString, QStringList const&)@Base" 1.8
+ (c++)"QSnapdClient::enable(QString const&)@Base" 1.5
+ (c++)"QSnapdClient::find(QFlags<QSnapdClient::FindFlag>)@Base" 1.8
+ (c++)"QSnapdClient::find(QString const&)@Base" 1.32
+ (c++)"QSnapdClient::find(QFlags<QSnapdClient::FindFlag>, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::findRefreshable()@Base" 1.5
+ (c++)"QSnapdClient::findSection(QFlags<QSnapdClient::FindFlag>, QString const&, QString const&)@Base" 1.7
+ (c++)"QSnapdClient::findSection(QString const&, QString const&)@Base" 1.32
+ (c++)"QSnapdClient::getChange(QString const&)@Base" 1.29
+ (c++)"QSnapdClient::getChanges(QSnapdClient::ChangeFilter)@Base" 1.29
+ (c++)"QSnapdClient::getChanges(QSnapdClient::ChangeFilter, QString const&)@Base" 1.29
+ (c++)"QSnapdClient::getChanges(QString const&)@Base" 1.29
+ (c++)"QSnapdClient::getChanges()@Base" 1.29
+ (c++)"QSnapdClient::getConnections()@Base" 1.48
+ (c++)"QSnapdClient::getConnections(QFlags<QSnapdClient::GetConnectionsFlag>)@Base" 1.49
+ (c++)"QSnapdClient::getConnections(QString const&, QString const&)@Base" 1.49
+ (c++)"QSnapdClient::getConnections(QFlags<QSnapdClient::GetConnectionsFlag>, QString const&, QString const&)@Base" 1.49
+ (c++)"QSnapdClient::getAliases()@Base" 1.8
+ (c++)"QSnapdClient::getApps(QFlags<QSnapdClient::GetAppsFlag>)@Base" 1.25
+ (c++)"QSnapdClient::getApps()@Base" 1.25
+ (c++)"QSnapdClient::getApps(QString const&)@Base" 1.45
+ (c++)"QSnapdClient::getApps(QStringList const&)@Base" 1.45
+ (c++)"QSnapdClient::getApps(QFlags<QSnapdClient::GetAppsFlag>, QString const&)@Base" 1.45
+ (c++)"QSnapdClient::getApps(QFlags<QSnapdClient::GetAppsFlag>, QStringList const&)@Base" 1.45
+ (c++)"QSnapdClient::getAssertions(QString const&)@Base" 1.8
+ (c++)"QSnapdClient::getIcon(QString const&)@Base" 1.5
+ (c++)"QSnapdClient::getInterfaces()@Base" 1.5
+ (c++)"QSnapdClient::getInterfaces2(QFlags<QSnapdClient::InterfaceFlag>)@Base" 1.48
+ (c++)"QSnapdClient::getInterfaces2(QFlags<QSnapdClient::InterfaceFlag>, QStringList const&)@Base" 1.48
+ (c++)"QSnapdClient::getInterfaces2(QStringList const&)@Base" 1.48
+ (c++)"QSnapdClient::getInterfaces2()@Base" 1.48
+ (c++)"QSnapdClient::getSections()@Base" 1.8
+ (c++)"QSnapdClient::getSnap(QString const&)@Base" 1.42
+ (c++)"QSnapdClient::getSnapConf(QString const&)@Base" 1.48
+ (c++)"QSnapdClient::getSnapConf(QString const&, QStringList const&)@Base" 1.48
+ (c++)"QSnapdClient::setSnapConf(QString const&, QHash<QString, QVariant> const&)@Base" 1.48
+ (c++)"QSnapdClient::getSnaps(QFlags<QSnapdClient::GetSnapsFlag>, QStringList const&)@Base" 1.42
+ (c++)"QSnapdClient::getSnaps(QFlags<QSnapdClient::GetSnapsFlag>, QString const&)@Base" 1.42
+ (c++)"QSnapdClient::getSnaps(QStringList const&)@Base" 1.42
+ (c++)"QSnapdClient::getSnaps(QString const&)@Base" 1.42
+ (c++)"QSnapdClient::getSnaps()@Base" 1.42
+ (c++)"QSnapdClient::getSystemInformation()@Base" 1.5
+ (c++)"QSnapdClient::getUsers()@Base" 1.26
+ (c++)"QSnapdClient::install(QFlags<QSnapdClient::InstallFlag>, QIODevice*)@Base" 1.9
+ (c++)"QSnapdClient::install(QIODevice*)@Base" 1.9
+ (c++)"QSnapdClient::install(QString const&)@Base" 1.8
+ (c++)"QSnapdClient::install(QString const&, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::install(QString const&, QString const&, QString const&)@Base" 1.12
+ (c++)"QSnapdClient::install(QFlags<QSnapdClient::InstallFlag>, QString const&)@Base" 1.12
+ (c++)"QSnapdClient::install(QFlags<QSnapdClient::InstallFlag>, QString const&, QString const&)@Base" 1.12
+ (c++)"QSnapdClient::install(QFlags<QSnapdClient::InstallFlag>, QString const&, QString const&, QString const&)@Base" 1.12
+ (c++)"QSnapdClient::list()@Base" 1.5
+ (c++)"QSnapdClient::listOne(QString const&)@Base" 1.5
+ (c++)"QSnapdClient::login(QString const&, QString const&)@Base" 1.8
+ (c++)"QSnapdClient::login(QString const&, QString const&, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::logout(long long)@Base" 1.55
+ (c++)"QSnapdClient::maintenance() const@Base" 1.45
+ (c++)"QSnapdClient::prefer(QString const&)@Base" 1.25
+ (c++)"QSnapdClient::trySnap(QString const&)@Base" 1.9
+ (c++)"QSnapdClient::unalias(QString const&)@Base" 1.25
+ (c++)"QSnapdClient::unalias(QString const&, QString const&)@Base" 1.25
+ (c++)"QSnapdClient::userAgent() const@Base" 1.16
+ (c++)"QSnapdClient::~QSnapdClient()@Base" 1.5
+ (c++)"QSnapdClient::QSnapdClient(int, QObject*)@Base" 1.8
+ (c++)"QSnapdClient::QSnapdClient(QObject*)@Base" 1.5
+ (c++)"QSnapdClient::refreshAll()@Base" 1.5
+ (c++)"QSnapdClient::refresh(QString const&)@Base" 1.8
+ (c++)"QSnapdClient::refresh(QString const&, QString const&)@Base" 1.5
+ (c++)"QSnapdClient::remove(QString const&)@Base" 1.5
+ (c++)"QSnapdClient::remove(QFlags<QSnapdClient::RemoveFlag>, QString const&)@Base" 1.50
+ (c++)"QSnapdClient::resetAliases(QString, QStringList const&)@Base" 1.8
+ (c++)"QSnapdClient::runSnapCtl(QString, QStringList const&)@Base" 1.8
+ (c++)"QSnapdClient::setAllowInteraction(bool)@Base" 1.19
+ (c++)"QSnapdClient::setAuthData(QSnapdAuthData*)@Base" 1.8
+ (c++)"QSnapdClient::setUserAgent(QString const&)@Base" 1.16
+ (c++)"QSnapdClient::setSocketPath(QString const&)@Base" 1.24
+ (c++)"QSnapdClient::socketPath() const@Base" 1.24
+ (c++)"QSnapdClient::switchChannel(QString const&, QString const&)@Base" 1.26
+ (c++)"QSnapdConnection::gadget() const@Base" 1.48
+ (c++)"QSnapdConnection::hasPlugAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdConnection::hasSlotAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdConnection::interface() const@Base" 1.48
+ (c++)"QSnapdConnection::manual() const@Base" 1.48
+ (c++)"QSnapdConnection::name() const@Base" 1.5
+ (c++)"QSnapdConnection::plug() const@Base" 1.48
+ (c++)"QSnapdConnection::plugAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdConnection::plugAttributeNames() const@Base" 1.48
+ (c++)"QSnapdConnection::slot() const@Base" 1.48
+ (c++)"QSnapdConnection::slotAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdConnection::slotAttributeNames() const@Base" 1.48
+ (c++|optional=lto)"QSnapdConnection::~QSnapdConnection()@Base" 1.5
+ (c++)"QSnapdConnection::QSnapdConnection(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdConnection::snap() const@Base" 1.5
+ (c++)"QSnapdCreateUserRequest::userInformation() const@Base" 1.25
+ (c++)"QSnapdCreateUsersRequest::userInformation(int) const@Base" 1.25
+ (c++)"QSnapdCreateUsersRequest::userInformationCount() const@Base" 1.25
+ (c++)"QSnapdDownloadRequest::data() const@Base" 1.55
+ (c++|optional=lto)"QSnapdEnums::~QSnapdEnums()@Base" 1.24
+ (c++)"QSnapdFindRefreshableRequest::snapCount() const@Base" 1.8
+ (c++)"QSnapdFindRefreshableRequest::snap(int) const@Base" 1.8
+ (c++)"QSnapdFindRequest::snapCount() const@Base" 1.5
+ (c++)"QSnapdFindRequest::snap(int) const@Base" 1.5
+ (c++)"QSnapdFindRequest::suggestedCurrency() const@Base" 1.5
+ (c++)"QSnapdGetAliasesRequest::aliasCount() const@Base" 1.8
+ (c++)"QSnapdGetAliasesRequest::alias(int) const@Base" 1.8
+ (c++)"QSnapdGetAppsRequest::app(int) const@Base" 1.25
+ (c++)"QSnapdGetAppsRequest::appCount() const@Base" 1.25
+ (c++)"QSnapdGetAssertionsRequest::assertions() const@Base" 1.8
+ (c++)"QSnapdGetChangeRequest::change() const@Base" 1.29
+ (c++)"QSnapdGetChangesRequest::changeCount() const@Base" 1.29
+ (c++)"QSnapdGetChangesRequest::change(int) const@Base" 1.29
+ (c++)"QSnapdGetConnectionsRequest::established(int) const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::establishedCount() const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::plug(int) const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::plugCount() const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::slot(int) const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::slotCount() const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::undesired(int) const@Base" 1.48
+ (c++)"QSnapdGetConnectionsRequest::undesiredCount() const@Base" 1.48
+ (c++)"QSnapdGetIconRequest::icon() const@Base" 1.5
+ (c++)"QSnapdGetInterfacesRequest::plugCount() const@Base" 1.5
+ (c++)"QSnapdGetInterfacesRequest::plug(int) const@Base" 1.5
+ (c++)"QSnapdGetInterfacesRequest::slotCount() const@Base" 1.5
+ (c++)"QSnapdGetInterfacesRequest::slot(int) const@Base" 1.5
+ (c++)"QSnapdGetInterfaces2Request::interface(int) const@Base" 1.48
+ (c++)"QSnapdGetInterfaces2Request::interfaceCount() const@Base" 1.48
+ (c++)"QSnapdGetSectionsRequest::sections() const@Base" 1.7
+ (c++)"QSnapdGetSnapConfRequest::configuration() const@Base" 1.48
+ (c++)"QSnapdGetSnapRequest::snap() const@Base" 1.42
+ (c++)"QSnapdGetSnapsRequest::snapCount() const@Base" 1.42
+ (c++)"QSnapdGetSnapsRequest::snap(int) const@Base" 1.42
+ (c++)"QSnapdGetSystemInformationRequest::systemInformation()@Base" 1.5
+ (c++)"QSnapdGetUsersRequest::userInformation(int) const@Base" 1.26
+ (c++)"QSnapdGetUsersRequest::userInformationCount() const@Base" 1.26
+ (c++)"QSnapdIcon::data() const@Base" 1.5
+ (c++)"QSnapdIcon::mimeType() const@Base" 1.5
+ (c++|optional=lto)"QSnapdIcon::~QSnapdIcon()@Base" 1.5
+ (c++)"QSnapdIcon::QSnapdIcon(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdInterface::docUrl() const@Base" 1.48
+ (c++)"QSnapdInterface::makeLabel() const@Base" 1.57
+ (c++)"QSnapdInterface::name() const@Base" 1.48
+ (c++)"QSnapdInterface::plug(int) const@Base" 1.48
+ (c++)"QSnapdInterface::plugCount() const@Base" 1.48
+ (c++)"QSnapdInterface::slot(int) const@Base" 1.48
+ (c++)"QSnapdInterface::slotCount() const@Base" 1.48
+ (c++)"QSnapdInterface::summary() const@Base" 1.48
+ (c++)"QSnapdInterface::QSnapdInterface(void*, QObject*)@Base" 1.48
+ (c++|optional=lto)"QSnapdInterface::~QSnapdInterface()@Base" 1.48
+ (c++)"QSnapdListOneRequest::snap() const@Base" 1.5
+ (c++)"QSnapdListRequest::snapCount() const@Base" 1.5
+ (c++)"QSnapdListRequest::snap(int) const@Base" 1.5
+ (c++)"QSnapdLoginRequest::authData()@Base" 1.8
+ (c++)"QSnapdLoginRequest::userInformation()@Base" 1.26
+ (c++)"QSnapdMaintenance::kind() const@Base" 1.45
+ (c++)"QSnapdMaintenance::message() const@Base" 1.45
+ (c++)"QSnapdMaintenance::QSnapdMaintenance(void*, QObject*)@Base" 1.45
+ (c++|optional=lto)"QSnapdMaintenance::~QSnapdMaintenance()@Base" 1.45
+ (c++)"QSnapdMarkdownNode::child(int) const@Base" 1.48
+ (c++)"QSnapdMarkdownNode::childCount() const@Base" 1.48
+ (c++)"QSnapdMarkdownNode::text() const@Base" 1.48
+ (c++)"QSnapdMarkdownNode::type() const@Base" 1.48
+ (c++)"QSnapdMarkdownNode::QSnapdMarkdownNode(void*, QObject*)@Base" 1.48
+ (c++)"QSnapdMarkdownNode::QSnapdMarkdownNode(QSnapdMarkdownNode const&)@Base" 1.48
+ (c++|optional=lto)"QSnapdMarkdownNode::~QSnapdMarkdownNode()@Base" 1.48
+ (c++)"QSnapdMarkdownParser::preserveWhitespace() const@Base" 1.48
+ (c++)"QSnapdMarkdownParser::setPreserveWhitespace(bool) const@Base" 1.48
+ (c++)"QSnapdMarkdownParser::parse(QString const&) const@Base" 1.48
+ (c++)"QSnapdMarkdownParser::QSnapdMarkdownParser(QSnapdMarkdownParser::MarkdownVersion, QObject*)@Base" 1.48
+ (c++|optional=lto)"QSnapdMarkdownParser::~QSnapdMarkdownParser()@Base" 1.48
+ (c++)"QSnapdMedia::height() const@Base" 1.45
+ (c++)"QSnapdMedia::width() const@Base" 1.45
+ (c++)"QSnapdMedia::type() const@Base" 1.45
+ (c++)"QSnapdMedia::url() const@Base" 1.45
+ (c++)"QSnapdMedia::QSnapdMedia(void*, QObject*)@Base" 1.45
+ (c++|optional=lto)"QSnapdMedia::~QSnapdMedia()@Base" 1.45
+ (c++)"QSnapdPlug::attribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdPlug::attributeNames() const@Base" 1.48
+ (c++)"QSnapdSlot::connectedPlug(int) const@Base" 1.48
+ (c++)"QSnapdSlot::connectedPlugCount() const@Base" 1.48
+ (c++)"QSnapdPlug::connectedSlot(int) const@Base" 1.48
+ (c++)"QSnapdPlug::connectedSlotCount() const@Base" 1.48
+ (c++)"QSnapdPlug::connectionCount() const@Base" 1.8
+ (c++)"QSnapdPlug::connection(int) const@Base" 1.8
+ (c++)"QSnapdPlug::hasAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdPlug::interface() const@Base" 1.8
+ (c++)"QSnapdPlug::label() const@Base" 1.8
+ (c++)"QSnapdPlug::name() const@Base" 1.8
+ (c++|optional=lto)"QSnapdPlug::~QSnapdPlug()@Base" 1.8
+ (c++)"QSnapdPlug::QSnapdPlug(void*, QObject*)@Base" 1.8
+ (c++)"QSnapdPlug::snap() const@Base" 1.8
+ (c++)"QSnapdPlugRef::plug() const@Base" 1.48
+ (c++)"QSnapdPlugRef::snap() const@Base" 1.48
+ (c++)"QSnapdPlugRef::QSnapdPlugRef(void*, QObject*)@Base" 1.48
+ (c++|optional=lto)"QSnapdPlugRef::~QSnapdPlugRef()@Base" 1.48
+ (c++)"QSnapdPrice::amount() const@Base" 1.5
+ (c++)"QSnapdPrice::currency() const@Base" 1.5
+ (c++|optional=lto)"QSnapdPrice::~QSnapdPrice()@Base" 1.5
+ (c++)"QSnapdPrice::QSnapdPrice(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdRefreshAllRequest::snapNames() const@Base" 1.8
+ (c++)"QSnapdRequest::cancel()@Base" 1.5
+ (c++)"QSnapdRequest::change() const@Base" 1.5
+ (c++)"QSnapdRequest::complete()@Base" 1.5
+ (c++)"QSnapdRequest::error() const@Base" 1.5
+ (c++)"QSnapdRequest::errorString() const@Base" 1.5
+ (c++)"QSnapdRequest::getCancellable() const@Base" 1.5
+ (c++)"QSnapdRequest::getClient() const@Base" 1.5
+ (c++)"QSnapdRequest::isFinished() const@Base" 1.5
+ (c++)"QSnapdRequest::progress()@Base" 1.5
+ (c++)"QSnapdRunSnapCtlRequest::exitCode() const@Base" 1.59 
+ (c++)"QSnapdRunSnapCtlRequest::stderr() const@Base" 1.8
+ (c++)"QSnapdRunSnapCtlRequest::stdout() const@Base" 1.8
+ (c++)"QSnapdScreenshot::height() const@Base" 1.8
+ (c++|optional=lto)"QSnapdScreenshot::~QSnapdScreenshot()@Base" 1.8
+ (c++)"QSnapdScreenshot::QSnapdScreenshot(void*, QObject*)@Base" 1.8
+ (c++)"QSnapdScreenshot::url() const@Base" 1.8
+ (c++)"QSnapdScreenshot::width() const@Base" 1.8
+ (c++)"QSnapdSlot::attribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdSlot::attributeNames() const@Base" 1.48
+ (c++)"QSnapdSlot::connectionCount() const@Base" 1.8
+ (c++)"QSnapdSlot::connection(int) const@Base" 1.8
+ (c++)"QSnapdSlot::hasAttribute(QString const&) const@Base" 1.48
+ (c++)"QSnapdSlot::interface() const@Base" 1.8
+ (c++)"QSnapdSlot::label() const@Base" 1.8
+ (c++)"QSnapdSlot::name() const@Base" 1.8
+ (c++|optional=lto)"QSnapdSlot::~QSnapdSlot()@Base" 1.8
+ (c++)"QSnapdSlot::QSnapdSlot(void*, QObject*)@Base" 1.8
+ (c++)"QSnapdSlot::snap() const@Base" 1.8
+ (c++)"QSnapdSlotRef::slot() const@Base" 1.48
+ (c++)"QSnapdSlotRef::snap() const@Base" 1.48
+ (c++)"QSnapdSlotRef::QSnapdSlotRef(void*, QObject*)@Base" 1.48
+ (c++|optional=lto)"QSnapdSlotRef::~QSnapdSlotRef()@Base" 1.48
+ (c++)"QSnapdSnap::appCount() const@Base" 1.5
+ (c++)"QSnapdSnap::app(int) const@Base" 1.5
+ (c++)"QSnapdSnap::base() const@Base" 1.45
+ (c++)"QSnapdSnap::broken() const@Base" 1.25
+ (c++)"QSnapdSnap::channel() const@Base" 1.5
+ (c++)"QSnapdSnap::channelCount() const@Base" 1.24
+ (c++)"QSnapdSnap::channel(int) const@Base" 1.24
+ (c++)"QSnapdSnap::commonIds() const@Base" 1.41
+ (c++)"QSnapdSnap::confinement() const@Base" 1.5
+ (c++)"QSnapdSnap::contact() const@Base" 1.13
+ (c++)"QSnapdSnap::description() const@Base" 1.5
+ (c++)"QSnapdSnap::developer() const@Base" 1.5
+ (c++)"QSnapdSnap::devmode() const@Base" 1.5
+ (c++)"QSnapdSnap::downloadSize() const@Base" 1.5
+ (c++)"QSnapdSnap::icon() const@Base" 1.5
+ (c++)"QSnapdSnap::id() const@Base" 1.5
+ (c++)"QSnapdSnap::installDate() const@Base" 1.5
+ (c++)"QSnapdSnap::installedSize() const@Base" 1.5
+ (c++)"QSnapdSnap::isPrivate() const@Base" 1.5
+ (c++)"QSnapdSnap::jailmode() const@Base" 1.8
+ (c++)"QSnapdSnap::license() const@Base" 1.19
+ (c++)"QSnapdSnap::matchChannel(QString const&) const@Base" 1.24
+ (c++)"QSnapdSnap::mediaCount() const@Base" 1.45
+ (c++)"QSnapdSnap::media(int) const@Base" 1.45
+ (c++)"QSnapdSnap::mountedFrom() const@Base" 1.45
+ (c++)"QSnapdSnap::name() const@Base" 1.5
+ (c++)"QSnapdSnap::priceCount() const@Base" 1.5
+ (c++)"QSnapdSnap::price(int) const@Base" 1.5
+ (c++)"QSnapdSnap::publisherId() const@Base" 1.42
+ (c++)"QSnapdSnap::publisherUsername() const@Base" 1.42
+ (c++)"QSnapdSnap::publisherValidation() const@Base" 1.42
+ (c++)"QSnapdSnap::publisherDisplayName() const@Base" 1.42
+ (c++|optional=lto)"QSnapdSnap::~QSnapdSnap()@Base" 1.5
+ (c++)"QSnapdSnap::QSnapdSnap(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdSnap::revision() const@Base" 1.5
+ (c++)"QSnapdSnap::screenshotCount() const@Base" 1.8
+ (c++)"QSnapdSnap::screenshot(int) const@Base" 1.8
+ (c++)"QSnapdSnap::snapType() const@Base" 1.5
+ (c++)"QSnapdSnap::status() const@Base" 1.5
+ (c++)"QSnapdSnap::storeUrl() const@Base" 1.60
+ (c++)"QSnapdSnap::summary() const@Base" 1.5
+ (c++)"QSnapdSnap::title() const@Base" 1.14
+ (c++)"QSnapdSnap::trackingChannel() const@Base" 1.7
+ (c++)"QSnapdSnap::tracks() const@Base" 1.24
+ (c++)"QSnapdSnap::trymode() const@Base" 1.5
+ (c++)"QSnapdSnap::version() const@Base" 1.5
+ (c++)"QSnapdSnap::website() const@Base" 1.50
+ (c++)"QSnapdSystemInformation::binariesDirectory() const@Base" 1.11
+ (c++)"QSnapdSystemInformation::buildId() const@Base" 1.40
+ (c++)"QSnapdSystemInformation::confinement() const@Base" 1.14
+ (c++)"QSnapdSystemInformation::kernelVersion() const@Base" 1.11
+ (c++)"QSnapdSystemInformation::managed() const@Base" 1.7
+ (c++)"QSnapdSystemInformation::mountDirectory() const@Base" 1.11
+ (c++)"QSnapdSystemInformation::onClassic() const@Base" 1.5
+ (c++)"QSnapdSystemInformation::osId() const@Base" 1.5
+ (c++)"QSnapdSystemInformation::osVersion() const@Base" 1.5
+ (c++|optional=lto)"QSnapdSystemInformation::~QSnapdSystemInformation()@Base" 1.5
+ (c++)"QSnapdSystemInformation::QSnapdSystemInformation(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdSystemInformation::refreshHold() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::refreshLast() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::refreshNext() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::refreshTimer() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::refreshSchedule() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::sandboxFeatures() const@Base" 1.42
+ (c++)"QSnapdSystemInformation::series() const@Base" 1.5
+ (c++)"QSnapdSystemInformation::store() const@Base" 1.7
+ (c++)"QSnapdSystemInformation::version() const@Base" 1.5
+ (c++)"QSnapdTask::id() const@Base" 1.5
+ (c++)"QSnapdTask::kind() const@Base" 1.5
+ (c++)"QSnapdTask::progressDone() const@Base" 1.5
+ (c++)"QSnapdTask::progressLabel() const@Base" 1.5
+ (c++)"QSnapdTask::progressTotal() const@Base" 1.5
+ (c++|optional=lto)"QSnapdTask::~QSnapdTask()@Base" 1.5
+ (c++)"QSnapdTask::QSnapdTask(void*, QObject*)@Base" 1.5
+ (c++)"QSnapdTask::readyTime() const@Base" 1.5
+ (c++)"QSnapdTask::spawnTime() const@Base" 1.5
+ (c++)"QSnapdTask::status() const@Base" 1.5
+ (c++)"QSnapdTask::summary() const@Base" 1.5
+ (c++)"QSnapdUserInformation::authData() const@Base" 1.26
+ (c++)"QSnapdUserInformation::email() const@Base" 1.26
+ (c++)"QSnapdUserInformation::id() const@Base" 1.26
+ (c++)"QSnapdUserInformation::sshKeys() const@Base" 1.25
+ (c++)"QSnapdUserInformation::username() const@Base" 1.25
+ (c++)"QSnapdUserInformation::QSnapdUserInformation(void*, QObject*)@Base" 1.25
+ (c++|optional=lto)"QSnapdUserInformation::~QSnapdUserInformation()@Base" 1.25
+ (c++|optional=lto)"QSnapdWrappedObject::~QSnapdWrappedObject()@Base" 1.5
diff -pruN 1.59-3/debian/rules 1.60-0ubuntu1/debian/rules
--- 1.59-3/debian/rules	2021-11-27 17:11:03.000000000 +0000
+++ 1.60-0ubuntu1/debian/rules	2022-02-16 23:45:02.000000000 +0000
@@ -3,7 +3,7 @@
 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
 
 %:
-	dh $@ --with gir,pkgkde_symbolshelper
+	dh $@ --with gir,translations
 
 override_dh_auto_test:
 	dh_auto_test --no-parallel
diff -pruN 1.59-3/doc/reference/snapd-glib-docs.xml 1.60-0ubuntu1/doc/reference/snapd-glib-docs.xml
--- 1.59-3/doc/reference/snapd-glib-docs.xml	2021-03-04 03:49:31.096319000 +0000
+++ 1.60-0ubuntu1/doc/reference/snapd-glib-docs.xml	2022-02-15 01:52:07.000000000 +0000
@@ -280,6 +280,10 @@
     <title>Index of new symbols in 1.59</title>
     <xi:include href="xml/api-index-1.59.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-1-60" role="1.60">
+    <title>Index of new symbols in 1.60</title>
+    <xi:include href="xml/api-index-1.60.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 </book>
diff -pruN 1.59-3/doc/reference/snapd-glib-sections.txt 1.60-0ubuntu1/doc/reference/snapd-glib-sections.txt
--- 1.59-3/doc/reference/snapd-glib-sections.txt	2021-03-04 03:49:31.096319000 +0000
+++ 1.60-0ubuntu1/doc/reference/snapd-glib-sections.txt	2022-02-15 01:52:07.000000000 +0000
@@ -466,6 +466,7 @@ SNAPD_GLIB_VERSION_1_56
 SNAPD_GLIB_VERSION_1_57
 SNAPD_GLIB_VERSION_1_58
 SNAPD_GLIB_VERSION_1_59
+SNAPD_GLIB_VERSION_1_60
 </SECTION>
 
 <SECTION>
diff -pruN 1.59-3/.github/workflows/test.yaml 1.60-0ubuntu1/.github/workflows/test.yaml
--- 1.59-3/.github/workflows/test.yaml	1970-01-01 00:00:00.000000000 +0000
+++ 1.60-0ubuntu1/.github/workflows/test.yaml	2022-02-15 01:52:07.000000000 +0000
@@ -0,0 +1,60 @@
+name: test
+
+on:
+  pull_request:
+  push:
+    branches:
+      - master
+
+jobs:
+  test:
+    strategy:
+      fail-fast: false
+      matrix:
+        image:
+          - ubuntu:rolling
+          - ubuntu:20.04
+          - ubuntu:18.04
+          - fedora:latest
+
+    runs-on: ubuntu-latest
+    container: ${{ matrix.image }}
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Initialise parameters
+        id: params
+        run: |
+          artifact_name="logs-$(echo "${{ matrix.image }}" | sed "s/:/-/")"
+          echo "::set-output name=artifact::$artifact_name"
+
+      - name: Install dependencies (Ubuntu)
+        if: startsWith(matrix.image, 'ubuntu:')
+        run: |
+          apt-get update
+          DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends gtk-doc-tools libgirepository1.0-dev libglib2.0-dev libjson-glib-dev libsoup2.4-dev ninja-build python3-pip python3-setuptools python3-wheel qtbase5-dev qtdeclarative5-dev valac
+
+      - name: Install dependencies (Fedora)
+        if: startsWith(matrix.image, 'fedora:')
+        run: |
+          dnf install -y gcc gcc-c++ gobject-introspection-devel glib2-devel gtk-doc json-glib-devel libsoup-devel ninja-build python3-pip qt5-qtbase-devel qt5-qtdeclarative-devel redhat-rpm-config vala
+
+      - name: Install meson
+        run: pip3 install meson
+
+      - name: Build
+        run: |
+          meson _build
+          ninja -C _build
+          ninja -C _build snapd-glib-doc
+
+      - name: Test
+        run: ninja -C _build test
+
+      - name: Collect logs on failure
+        if: failure()
+        uses: actions/upload-artifact@v2
+        with:
+          name: ${{ steps.params.outputs.artifact }}
+          path: _build/meson-logs
diff -pruN 1.59-3/meson.build 1.60-0ubuntu1/meson.build
--- 1.59-3/meson.build	2021-03-04 03:49:31.100319100 +0000
+++ 1.60-0ubuntu1/meson.build	2022-02-15 01:52:07.000000000 +0000
@@ -1,5 +1,5 @@
 project ('snapd-glib', [ 'c', 'cpp' ],
-         version: '1.59',
+         version: '1.60',
          meson_version: '>= 0.43.0',
          default_options : [ 'c_std=c11', 'cpp_std=c++11' ])
 
diff -pruN 1.59-3/NEWS 1.60-0ubuntu1/NEWS
--- 1.59-3/NEWS	2021-03-04 03:49:31.096319000 +0000
+++ 1.60-0ubuntu1/NEWS	2022-02-15 01:52:07.000000000 +0000
@@ -1,3 +1,18 @@
+Overview of changes in snapd-glib 1.60
+
+    * New API:
+      - snapd_client_check_themes_async
+      - snapd_client_check_themes_finish
+      - snapd_client_check_themes_sync
+      - snapd_client_install_themes_async
+      - snapd_client_install_themes_finish
+      - snapd_client_install_themes_sync
+      - snapd_snap_get_store_url
+    * Support store-url snap field.
+    * Ensure async callbacks don't try to access destroyed Qt request objects.
+    * Add new themes API.
+    * Allow empty query in searches.
+
 Overview of changes in snapd-glib 1.59
 
    * New API:
diff -pruN 1.59-3/snapd-glib/meson.build 1.60-0ubuntu1/snapd-glib/meson.build
--- 1.59-3/snapd-glib/meson.build	2021-03-04 03:49:31.100319100 +0000
+++ 1.60-0ubuntu1/snapd-glib/meson.build	2022-02-15 01:52:07.000000000 +0000
@@ -48,6 +48,7 @@ source_private_h = [
   'requests/snapd-get-snap-conf.h',
   'requests/snapd-get-snaps.h',
   'requests/snapd-get-system-info.h',
+  'requests/snapd-get-themes.h',
   'requests/snapd-get-users.h',
   'requests/snapd-post-aliases.h',
   'requests/snapd-post-assertions.h',
@@ -64,6 +65,7 @@ source_private_h = [
   'requests/snapd-post-snap-try.h',
   'requests/snapd-post-snaps.h',
   'requests/snapd-post-snapctl.h',
+  'requests/snapd-post-themes.h',
   'requests/snapd-put-snap-conf.h',
   'requests/snapd-request.h',
   'requests/snapd-request-async.h',
@@ -117,6 +119,7 @@ source_private_c = [
   'requests/snapd-get-snap-conf.c',
   'requests/snapd-get-snaps.c',
   'requests/snapd-get-system-info.c',
+  'requests/snapd-get-themes.c',
   'requests/snapd-get-users.c',
   'requests/snapd-post-aliases.c',
   'requests/snapd-post-assertions.c',
@@ -133,6 +136,7 @@ source_private_c = [
   'requests/snapd-post-snap-try.c',
   'requests/snapd-post-snaps.c',
   'requests/snapd-post-snapctl.c',
+  'requests/snapd-post-themes.c',
   'requests/snapd-put-snap-conf.c',
   'requests/snapd-request.c',
   'requests/snapd-request-async.c',
diff -pruN 1.59-3/snapd-glib/requests/snapd-get-themes.c 1.60-0ubuntu1/snapd-glib/requests/snapd-get-themes.c
--- 1.59-3/snapd-glib/requests/snapd-get-themes.c	1970-01-01 00:00:00.000000000 +0000
+++ 1.60-0ubuntu1/snapd-glib/requests/snapd-get-themes.c	2022-02-15 01:52:07.000000000 +0000
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2021 Canonical Ltd.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2 or version 3 of the License.
+ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license.
+ */
+
+#include "snapd-get-themes.h"
+
+#include "snapd-client.h"
+#include "snapd-json.h"
+
+struct _SnapdGetThemes
+{
+    SnapdRequest parent_instance;
+
+    GStrv gtk_theme_names;
+    GStrv icon_theme_names;
+    GStrv sound_theme_names;
+
+    GHashTable *gtk_theme_status;
+    GHashTable *icon_theme_status;
+    GHashTable *sound_theme_status;
+};
+
+G_DEFINE_TYPE (SnapdGetThemes, snapd_get_themes, snapd_request_get_type ())
+
+SnapdGetThemes *
+_snapd_get_themes_new (GStrv gtk_theme_names, GStrv icon_theme_names, GStrv sound_theme_names, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+{
+    SnapdGetThemes *self = SNAPD_GET_THEMES (g_object_new (snapd_get_themes_get_type (),
+                                                           "cancellable", cancellable,
+                                                           "ready-callback", callback,
+                                                           "ready-callback-data", user_data,
+                                                           NULL));
+
+    self->gtk_theme_names = g_strdupv (gtk_theme_names);
+    self->icon_theme_names = g_strdupv (icon_theme_names);
+    self->sound_theme_names = g_strdupv (sound_theme_names);
+
+    return self;
+}
+
+GHashTable *
+_snapd_get_themes_get_gtk_theme_status (SnapdGetThemes *self)
+{
+    return self->gtk_theme_status;
+}
+
+GHashTable *
+_snapd_get_themes_get_icon_theme_status (SnapdGetThemes *self)
+{
+    return self->icon_theme_status;
+}
+
+GHashTable *
+_snapd_get_themes_get_sound_theme_status (SnapdGetThemes *self)
+{
+    return self->sound_theme_status;
+}
+
+static void
+add_theme_names (GString *path, gboolean *first_param, const char *theme_type, GStrv theme_names)
+{
+    char *const *name;
+
+    if (theme_names == NULL)
+        return;
+
+    for (name = theme_names; *name != NULL; name++) {
+        g_autofree gchar *escaped = soup_uri_encode (*name, NULL);
+
+        g_string_append_c (path, *first_param ? '?' : '&');
+        *first_param = FALSE;
+        g_string_append (path, theme_type);
+        g_string_append (path, escaped);
+    }
+}
+
+static SoupMessage *
+generate_get_themes_request (SnapdRequest *request)
+{
+    SnapdGetThemes *self = SNAPD_GET_THEMES (request);
+
+    g_autoptr(GString) path = g_string_new ("http://snapd/v2/accessories/themes");
+    gboolean first_param = TRUE;
+
+    add_theme_names (path, &first_param, "gtk-theme=", self->gtk_theme_names);
+    add_theme_names (path, &first_param, "icon-theme=", self->icon_theme_names);
+    add_theme_names (path, &first_param, "sound-theme=", self->sound_theme_names);
+
+    return soup_message_new ("GET", path->str);
+}
+
+static GHashTable *
+parse_theme_status(JsonNode *status_object) {
+    g_autoptr(GHashTable) status = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+    if (status_object == NULL || json_node_get_value_type (status_object) != JSON_TYPE_OBJECT)
+        return NULL;
+
+    JsonObjectIter iter;
+    json_object_iter_init (&iter, json_node_get_object (status_object));
+    const char *theme_name;
+    JsonNode *node;
+    while (json_object_iter_next (&iter, &theme_name, &node)) {
+        const char *value = json_node_get_string (node);
+        SnapdThemeStatus theme_status = SNAPD_THEME_STATUS_UNAVAILABLE;
+
+        if (g_strcmp0 (value, "installed") == 0) {
+            theme_status = SNAPD_THEME_STATUS_INSTALLED;
+        } else if (g_strcmp0 (value, "available") == 0) {
+            theme_status = SNAPD_THEME_STATUS_AVAILABLE;
+        } else if (g_strcmp0 (value, "unavailable") == 0) {
+            theme_status = SNAPD_THEME_STATUS_UNAVAILABLE;
+        }
+        g_hash_table_insert (status, g_strdup (theme_name), GINT_TO_POINTER (theme_status));
+    }
+
+    return g_steal_pointer(&status);
+}
+
+static gboolean
+parse_get_themes_response (SnapdRequest *request, SoupMessage *message, SnapdMaintenance **maintenance, GError **error)
+{
+    SnapdGetThemes *self = SNAPD_GET_THEMES (request);
+
+    g_autoptr(JsonObject) response = _snapd_json_parse_response (message, maintenance, NULL, error);
+    if (response == NULL)
+        return FALSE;
+    /* FIXME: Needs json-glib to be fixed to use json_node_unref */
+    /*g_autoptr(JsonNode) result = NULL;*/
+    JsonNode *result = _snapd_json_get_sync_result (response, error);
+    if (result == NULL)
+        return FALSE;
+
+    JsonObject *object = json_node_get_object (result);
+
+    self->gtk_theme_status = parse_theme_status (json_object_get_member (object, "gtk-themes"));
+    self->icon_theme_status = parse_theme_status (json_object_get_member (object, "icon-themes"));
+    self->sound_theme_status = parse_theme_status (json_object_get_member (object, "sound-themes"));
+
+    return TRUE;
+}
+
+static void
+snapd_get_themes_finalize (GObject *object)
+{
+    SnapdGetThemes *self = SNAPD_GET_THEMES (object);
+
+    g_clear_pointer (&self->gtk_theme_names, g_strfreev);
+    g_clear_pointer (&self->icon_theme_names, g_strfreev);
+    g_clear_pointer (&self->sound_theme_names, g_strfreev);
+
+    g_clear_pointer (&self->gtk_theme_status, g_hash_table_unref);
+    g_clear_pointer (&self->icon_theme_status, g_hash_table_unref);
+    g_clear_pointer (&self->sound_theme_status, g_hash_table_unref);
+
+    G_OBJECT_CLASS (snapd_get_themes_parent_class)->finalize (object);
+}
+
+static void
+snapd_get_themes_class_init (SnapdGetThemesClass *klass)
+{
+   SnapdRequestClass *request_class = SNAPD_REQUEST_CLASS (klass);
+   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+   request_class->generate_request = generate_get_themes_request;
+   request_class->parse_response = parse_get_themes_response;
+   gobject_class->finalize = snapd_get_themes_finalize;
+}
+
+static void
+snapd_get_themes_init (SnapdGetThemes *self)
+{
+}
diff -pruN 1.59-3/snapd-glib/requests/snapd-get-themes.h 1.60-0ubuntu1/snapd-glib/requests/snapd-get-themes.h
--- 1.59-3/snapd-glib/requests/snapd-get-themes.h	1970-01-01 00:00:00.000000000 +0000
+++ 1.60-0ubuntu1/snapd-glib/requests/snapd-get-themes.h	2022-02-15 01:52:07.000000000 +0000
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2021 Canonical Ltd.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2 or version 3 of the License.
+ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license.
+ */
+
+#ifndef __SNAPD_GET_THEMES_H__
+#define __SNAPD_GET_THEMES_H__
+
+#include "snapd-request.h"
+
+G_BEGIN_DECLS
+
+G_DECLARE_FINAL_TYPE (SnapdGetThemes, snapd_get_themes, SNAPD, GET_THEMES, SnapdRequest)
+
+SnapdGetThemes *_snapd_get_themes_new (GStrv                gtk_theme_names,
+                                       GStrv                icon_theme_names,
+                                       GStrv                sound_theme_names,
+                                       GCancellable        *cancellable,
+                                       GAsyncReadyCallback  callback,
+                                       gpointer             user_data);
+
+GHashTable *_snapd_get_themes_get_gtk_theme_status   (SnapdGetThemes *request);
+GHashTable *_snapd_get_themes_get_icon_theme_status  (SnapdGetThemes *request);
+GHashTable *_snapd_get_themes_get_sound_theme_status (SnapdGetThemes *request);
+
+G_END_DECLS
+
+#endif /* __SNAPD_GET_THEMES_H__ */
diff -pruN 1.59-3/snapd-glib/requests/snapd-json.c 1.60-0ubuntu1/snapd-glib/requests/snapd-json.c
--- 1.59-3/snapd-glib/requests/snapd-json.c	2021-03-04 03:49:31.104319000 +0000
+++ 1.60-0ubuntu1/snapd-glib/requests/snapd-json.c	2022-02-15 01:52:07.000000000 +0000
@@ -867,6 +867,7 @@ _snapd_json_parse_snap (JsonNode *node,
                          "screenshots", screenshots_array,
                          "snap-type", snap_type,
                          "status", snap_status,
+                         "store-url", _snapd_json_get_string (object, "store-url", NULL),
                          "summary", _snapd_json_get_string (object, "summary", NULL),
                          "title", _snapd_json_get_string (object, "title", NULL),
                          "tracking-channel", _snapd_json_get_string (object, "tracking-channel", NULL),
diff -pruN 1.59-3/snapd-glib/requests/snapd-post-themes.c 1.60-0ubuntu1/snapd-glib/requests/snapd-post-themes.c
--- 1.59-3/snapd-glib/requests/snapd-post-themes.c	1970-01-01 00:00:00.000000000 +0000
+++ 1.60-0ubuntu1/snapd-glib/requests/snapd-post-themes.c	2022-02-15 01:52:07.000000000 +0000
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2021 Canonical Ltd.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2 or version 3 of the License.
+ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license.
+ */
+
+#include "snapd-post-themes.h"
+
+#include "snapd-json.h"
+
+struct _SnapdPostThemes
+{
+    SnapdRequestAsync parent_instance;
+    GStrv gtk_theme_names;
+    GStrv icon_theme_names;
+    GStrv sound_theme_names;
+};
+
+G_DEFINE_TYPE (SnapdPostThemes, snapd_post_themes, snapd_request_async_get_type ())
+
+SnapdPostThemes *
+_snapd_post_themes_new (GStrv gtk_theme_names, GStrv icon_theme_names, GStrv sound_theme_names,
+                        SnapdProgressCallback progress_callback, gpointer progress_callback_data,
+                        GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+{
+    SnapdPostThemes *self = SNAPD_POST_THEMES (g_object_new (snapd_post_themes_get_type (),
+                                                             "cancellable", cancellable,
+                                                             "ready-callback", callback,
+                                                             "ready-callback-data", user_data,
+                                                             "progress-callback", progress_callback,
+                                                             "progress-callback-data", progress_callback_data,
+                                                             NULL));
+    self->gtk_theme_names = g_strdupv (gtk_theme_names);
+    self->icon_theme_names = g_strdupv (icon_theme_names);
+    self->sound_theme_names = g_strdupv (sound_theme_names);
+
+    return self;
+}
+
+static void
+add_themes (JsonBuilder *builder, const char *member_name, GStrv theme_names) {
+    char *const *name;
+
+    if (theme_names == NULL)
+        return;
+
+    json_builder_set_member_name (builder, member_name);
+    json_builder_begin_array (builder);
+    for (name = theme_names; *name != NULL; name++) {
+        json_builder_add_string_value (builder, *name);
+    }
+    json_builder_end_array (builder);
+}
+
+static SoupMessage *
+generate_post_themes_request (SnapdRequest *request)
+{
+    SnapdPostThemes *self = SNAPD_POST_THEMES (request);
+
+    SoupMessage *message = soup_message_new ("POST", "http://snapd/v2/accessories/themes");
+
+    g_autoptr(JsonBuilder) builder = json_builder_new ();
+    json_builder_begin_object (builder);
+    add_themes (builder, "gtk-themes", self->gtk_theme_names);
+    add_themes (builder, "icon-themes", self->icon_theme_names);
+    add_themes (builder, "sound-themes", self->sound_theme_names);
+    json_builder_end_object (builder);
+    _snapd_json_set_body (message, builder);
+
+    return message;
+}
+
+static void
+snapd_post_themes_finalize (GObject *object)
+{
+    SnapdPostThemes *self = SNAPD_POST_THEMES (object);
+
+    g_clear_pointer (&self->gtk_theme_names, g_strfreev);
+    g_clear_pointer (&self->icon_theme_names, g_strfreev);
+    g_clear_pointer (&self->sound_theme_names, g_strfreev);
+
+    G_OBJECT_CLASS (snapd_post_themes_parent_class)->finalize (object);
+}
+
+static void
+snapd_post_themes_class_init (SnapdPostThemesClass *klass)
+{
+   SnapdRequestClass *request_class = SNAPD_REQUEST_CLASS (klass);
+   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+   request_class->generate_request = generate_post_themes_request;
+   gobject_class->finalize = snapd_post_themes_finalize;
+}
+
+static void
+snapd_post_themes_init (SnapdPostThemes *self)
+{
+}
diff -pruN 1.59-3/snapd-glib/requests/snapd-post-themes.h 1.60-0ubuntu1/snapd-glib/requests/snapd-post-themes.h
--- 1.59-3/snapd-glib/requests/snapd-post-themes.h	1970-01-01 00:00:00.000000000 +0000
+++ 1.60-0ubuntu1/snapd-glib/requests/snapd-post-themes.h	2022-02-15 01:52:07.000000000 +0000
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 Canonical Ltd.
+ *
+ * This library is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 2 or version 3 of the License.
+ * See http://www.gnu.org/copyleft/lgpl.html the full text of the license.
+ */
+
+#ifndef __SNAPD_POST_THEMES_H__
+#define __SNAPD_POST_THEMES_H__
+
+#include "snapd-request-async.h"
+
+G_BEGIN_DECLS
+
+G_DECLARE_FINAL_TYPE (SnapdPostThemes, snapd_post_themes, SNAPD, POST_THEMES, SnapdRequestAsync)
+
+SnapdPostThemes *_snapd_post_themes_new (GStrv                 gtk_theme_names,
+                                         GStrv                 icon_theme_names,
+                                         GStrv                 sound_theme_names,
+                                         SnapdProgressCallback progress_callback,
+                                         gpointer              progress_callback_data,
+                                         GCancellable         *cancellable,
+                                         GAsyncReadyCallback   callback,
+                                         gpointer              user_data);
+
+G_END_DECLS
+
+#endif /* __SNAPD_POST_THEMES_H__ */
diff -pruN 1.59-3/snapd-glib/snapd-client.c 1.60-0ubuntu1/snapd-glib/snapd-client.c
--- 1.59-3/snapd-glib/snapd-client.c	2021-03-04 03:49:31.116319400 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-client.c	2022-02-15 01:52:07.000000000 +0000
@@ -31,6 +31,7 @@
 #include "requests/snapd-get-snap-conf.h"
 #include "requests/snapd-get-snaps.h"
 #include "requests/snapd-get-system-info.h"
+#include "requests/snapd-get-themes.h"
 #include "requests/snapd-get-users.h"
 #include "requests/snapd-post-aliases.h"
 #include "requests/snapd-post-assertions.h"
@@ -47,6 +48,7 @@
 #include "requests/snapd-post-snap-try.h"
 #include "requests/snapd-post-snaps.h"
 #include "requests/snapd-post-snapctl.h"
+#include "requests/snapd-post-themes.h"
 #include "requests/snapd-put-snap-conf.h"
 
 /**
@@ -2344,7 +2346,7 @@ snapd_client_disconnect_interface_finish
  * snapd_client_find_async:
  * @client: a #SnapdClient.
  * @flags: a set of #SnapdFindFlags to control how the find is performed.
- * @query: query string to send.
+ * @query: (allow-none): query string to send or %NULL to return featured snaps.
  * @cancellable: (allow-none): a #GCancellable or %NULL.
  * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied.
  * @user_data: (closure): the data to pass to callback function.
@@ -2404,7 +2406,6 @@ snapd_client_find_section_async (SnapdCl
                                  GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
 {
     g_return_if_fail (SNAPD_IS_CLIENT (self));
-    g_return_if_fail (section != NULL || query != NULL);
 
     g_autoptr(SnapdGetFind) request = _snapd_get_find_new (cancellable, callback, user_data);
     if ((flags & SNAPD_FIND_FLAGS_MATCH_NAME) != 0)
@@ -3971,6 +3972,121 @@ snapd_client_download_finish (SnapdClien
 }
 
 /**
+ * snapd_client_check_themes_async:
+ * @client: a #SnapdClient.
+ * @gtk_theme_names: (allow-none): a list of GTK theme names.
+ * @icon_theme_names: (allow-none): a list of icon theme names.
+ * @sound_theme_names: (allow-none): a list of sound theme names.
+ * @cancellable: (allow-none): a #GCancellable or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
+ *
+ * Asynchronously check for snaps providing the requested desktop themes.
+ * See snapd_client_check_themes_sync() for more information.
+ *
+ * Since: 1.60
+ */
+void
+snapd_client_check_themes_async (SnapdClient *self,
+                                 GStrv gtk_theme_names,
+                                 GStrv icon_theme_names,
+                                 GStrv sound_theme_names,
+                                 GCancellable *cancellable,
+                                 GAsyncReadyCallback callback,
+                                 gpointer user_data)
+{
+    g_return_if_fail (SNAPD_IS_CLIENT (self));
+
+    g_autoptr(SnapdGetThemes) request = _snapd_get_themes_new (gtk_theme_names, icon_theme_names, sound_theme_names, cancellable, callback, user_data);
+    send_request (self, SNAPD_REQUEST (request));
+}
+
+/**
+ * snapd_client_check_themes_finish:
+ * @client: a #SnapdClient.
+ * @result: a #GAsyncResult.
+ * @gtk_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of GTK themes.
+ * @icon_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of icon themes.
+ * @sound_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of sound themes.
+ * @error: (allow-none): #GError location to store the error occurring, or %NULL to ignore.
+ *
+ * Complete request started with snapd_client_check_themes_async().
+ * See snapd_client_check_themes_sync() for more information.
+ *
+ * Returns: %TRUE on success.
+ *
+ * Since: 1.60
+ */
+gboolean
+snapd_client_check_themes_finish (SnapdClient *self, GAsyncResult *result, GHashTable **gtk_theme_status, GHashTable **icon_theme_status, GHashTable **sound_theme_status, GError **error)
+{
+    g_return_val_if_fail (SNAPD_IS_CLIENT (self), FALSE);
+    g_return_val_if_fail (SNAPD_IS_GET_THEMES (result), FALSE);
+
+    SnapdGetThemes *request = SNAPD_GET_THEMES (result);
+
+    if (!_snapd_request_propagate_error (SNAPD_REQUEST (request), error))
+        return FALSE;
+
+    if (gtk_theme_status)
+        *gtk_theme_status = g_hash_table_ref (_snapd_get_themes_get_gtk_theme_status (request));
+    if (icon_theme_status)
+        *icon_theme_status = g_hash_table_ref (_snapd_get_themes_get_icon_theme_status (request));
+    if (sound_theme_status)
+        *sound_theme_status = g_hash_table_ref (_snapd_get_themes_get_sound_theme_status (request));
+
+    return TRUE;
+}
+
+/**
+ * snapd_client_install_themes_async:
+ * @client: a #SnapdClient.
+ * @gtk_theme_names: (allow-none): a list of GTK theme names.
+ * @icon_theme_names: (allow-none): a list of icon theme names.
+ * @sound_theme_names: (allow-none): a list of sound theme names.
+ * @progress_callback: (allow-none) (scope call): function to callback with progress.
+ * @progress_callback_data: (closure): user data to pass to @progress_callback.
+ * @cancellable: (allow-none): a #GCancellable or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
+ *
+ * Asynchronously install snaps that provide the requested desktop themes.
+ * See snapd_client_install_themes_sync() for more information.
+ *
+ * Since: 1.60
+ */
+void
+snapd_client_install_themes_async (SnapdClient *self, GStrv gtk_theme_names, GStrv icon_theme_names, GStrv sound_theme_names, SnapdProgressCallback progress_callback, gpointer progress_callback_data, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+{
+    g_return_if_fail (SNAPD_IS_CLIENT (self));
+
+    g_autoptr(SnapdPostThemes) request = _snapd_post_themes_new (gtk_theme_names, icon_theme_names, sound_theme_names, progress_callback, progress_callback_data, cancellable, callback, user_data);
+    send_request (self, SNAPD_REQUEST (request));
+}
+
+/**
+ * snapd_client_install_themes_finish:
+ * @client: a #SnapdClient.
+ * @result: a #GAsyncResult.
+ * @error: (allow-none): #GError location to store the error occurring, or %NULL to ignore.
+ *
+ * Complete request started with snapd_client_install_themes_async().
+ * See snapd_client_install_themes_sync() for more information.
+ *
+ * Returns: %TRUE on success.
+ *
+ * Since: 1.60
+ */
+gboolean
+snapd_client_install_themes_finish (SnapdClient *self, GAsyncResult *result, GError **error)
+{
+    g_return_val_if_fail (SNAPD_IS_CLIENT (self), FALSE);
+    g_return_val_if_fail (SNAPD_IS_POST_THEMES (result), FALSE);
+
+    return _snapd_request_propagate_error (SNAPD_REQUEST (result), error);
+}
+
+/**
  * snapd_client_new:
  *
  * Create a new client to talk to snapd.
diff -pruN 1.59-3/snapd-glib/snapd-client.h 1.60-0ubuntu1/snapd-glib/snapd-client.h
--- 1.59-3/snapd-glib/snapd-client.h	2021-03-04 03:49:31.120319400 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-client.h	2022-02-15 01:52:07.000000000 +0000
@@ -208,6 +208,23 @@ typedef enum
 } SnapdGetInterfacesFlags;
 
 /**
+ * SnapdThemeStatus:
+ * @SNAPD_THEME_STATUS_INSTALLED: the theme is installed.
+ * @SNAPD_THEME_STATUS_AVAILABLE: the theme is not installed but a package is available.
+ * @SNAPD_THEME_STATUS_UNAVAILABLE: the theme is not available.
+ *
+ * The status of a snap-packaged desktop theme.
+ *
+ * Since: 1.60
+ */
+typedef enum
+{
+    SNAPD_THEME_STATUS_INSTALLED = 1,
+    SNAPD_THEME_STATUS_AVAILABLE,
+    SNAPD_THEME_STATUS_UNAVAILABLE,
+} SnapdThemeStatus;
+
+/**
  * SnapdProgressCallback:
  * @client: a #SnapdClient
  * @change: a #SnapdChange describing the change in progress
@@ -1144,6 +1161,50 @@ GBytes                 *snapd_client_dow
                                                                     GAsyncResult         *result,
                                                                     GError              **error);
 
+gboolean                snapd_client_check_themes_sync             (SnapdClient          *client,
+                                                                    GStrv                 gtk_theme_names,
+                                                                    GStrv                 icon_theme_names,
+                                                                    GStrv                 sound_theme_names,
+                                                                    GHashTable          **gtk_theme_status,
+                                                                    GHashTable          **icon_theme_status,
+                                                                    GHashTable          **sound_theme_status,
+                                                                    GCancellable         *cancellable,
+                                                                    GError              **error);
+void                    snapd_client_check_themes_async            (SnapdClient          *client,
+                                                                    GStrv                 gtk_theme_names,
+                                                                    GStrv                 icon_theme_names,
+                                                                    GStrv                 sound_theme_names,
+                                                                    GCancellable         *cancellable,
+                                                                    GAsyncReadyCallback   callback,
+                                                                    gpointer              user_data);
+gboolean                snapd_client_check_themes_finish           (SnapdClient          *client,
+                                                                    GAsyncResult         *result,
+                                                                    GHashTable          **gtk_theme_status,
+                                                                    GHashTable          **icon_theme_status,
+                                                                    GHashTable          **sound_theme_status,
+                                                                    GError              **error);
+
+gboolean                snapd_client_install_themes_sync           (SnapdClient          *client,
+                                                                    GStrv                 gtk_theme_names,
+                                                                    GStrv                 icon_theme_names,
+                                                                    GStrv                 sound_theme_names,
+                                                                    SnapdProgressCallback progress_callback,
+                                                                    gpointer              progress_callback_data,
+                                                                    GCancellable         *cancellable,
+                                                                    GError              **error);
+void                    snapd_client_install_themes_async          (SnapdClient          *client,
+                                                                    GStrv                 gtk_theme_names,
+                                                                    GStrv                 icon_theme_names,
+                                                                    GStrv                 sound_theme_names,
+                                                                    SnapdProgressCallback progress_callback,
+                                                                    gpointer              progress_callback_data,
+                                                                    GCancellable         *cancellable,
+                                                                    GAsyncReadyCallback   callback,
+                                                                    gpointer              user_data);
+gboolean                snapd_client_install_themes_finish         (SnapdClient          *client,
+                                                                    GAsyncResult         *result,
+                                                                    GError              **error);
+
 G_END_DECLS
 
 #endif /* __SNAPD_CLIENT_H__ */
diff -pruN 1.59-3/snapd-glib/snapd-client-sync.c 1.60-0ubuntu1/snapd-glib/snapd-client-sync.c
--- 1.59-3/snapd-glib/snapd-client-sync.c	2021-03-04 03:49:31.116319400 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-client-sync.c	2022-02-15 01:52:07.000000000 +0000
@@ -794,7 +794,7 @@ snapd_client_disconnect_interface_sync (
  * snapd_client_find_sync:
  * @client: a #SnapdClient.
  * @flags: a set of #SnapdFindFlags to control how the find is performed.
- * @query: query string to send.
+ * @query: (allow-none): query string to send or %NULL to return featured snaps.
  * @suggested_currency: (out) (allow-none): location to store the ISO 4217 currency that is suggested to purchase with.
  * @cancellable: (allow-none): a #GCancellable or %NULL.
  * @error: (allow-none): #GError location to store the error occurring, or %NULL to ignore.
@@ -811,7 +811,6 @@ snapd_client_find_sync (SnapdClient *sel
                         gchar **suggested_currency,
                         GCancellable *cancellable, GError **error)
 {
-    g_return_val_if_fail (query != NULL, NULL);
     return snapd_client_find_section_sync (self, flags, NULL, query, suggested_currency, cancellable, error);
 }
 
@@ -1697,3 +1696,62 @@ snapd_client_download_sync (SnapdClient
     end_sync (&data);
     return snapd_client_download_finish (self, data.result, error);
 }
+
+/**
+ * snapd_client_check_themes_sync:
+ * @client: a #SnapdClient.
+ * @gtk_theme_names: (allow-none): a list of GTK theme names.
+ * @icon_theme_names: (allow-none): a list of icon theme names.
+ * @sound_theme_names: (allow-none): a list of sound theme names.
+ * @gtk_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of GTK themes.
+ * @icon_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of icon themes.
+ * @sound_theme_status: (out) (transfer container) (element-type utf8 SnapdThemeStatus): status of sound themes.
+ * @cancellable: (allow-none): a #GCancellable or %NULL.
+ * @error: (allow-none): #GError location to store the error occurring, or %NULL to ignore.
+ *
+ * Check the status of snap packaged versions of named desktop
+ * themes. For each theme, it will determine whether it is already
+ * installed, uninstalled but available on the store, or unavailable.
+ *
+ * Since: 1.60
+ */
+gboolean
+snapd_client_check_themes_sync (SnapdClient *self, GStrv gtk_theme_names, GStrv icon_theme_names, GStrv sound_theme_names, GHashTable **gtk_theme_status, GHashTable **icon_theme_status, GHashTable **sound_theme_status, GCancellable *cancellable, GError **error)
+{
+    g_return_val_if_fail (SNAPD_IS_CLIENT (self), FALSE);
+
+    g_auto(SyncData) data = { 0 };
+    start_sync (&data);
+    snapd_client_check_themes_async (self, gtk_theme_names, icon_theme_names, sound_theme_names, cancellable, sync_cb, &data);
+    end_sync (&data);
+    return snapd_client_check_themes_finish (self, data.result, gtk_theme_status, icon_theme_status, sound_theme_status, error);
+}
+
+/**
+ * snapd_client_install_themes_sync:
+ * @client: a #SnapdClient.
+ * @gtk_theme_names: (allow-none): a list of GTK theme names.
+ * @icon_theme_names: (allow-none): a list of icon theme names.
+ * @sound_theme_names: (allow-none): a list of sound theme names.
+ * @progress_callback: (allow-none) (scope call): function to callback with progress.
+ * @progress_callback_data: (closure): user data to pass to @progress_callback.
+ * @cancellable: (allow-none): a #GCancellable or %NULL.
+ * @error: (allow-none): #GError location to store the error occurring, or %NULL to ignore.
+ *
+ * Install snaps that provide the named desktop themes. If all the
+ * named themes are in the "installed" or "unavailable" states, then
+ * an error will be returned.
+ *
+ * Since: 1.60
+ */
+gboolean
+snapd_client_install_themes_sync (SnapdClient *self, GStrv gtk_theme_names, GStrv icon_theme_names, GStrv sound_theme_names, SnapdProgressCallback progress_callback, gpointer progress_callback_data, GCancellable *cancellable, GError **error)
+{
+    g_return_val_if_fail (SNAPD_IS_CLIENT (self), FALSE);
+
+    g_auto(SyncData) data = { 0 };
+    start_sync (&data);
+    snapd_client_install_themes_async (self, gtk_theme_names, icon_theme_names, sound_theme_names, progress_callback, progress_callback_data, cancellable, sync_cb, &data);
+    end_sync (&data);
+    return snapd_client_install_themes_finish (self, data.result, error);
+}
diff -pruN 1.59-3/snapd-glib/snapd-snap.c 1.60-0ubuntu1/snapd-glib/snapd-snap.c
--- 1.59-3/snapd-glib/snapd-snap.c	2021-03-04 03:49:31.132319700 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-snap.c	2022-02-15 01:52:07.000000000 +0000
@@ -61,6 +61,7 @@ struct _SnapdSnap
     gchar *revision;
     GPtrArray *screenshots;
     SnapdSnapStatus status;
+    gchar *store_url;
     gchar *summary;
     gchar *title;
     gchar *tracking_channel;
@@ -92,6 +93,7 @@ enum
     PROP_REVISION,
     PROP_SCREENSHOTS,
     PROP_STATUS,
+    PROP_STORE_URL,
     PROP_SUMMARY,
     PROP_TRYMODE,
     PROP_SNAP_TYPE,
@@ -729,6 +731,23 @@ snapd_snap_get_status (SnapdSnap *self)
 }
 
 /**
+ * snapd_snap_get_store_url:
+ * @snap: a #SnapdSnap.
+ *
+ * Get a URL to the web snap store, e.g. "https://snapcraft.io/example"
+ *
+ * Returns: (allow-none): a URL or %NULL.
+ *
+ * Since: 1.60
+ */
+const gchar *
+snapd_snap_get_store_url (SnapdSnap *self)
+{
+    g_return_val_if_fail (SNAPD_IS_SNAP (self), NULL);
+    return self->store_url;
+}
+
+/**
  * snapd_snap_get_summary:
  * @snap: a #SnapdSnap.
  *
@@ -948,6 +967,10 @@ snapd_snap_set_property (GObject *object
     case PROP_STATUS:
         self->status = g_value_get_enum (value);
         break;
+    case PROP_STORE_URL:
+        g_free (self->store_url);
+        self->store_url = g_strdup (g_value_get_string (value));
+        break;
     case PROP_SUMMARY:
         g_free (self->summary);
         self->summary = g_strdup (g_value_get_string (value));
@@ -1080,6 +1103,9 @@ snapd_snap_get_property (GObject *object
     case PROP_STATUS:
         g_value_set_enum (value, self->status);
         break;
+    case PROP_STORE_URL:
+        g_value_set_string (value, self->store_url);
+        break;
     case PROP_SUMMARY:
         g_value_set_string (value, self->summary);
         break;
@@ -1139,6 +1165,7 @@ snapd_snap_finalize (GObject *object)
     g_clear_pointer (&self->publisher_username, g_free);
     g_clear_pointer (&self->revision, g_free);
     g_clear_pointer (&self->screenshots, g_ptr_array_unref);
+    g_clear_pointer (&self->store_url, g_free);
     g_clear_pointer (&self->summary, g_free);
     g_clear_pointer (&self->title, g_free);
     g_clear_pointer (&self->tracking_channel, g_free);
@@ -1376,6 +1403,13 @@ snapd_snap_class_init (SnapdSnapClass *k
                                                           NULL,
                                                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
     g_object_class_install_property (gobject_class,
+                                     PROP_STORE_URL,
+                                     g_param_spec_string ("store-url",
+                                                          "store-url",
+                                                          "Web store URL",
+                                                          NULL,
+                                                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+    g_object_class_install_property (gobject_class,
                                      PROP_TITLE,
                                      g_param_spec_string ("title",
                                                           "title",
diff -pruN 1.59-3/snapd-glib/snapd-snap.h 1.60-0ubuntu1/snapd-glib/snapd-snap.h
--- 1.59-3/snapd-glib/snapd-snap.h	2021-03-04 03:49:31.132319700 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-snap.h	2022-02-15 01:52:07.000000000 +0000
@@ -154,6 +154,8 @@ SnapdSnapType            snapd_snap_get_
 
 SnapdSnapStatus          snapd_snap_get_status                 (SnapdSnap   *snap);
 
+const gchar             *snapd_snap_get_store_url              (SnapdSnap   *snap);
+
 const gchar             *snapd_snap_get_summary                (SnapdSnap   *snap);
 
 const gchar             *snapd_snap_get_title                  (SnapdSnap   *snap);
diff -pruN 1.59-3/snapd-glib/snapd-version.h 1.60-0ubuntu1/snapd-glib/snapd-version.h
--- 1.59-3/snapd-glib/snapd-version.h	2021-03-04 03:49:31.140319800 +0000
+++ 1.60-0ubuntu1/snapd-glib/snapd-version.h	2022-02-15 01:52:07.000000000 +0000
@@ -554,4 +554,13 @@
  */
 #define SNAPD_GLIB_VERSION_1_59
 
+/**
+ * SNAPD_GLIB_VERSION_1_60:
+ *
+ * A define that can be used by the C pre-processor to check for features in 1.60
+ *
+ * Since: 1.60
+ */
+#define SNAPD_GLIB_VERSION_1_60
+
 #endif /* __SNAPD_GLIB_VERSION_H__ */
diff -pruN 1.59-3/snapd-qt/client.cpp 1.60-0ubuntu1/snapd-qt/client.cpp
--- 1.59-3/snapd-qt/client.cpp	2021-03-04 03:49:31.156320000 +0000
+++ 1.60-0ubuntu1/snapd-qt/client.cpp	2022-02-15 01:52:07.000000000 +0000
@@ -13,6 +13,21 @@
 #include "client-private.h"
 #include "variant.h"
 
+G_DEFINE_TYPE (CallbackData, callback_data, G_TYPE_OBJECT)
+
+static void
+callback_data_init (CallbackData *self) {}
+
+static void
+callback_data_class_init (CallbackDataClass *klass) {}
+
+CallbackData *callback_data_new (gpointer request)
+{
+    CallbackData *data = (CallbackData *) g_object_new (callback_data_get_type (), NULL);
+    data->request = request;
+    return data;
+}
+
 class QSnapdClientPrivate
 {
 public:
@@ -38,11 +53,11 @@ public:
 
 QSnapdClient::QSnapdClient(QObject *parent) :
     QObject (parent),
-    d_ptr (new QSnapdClientPrivate()) {}
+    d_ptr (new QSnapdClientPrivate ()) {}
 
 QSnapdClient::QSnapdClient(int fd, QObject *parent) :
     QObject (parent),
-    d_ptr (new QSnapdClientPrivate(fd)) {}
+    d_ptr (new QSnapdClientPrivate (fd)) {}
 
 QSnapdClient::~QSnapdClient()
 {}
@@ -745,7 +760,7 @@ QSnapdDownloadRequest *QSnapdClient::dow
 
 QSnapdConnectRequest::QSnapdConnectRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdConnectRequestPrivate()) {}
+    d_ptr (new QSnapdConnectRequestPrivate (this)) {}
 
 void QSnapdConnectRequest::runSync ()
 {
@@ -764,13 +779,14 @@ void QSnapdConnectRequest::runAsync ()
 
 QSnapdLoginRequest::QSnapdLoginRequest (void *snapd_client, const QString& email, const QString& password, const QString& otp, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdLoginRequestPrivate(email, password, otp))
+    d_ptr (new QSnapdLoginRequestPrivate (this, email, password, otp))
 {
 }
 
 void QSnapdLoginRequest::runSync ()
 {
     Q_D(QSnapdLoginRequest);
+
     g_autoptr(GError) error = NULL;
     if (getClient () != NULL)
         d->user_information = snapd_client_login2_sync (SNAPD_CLIENT (getClient ()), d->email.toStdString ().c_str (), d->password.toStdString ().c_str (), d->otp.isNull () ? NULL : d->otp.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
@@ -784,32 +800,35 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 void QSnapdLoginRequest::handleResult (void *object, void *result)
 {
     Q_D(QSnapdLoginRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     if (getClient () != NULL)
         d->user_information = snapd_client_login2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     else
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
         d->auth_data = snapd_login_finish (G_ASYNC_RESULT (result), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
-
     finish (error);
 }
 
 static void login_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdLoginRequest *request = static_cast<QSnapdLoginRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdLoginRequest *request = static_cast<QSnapdLoginRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdLoginRequest::runAsync ()
 {
     Q_D(QSnapdLoginRequest);
+
     if (getClient () != NULL)
-        snapd_client_login2_async (SNAPD_CLIENT (getClient ()), d->email.toStdString ().c_str (), d->password.toStdString ().c_str (), d->otp.isNull () ? NULL : d->otp.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), login_ready_cb, (gpointer) this);
+        snapd_client_login2_async (SNAPD_CLIENT (getClient ()), d->email.toStdString ().c_str (), d->password.toStdString ().c_str (), d->otp.isNull () ? NULL : d->otp.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), login_ready_cb, g_object_ref (d->callback_data));
     else
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-        snapd_login_async (d->email.toStdString ().c_str (), d->password.toStdString ().c_str (), d->otp.isNull () ? NULL : d->otp.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), login_ready_cb, (gpointer) this);
+        snapd_login_async (d->email.toStdString ().c_str (), d->password.toStdString ().c_str (), d->otp.isNull () ? NULL : d->otp.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), login_ready_cb, g_object_ref (d->callback_data));
 G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
@@ -822,6 +841,7 @@ QSnapdUserInformation *QSnapdLoginReques
 QSnapdAuthData *QSnapdLoginRequest::authData ()
 {
     Q_D(QSnapdLoginRequest);
+
     if (d->auth_data != NULL)
         return new QSnapdAuthData (d->auth_data);
     else
@@ -830,15 +850,15 @@ QSnapdAuthData *QSnapdLoginRequest::auth
 
 QSnapdLogoutRequest::QSnapdLogoutRequest (void *snapd_client, qint64 id, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdLogoutRequestPrivate(id))
+    d_ptr (new QSnapdLogoutRequestPrivate (this, id))
 {
 }
 
 void QSnapdLogoutRequest::runSync ()
 {
     Q_D(QSnapdLogoutRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     snapd_client_logout_sync (SNAPD_CLIENT (getClient ()), d->id, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -853,14 +873,17 @@ void QSnapdLogoutRequest::handleResult (
 
 static void logout_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdLogoutRequest *request = static_cast<QSnapdLogoutRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdLogoutRequest *request = static_cast<QSnapdLogoutRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdLogoutRequest::runAsync ()
 {
     Q_D(QSnapdLogoutRequest);
-    snapd_client_logout_async (SNAPD_CLIENT (getClient ()), d->id, G_CANCELLABLE (getCancellable ()), logout_ready_cb, (gpointer) this);
+    snapd_client_logout_async (SNAPD_CLIENT (getClient ()), d->id, G_CANCELLABLE (getCancellable ()), logout_ready_cb, g_object_ref (d->callback_data));
 }
 
 static SnapdChangeFilter convertChangeFilter (int filter)
@@ -879,11 +902,12 @@ static SnapdChangeFilter convertChangeFi
 
 QSnapdGetChangesRequest::QSnapdGetChangesRequest (int filter, const QString& snapName, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetChangesRequestPrivate (filter, snapName)) {}
+    d_ptr (new QSnapdGetChangesRequestPrivate (this, filter, snapName)) {}
 
 void QSnapdGetChangesRequest::runSync ()
 {
     Q_D(QSnapdGetChangesRequest);
+
     g_autoptr(GError) error = NULL;
     d->changes = snapd_client_get_changes_sync (SNAPD_CLIENT (getClient ()), convertChangeFilter (d->filter), d->snapName.isNull () ? NULL : d->snapName.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -891,26 +915,27 @@ void QSnapdGetChangesRequest::runSync ()
 
 void QSnapdGetChangesRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) changes = NULL;
-    g_autoptr(GError) error = NULL;
-
-    changes = snapd_client_get_changes_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetChangesRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) changes = snapd_client_get_changes_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->changes = (GPtrArray*) g_steal_pointer (&changes);
     finish (error);
 }
 
 static void changes_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetChangesRequest *request = static_cast<QSnapdGetChangesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetChangesRequest *request = static_cast<QSnapdGetChangesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetChangesRequest::runAsync ()
 {
     Q_D(QSnapdGetChangesRequest);
-    snapd_client_get_changes_async (SNAPD_CLIENT (getClient ()), convertChangeFilter (d->filter), d->snapName.isNull () ? NULL : d->snapName.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), changes_ready_cb, (gpointer) this);
+    snapd_client_get_changes_async (SNAPD_CLIENT (getClient ()), convertChangeFilter (d->filter), d->snapName.isNull () ? NULL : d->snapName.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), changes_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetChangesRequest::changeCount () const
@@ -929,11 +954,12 @@ QSnapdChange *QSnapdGetChangesRequest::c
 
 QSnapdGetChangeRequest::QSnapdGetChangeRequest (const QString& id, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetChangeRequestPrivate (id)) {}
+    d_ptr (new QSnapdGetChangeRequestPrivate (this, id)) {}
 
 void QSnapdGetChangeRequest::runSync ()
 {
     Q_D(QSnapdGetChangeRequest);
+
     g_autoptr(GError) error = NULL;
     d->change = snapd_client_get_change_sync (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -941,26 +967,27 @@ void QSnapdGetChangeRequest::runSync ()
 
 void QSnapdGetChangeRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdChange) change = NULL;
-    g_autoptr(GError) error = NULL;
-
-    change = snapd_client_get_change_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetChangeRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdChange) change = snapd_client_get_change_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->change = (SnapdChange*) g_steal_pointer (&change);
     finish (error);
 }
 
 static void change_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetChangeRequest *request = static_cast<QSnapdGetChangeRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetChangeRequest *request = static_cast<QSnapdGetChangeRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetChangeRequest::runAsync ()
 {
     Q_D(QSnapdGetChangeRequest);
-    snapd_client_get_change_async (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), change_ready_cb, (gpointer) this);
+    snapd_client_get_change_async (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), change_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdChange *QSnapdGetChangeRequest::change () const
@@ -971,11 +998,12 @@ QSnapdChange *QSnapdGetChangeRequest::ch
 
 QSnapdAbortChangeRequest::QSnapdAbortChangeRequest (const QString& id, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdAbortChangeRequestPrivate (id)) {}
+    d_ptr (new QSnapdAbortChangeRequestPrivate (this, id)) {}
 
 void QSnapdAbortChangeRequest::runSync ()
 {
     Q_D(QSnapdAbortChangeRequest);
+
     g_autoptr(GError) error = NULL;
     d->change = snapd_client_abort_change_sync (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -983,26 +1011,27 @@ void QSnapdAbortChangeRequest::runSync (
 
 void QSnapdAbortChangeRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdChange) change = NULL;
-    g_autoptr(GError) error = NULL;
-
-    change = snapd_client_abort_change_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdAbortChangeRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdChange) change = snapd_client_abort_change_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->change = (SnapdChange*) g_steal_pointer (&change);
     finish (error);
 }
 
 static void abort_change_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdAbortChangeRequest *request = static_cast<QSnapdAbortChangeRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdAbortChangeRequest *request = static_cast<QSnapdAbortChangeRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdAbortChangeRequest::runAsync ()
 {
     Q_D(QSnapdAbortChangeRequest);
-    snapd_client_abort_change_async (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), abort_change_ready_cb, (gpointer) this);
+    snapd_client_abort_change_async (SNAPD_CLIENT (getClient ()), d->id.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), abort_change_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdChange *QSnapdAbortChangeRequest::change () const
@@ -1013,11 +1042,12 @@ QSnapdChange *QSnapdAbortChangeRequest::
 
 QSnapdGetSystemInformationRequest::QSnapdGetSystemInformationRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetSystemInformationRequestPrivate ()) {}
+    d_ptr (new QSnapdGetSystemInformationRequestPrivate (this)) {}
 
 void QSnapdGetSystemInformationRequest::runSync ()
 {
     Q_D(QSnapdGetSystemInformationRequest);
+
     g_autoptr(GError) error = NULL;
     d->info = snapd_client_get_system_information_sync (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1025,25 +1055,27 @@ void QSnapdGetSystemInformationRequest::
 
 void QSnapdGetSystemInformationRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdSystemInformation) info = NULL;
-    g_autoptr(GError) error = NULL;
-
-    info = snapd_client_get_system_information_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetSystemInformationRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdSystemInformation) info = snapd_client_get_system_information_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->info = (SnapdSystemInformation*) g_steal_pointer (&info);
     finish (error);
 }
 
 static void system_information_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetSystemInformationRequest *request = static_cast<QSnapdGetSystemInformationRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetSystemInformationRequest *request = static_cast<QSnapdGetSystemInformationRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetSystemInformationRequest::runAsync ()
 {
-    snapd_client_get_system_information_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), system_information_ready_cb, (gpointer) this);
+    Q_D(QSnapdGetSystemInformationRequest);
+    snapd_client_get_system_information_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), system_information_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdSystemInformation *QSnapdGetSystemInformationRequest::systemInformation ()
@@ -1054,11 +1086,12 @@ QSnapdSystemInformation *QSnapdGetSystem
 
 QSnapdListRequest::QSnapdListRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdListRequestPrivate ()) {}
+    d_ptr (new QSnapdListRequestPrivate (this)) {}
 
 void QSnapdListRequest::runSync ()
 {
     Q_D(QSnapdListRequest);
+
     g_autoptr(GError) error = NULL;
     d->snaps = snapd_client_get_snaps_sync (SNAPD_CLIENT (getClient ()), SNAPD_GET_SNAPS_FLAGS_NONE, NULL, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1066,25 +1099,27 @@ void QSnapdListRequest::runSync ()
 
 void QSnapdListRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) snaps = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snaps = snapd_client_get_snaps_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdListRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) snaps = snapd_client_get_snaps_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->snaps = (GPtrArray*) g_steal_pointer (&snaps);
     finish (error);
 }
 
 static void list_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdListRequest *request = static_cast<QSnapdListRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdListRequest *request = static_cast<QSnapdListRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdListRequest::runAsync ()
 {
-    snapd_client_get_snaps_async (SNAPD_CLIENT (getClient ()), SNAPD_GET_SNAPS_FLAGS_NONE, NULL, G_CANCELLABLE (getCancellable ()), list_ready_cb, (gpointer) this);
+    Q_D(QSnapdListRequest);
+    snapd_client_get_snaps_async (SNAPD_CLIENT (getClient ()), SNAPD_GET_SNAPS_FLAGS_NONE, NULL, G_CANCELLABLE (getCancellable ()), list_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdListRequest::snapCount () const
@@ -1096,6 +1131,7 @@ int QSnapdListRequest::snapCount () cons
 QSnapdSnap *QSnapdListRequest::snap (int n) const
 {
     Q_D(const QSnapdListRequest);
+
     if (d->snaps == NULL || n < 0 || (guint) n >= d->snaps->len)
         return NULL;
     return new QSnapdSnap (d->snaps->pdata[n]);
@@ -1128,44 +1164,43 @@ static SnapdGetSnapsFlags convertGetSnap
 
 QSnapdGetSnapsRequest::QSnapdGetSnapsRequest (int flags, const QStringList& snaps, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetSnapsRequestPrivate (flags, snaps)) {}
+    d_ptr (new QSnapdGetSnapsRequestPrivate (this, flags, snaps)) {}
 
 void QSnapdGetSnapsRequest::runSync ()
 {
     Q_D(QSnapdGetSnapsRequest);
-    g_auto(GStrv) snaps = NULL;
-    g_autoptr(GError) error = NULL;
 
-    snaps = string_list_to_strv (d->filter_snaps);
+    g_auto(GStrv) snaps = string_list_to_strv (d->filter_snaps);
+    g_autoptr(GError) error = NULL;
     d->snaps = snapd_client_get_snaps_sync (SNAPD_CLIENT (getClient ()), convertGetSnapsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
 
 void QSnapdGetSnapsRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) snaps = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snaps = snapd_client_get_snaps_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetSnapsRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) snaps = snapd_client_get_snaps_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->snaps = (GPtrArray*) g_steal_pointer (&snaps);
     finish (error);
 }
 
 static void get_snaps_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetSnapsRequest *request = static_cast<QSnapdGetSnapsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetSnapsRequest *request = static_cast<QSnapdGetSnapsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetSnapsRequest::runAsync ()
 {
     Q_D(QSnapdGetSnapsRequest);
-    g_auto(GStrv) snaps = NULL;
 
-    snaps = string_list_to_strv (d->filter_snaps);
-    snapd_client_get_snaps_async (SNAPD_CLIENT (getClient ()), convertGetSnapsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), get_snaps_ready_cb, (gpointer) this);
+    g_auto(GStrv) snaps = string_list_to_strv (d->filter_snaps);
+    snapd_client_get_snaps_async (SNAPD_CLIENT (getClient ()), convertGetSnapsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), get_snaps_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetSnapsRequest::snapCount () const
@@ -1177,6 +1212,7 @@ int QSnapdGetSnapsRequest::snapCount ()
 QSnapdSnap *QSnapdGetSnapsRequest::snap (int n) const
 {
     Q_D(const QSnapdGetSnapsRequest);
+
     if (d->snaps == NULL || n < 0 || (guint) n >= d->snaps->len)
         return NULL;
     return new QSnapdSnap (d->snaps->pdata[n]);
@@ -1184,11 +1220,12 @@ QSnapdSnap *QSnapdGetSnapsRequest::snap
 
 QSnapdListOneRequest::QSnapdListOneRequest (const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdListOneRequestPrivate (name)) {}
+    d_ptr (new QSnapdListOneRequestPrivate (this, name)) {}
 
 void QSnapdListOneRequest::runSync ()
 {
     Q_D(QSnapdListOneRequest);
+
     g_autoptr(GError) error = NULL;
     d->snap = snapd_client_get_snap_sync (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1196,26 +1233,27 @@ void QSnapdListOneRequest::runSync ()
 
 void QSnapdListOneRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdSnap) snap = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snap = snapd_client_get_snap_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdListOneRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdSnap) snap = snapd_client_get_snap_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->snap = (SnapdSnap*) g_steal_pointer (&snap);
     finish (error);
 }
 
 static void list_one_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdListOneRequest *request = static_cast<QSnapdListOneRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdListOneRequest *request = static_cast<QSnapdListOneRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdListOneRequest::runAsync ()
 {
     Q_D(QSnapdListOneRequest);
-    snapd_client_get_snap_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), list_one_ready_cb, (gpointer) this);
+    snapd_client_get_snap_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), list_one_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdSnap *QSnapdListOneRequest::snap () const
@@ -1226,11 +1264,12 @@ QSnapdSnap *QSnapdListOneRequest::snap (
 
 QSnapdGetSnapRequest::QSnapdGetSnapRequest (const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetSnapRequestPrivate (name)) {}
+    d_ptr (new QSnapdGetSnapRequestPrivate (this, name)) {}
 
 void QSnapdGetSnapRequest::runSync ()
 {
     Q_D(QSnapdGetSnapRequest);
+
     g_autoptr(GError) error = NULL;
     d->snap = snapd_client_get_snap_sync (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1238,26 +1277,27 @@ void QSnapdGetSnapRequest::runSync ()
 
 void QSnapdGetSnapRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdSnap) snap = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snap = snapd_client_get_snap_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetSnapRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdSnap) snap = snapd_client_get_snap_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->snap = (SnapdSnap*) g_steal_pointer (&snap);
     finish (error);
 }
 
 static void get_snap_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetSnapRequest *request = static_cast<QSnapdGetSnapRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetSnapRequest *request = static_cast<QSnapdGetSnapRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetSnapRequest::runAsync ()
 {
     Q_D(QSnapdGetSnapRequest);
-    snapd_client_get_snap_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_snap_ready_cb, (gpointer) this);
+    snapd_client_get_snap_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_snap_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdSnap *QSnapdGetSnapRequest::snap () const
@@ -1268,54 +1308,53 @@ QSnapdSnap *QSnapdGetSnapRequest::snap (
 
 QSnapdGetSnapConfRequest::QSnapdGetSnapConfRequest (const QString& name, const QStringList& keys, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetSnapConfRequestPrivate (name, keys)) {}
+    d_ptr (new QSnapdGetSnapConfRequestPrivate (this, name, keys)) {}
 
 void QSnapdGetSnapConfRequest::runSync ()
 {
     Q_D(QSnapdGetSnapConfRequest);
-    g_auto(GStrv) keys = NULL;
-    g_autoptr(GError) error = NULL;
 
-    keys = string_list_to_strv (d->keys);
+    g_auto(GStrv) keys = string_list_to_strv (d->keys);
+    g_autoptr(GError) error = NULL;
     d->configuration = snapd_client_get_snap_conf_sync (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), keys, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
 
 void QSnapdGetSnapConfRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GHashTable) configuration = NULL;
-    g_autoptr(GError) error = NULL;
-
-    configuration = snapd_client_get_snap_conf_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetSnapConfRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GHashTable) configuration = snapd_client_get_snap_conf_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->configuration = (GHashTable*) g_steal_pointer (&configuration);
     finish (error);
 }
 
 static void get_snap_conf_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetSnapConfRequest *request = static_cast<QSnapdGetSnapConfRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetSnapConfRequest *request = static_cast<QSnapdGetSnapConfRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetSnapConfRequest::runAsync ()
 {
     Q_D(QSnapdGetSnapConfRequest);
-    g_auto(GStrv) keys = NULL;
 
-    keys = string_list_to_strv (d->keys);
-    snapd_client_get_snap_conf_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), keys, G_CANCELLABLE (getCancellable ()), get_snap_conf_ready_cb, (gpointer) this);
+    g_auto(GStrv) keys = string_list_to_strv (d->keys);
+    snapd_client_get_snap_conf_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), keys, G_CANCELLABLE (getCancellable ()), get_snap_conf_ready_cb, g_object_ref (d->callback_data));
 }
 
 QHash<QString, QVariant> *QSnapdGetSnapConfRequest::configuration () const
 {
     Q_D(const QSnapdGetSnapConfRequest);
-    GHashTableIter iter;
-    gpointer key, value;
 
     QHash<QString, QVariant> *conf = new QHash<QString, QVariant> ();
+    GHashTableIter iter;
     g_hash_table_iter_init (&iter, d->configuration);
+    gpointer key, value;
     while (g_hash_table_iter_next (&iter, &key, &value)) {
         const gchar *conf_key = (const gchar *) key;
         GVariant *conf_value = (GVariant *) value;
@@ -1327,7 +1366,7 @@ QHash<QString, QVariant> *QSnapdGetSnapC
 
 QSnapdSetSnapConfRequest::QSnapdSetSnapConfRequest (const QString& name, const QHash<QString, QVariant>& configuration, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdSetSnapConfRequestPrivate (name, configuration)) {}
+    d_ptr (new QSnapdSetSnapConfRequestPrivate (this, name, configuration)) {}
 
 static GVariant *
 qvariant_to_gvariant (const QVariant& variant)
@@ -1390,10 +1429,9 @@ configuration_to_key_values (const QHash
 void QSnapdSetSnapConfRequest::runSync ()
 {
     Q_D(QSnapdSetSnapConfRequest);
-    g_autoptr(GHashTable) key_values = NULL;
-    g_autoptr(GError) error = NULL;
 
-    key_values = configuration_to_key_values (d->configuration);
+    g_autoptr(GHashTable) key_values = configuration_to_key_values (d->configuration);
+    g_autoptr(GError) error = NULL;
     snapd_client_set_snap_conf_sync (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), key_values, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -1409,17 +1447,19 @@ void QSnapdSetSnapConfRequest::handleRes
 
 static void set_snap_conf_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdSetSnapConfRequest *request = static_cast<QSnapdSetSnapConfRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdSetSnapConfRequest *request = static_cast<QSnapdSetSnapConfRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdSetSnapConfRequest::runAsync ()
 {
     Q_D(QSnapdSetSnapConfRequest);
-    g_autoptr(GHashTable) key_values = NULL;
 
-    key_values = configuration_to_key_values (d->configuration);
-    snapd_client_set_snap_conf_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), key_values, G_CANCELLABLE (getCancellable ()), set_snap_conf_ready_cb, (gpointer) this);
+    g_autoptr(GHashTable) key_values = configuration_to_key_values (d->configuration);
+    snapd_client_set_snap_conf_async (SNAPD_CLIENT (getClient ()), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), key_values, G_CANCELLABLE (getCancellable ()), set_snap_conf_ready_cb, g_object_ref (d->callback_data));
 }
 
 static SnapdGetAppsFlags convertGetAppsFlags (int flags)
@@ -1434,48 +1474,47 @@ static SnapdGetAppsFlags convertGetAppsF
 
 QSnapdGetAppsRequest::QSnapdGetAppsRequest (int flags, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetAppsRequestPrivate (flags, QStringList ())) {}
+    d_ptr (new QSnapdGetAppsRequestPrivate (this, flags, QStringList ())) {}
 
 QSnapdGetAppsRequest::QSnapdGetAppsRequest (int flags, const QStringList& snaps, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetAppsRequestPrivate (flags, snaps)) {}
+    d_ptr (new QSnapdGetAppsRequestPrivate (this, flags, snaps)) {}
 
 void QSnapdGetAppsRequest::runSync ()
 {
     Q_D(QSnapdGetAppsRequest);
-    g_auto(GStrv) snaps = NULL;
-    g_autoptr(GError) error = NULL;
 
-    snaps = string_list_to_strv (d->filter_snaps);
+    g_auto(GStrv) snaps = string_list_to_strv (d->filter_snaps);
+    g_autoptr(GError) error = NULL;
     d->apps = snapd_client_get_apps2_sync (SNAPD_CLIENT (getClient ()), convertGetAppsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
 
 void QSnapdGetAppsRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) apps = NULL;
-    g_autoptr(GError) error = NULL;
-
-    apps = snapd_client_get_apps2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetAppsRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) apps = snapd_client_get_apps2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->apps = (GPtrArray*) g_steal_pointer (&apps);
     finish (error);
 }
 
 static void get_apps_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetAppsRequest *request = static_cast<QSnapdGetAppsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetAppsRequest *request = static_cast<QSnapdGetAppsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetAppsRequest::runAsync ()
 {
     Q_D(QSnapdGetAppsRequest);
-    g_auto(GStrv) snaps = NULL;
 
-    snaps = string_list_to_strv (d->filter_snaps);
-    snapd_client_get_apps2_async (SNAPD_CLIENT (getClient ()), convertGetAppsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), get_apps_ready_cb, (gpointer) this);
+    g_auto(GStrv) snaps = string_list_to_strv (d->filter_snaps);
+    snapd_client_get_apps2_async (SNAPD_CLIENT (getClient ()), convertGetAppsFlags (d->flags), snaps, G_CANCELLABLE (getCancellable ()), get_apps_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetAppsRequest::appCount () const
@@ -1487,6 +1526,7 @@ int QSnapdGetAppsRequest::appCount () co
 QSnapdApp *QSnapdGetAppsRequest::app (int n) const
 {
     Q_D(const QSnapdGetAppsRequest);
+
     if (d->apps == NULL || n < 0 || (guint) n >= d->apps->len)
         return NULL;
     return new QSnapdApp (d->apps->pdata[n]);
@@ -1494,11 +1534,12 @@ QSnapdApp *QSnapdGetAppsRequest::app (in
 
 QSnapdGetIconRequest::QSnapdGetIconRequest (const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetIconRequestPrivate (name)) {}
+    d_ptr (new QSnapdGetIconRequestPrivate (this, name)) {}
 
 void QSnapdGetIconRequest::runSync ()
 {
     Q_D(QSnapdGetIconRequest);
+
     g_autoptr(GError) error = NULL;
     d->icon = snapd_client_get_icon_sync (SNAPD_CLIENT (getClient ()), d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1506,26 +1547,28 @@ void QSnapdGetIconRequest::runSync ()
 
 void QSnapdGetIconRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(SnapdIcon) icon = NULL;
-    g_autoptr(GError) error = NULL;
+    Q_D(QSnapdGetIconRequest);
 
-    icon = snapd_client_get_icon_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
+    g_autoptr(GError) error = NULL;
+    g_autoptr(SnapdIcon) icon = snapd_client_get_icon_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 
-    Q_D(QSnapdGetIconRequest);
     d->icon = (SnapdIcon*) g_steal_pointer (&icon);
     finish (error);
 }
 
 static void get_icon_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetIconRequest *request = static_cast<QSnapdGetIconRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetIconRequest *request = static_cast<QSnapdGetIconRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetIconRequest::runAsync ()
 {
     Q_D(QSnapdGetIconRequest);
-    snapd_client_get_icon_async (SNAPD_CLIENT (getClient ()), d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_icon_ready_cb, (gpointer) this);
+    snapd_client_get_icon_async (SNAPD_CLIENT (getClient ()), d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_icon_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdIcon *QSnapdGetIconRequest::icon () const
@@ -1536,11 +1579,12 @@ QSnapdIcon *QSnapdGetIconRequest::icon (
 
 QSnapdGetAssertionsRequest::QSnapdGetAssertionsRequest (const QString& type, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetAssertionsRequestPrivate (type)) {}
+    d_ptr (new QSnapdGetAssertionsRequestPrivate (this, type)) {}
 
 void QSnapdGetAssertionsRequest::runSync ()
 {
     Q_D(QSnapdGetAssertionsRequest);
+
     g_autoptr(GError) error = NULL;
     d->assertions = snapd_client_get_assertions_sync (SNAPD_CLIENT (getClient ()), d->type.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1548,31 +1592,34 @@ void QSnapdGetAssertionsRequest::runSync
 
 void QSnapdGetAssertionsRequest::handleResult (void *object, void *result)
 {
-    g_auto(GStrv) assertions = NULL;
-    g_autoptr(GError) error = NULL;
+    Q_D(QSnapdGetAssertionsRequest);
 
-    assertions = snapd_client_get_assertions_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
+    g_autoptr(GError) error = NULL;
+    g_auto(GStrv) assertions = snapd_client_get_assertions_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 
-    Q_D(QSnapdGetAssertionsRequest);
     d->assertions = (GStrv) g_steal_pointer (&assertions);
     finish (error);
 }
 
 static void get_assertions_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetAssertionsRequest *request = static_cast<QSnapdGetAssertionsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetAssertionsRequest *request = static_cast<QSnapdGetAssertionsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetAssertionsRequest::runAsync ()
 {
     Q_D(QSnapdGetAssertionsRequest);
-    snapd_client_get_assertions_async (SNAPD_CLIENT (getClient ()), d->type.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_assertions_ready_cb, (gpointer) this);
+    snapd_client_get_assertions_async (SNAPD_CLIENT (getClient ()), d->type.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_assertions_ready_cb, g_object_ref (d->callback_data));
 }
 
 QStringList QSnapdGetAssertionsRequest::assertions () const
 {
     Q_D(const QSnapdGetAssertionsRequest);
+
     QStringList result;
     for (int i = 0; d->assertions[i] != NULL; i++)
         result.append (d->assertions[i]);
@@ -1581,15 +1628,14 @@ QStringList QSnapdGetAssertionsRequest::
 
 QSnapdAddAssertionsRequest::QSnapdAddAssertionsRequest (const QStringList& assertions, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdAddAssertionsRequestPrivate (assertions)) {}
+    d_ptr (new QSnapdAddAssertionsRequestPrivate (this, assertions)) {}
 
 void QSnapdAddAssertionsRequest::runSync ()
 {
     Q_D(QSnapdAddAssertionsRequest);
-    g_auto(GStrv) assertions = NULL;
-    g_autoptr(GError) error = NULL;
 
-    assertions = string_list_to_strv (d->assertions);
+    g_auto(GStrv) assertions = string_list_to_strv (d->assertions);
+    g_autoptr(GError) error = NULL;
     snapd_client_add_assertions_sync (SNAPD_CLIENT (getClient ()), assertions, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -1605,17 +1651,19 @@ void QSnapdAddAssertionsRequest::handleR
 
 static void add_assertions_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdAddAssertionsRequest *request = static_cast<QSnapdAddAssertionsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdAddAssertionsRequest *request = static_cast<QSnapdAddAssertionsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdAddAssertionsRequest::runAsync ()
 {
     Q_D(QSnapdAddAssertionsRequest);
-    g_auto(GStrv) assertions = NULL;
 
-    assertions = string_list_to_strv (d->assertions);
-    snapd_client_add_assertions_async (SNAPD_CLIENT (getClient ()), assertions, G_CANCELLABLE (getCancellable ()), add_assertions_ready_cb, (gpointer) this);
+    g_auto(GStrv) assertions = string_list_to_strv (d->assertions);
+    snapd_client_add_assertions_async (SNAPD_CLIENT (getClient ()), assertions, G_CANCELLABLE (getCancellable ()), add_assertions_ready_cb, g_object_ref (d->callback_data));
 }
 
 static SnapdGetConnectionsFlags convertGetConnectionsFlags (int flags)
@@ -1630,11 +1678,12 @@ static SnapdGetConnectionsFlags convertG
 
 QSnapdGetConnectionsRequest::QSnapdGetConnectionsRequest (int flags, const QString &snap, const QString &interface, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetConnectionsRequestPrivate (flags, snap, interface)) {}
+    d_ptr (new QSnapdGetConnectionsRequestPrivate (this, flags, snap, interface)) {}
 
 void QSnapdGetConnectionsRequest::runSync ()
 {
     Q_D(QSnapdGetConnectionsRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_get_connections2_sync (SNAPD_CLIENT (getClient ()), convertGetConnectionsFlags (d->flags), d->snap.isNull () ? NULL : d->snap.toStdString ().c_str (), d->interface.isNull () ? NULL : d->interface.toStdString ().c_str (), &d->established, &d->undesired, &d->plugs, &d->slots_, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -1642,15 +1691,14 @@ void QSnapdGetConnectionsRequest::runSyn
 
 void QSnapdGetConnectionsRequest::handleResult (void *object, void *result)
 {
+    Q_D(QSnapdGetConnectionsRequest);
+
     g_autoptr(GPtrArray) established = NULL;
     g_autoptr(GPtrArray) undesired = NULL;
     g_autoptr(GPtrArray) plugs = NULL;
     g_autoptr(GPtrArray) slots_ = NULL;
     g_autoptr(GError) error = NULL;
-
     snapd_client_get_connections2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &established, &undesired, &plugs, &slots_, &error);
-
-    Q_D(QSnapdGetConnectionsRequest);
     d->established = (GPtrArray*) g_steal_pointer (&established);
     d->undesired = (GPtrArray*) g_steal_pointer (&undesired);
     d->plugs = (GPtrArray*) g_steal_pointer (&plugs);
@@ -1660,14 +1708,17 @@ void QSnapdGetConnectionsRequest::handle
 
 static void get_connections_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetConnectionsRequest *request = static_cast<QSnapdGetConnectionsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetConnectionsRequest *request = static_cast<QSnapdGetConnectionsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetConnectionsRequest::runAsync ()
 {
     Q_D(QSnapdGetConnectionsRequest);
-    snapd_client_get_connections2_async (SNAPD_CLIENT (getClient ()), convertGetConnectionsFlags (d->flags), d->snap.isNull () ? NULL : d->snap.toStdString ().c_str (), d->interface.isNull () ? NULL : d->interface.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_connections_ready_cb, (gpointer) this);
+    snapd_client_get_connections2_async (SNAPD_CLIENT (getClient ()), convertGetConnectionsFlags (d->flags), d->snap.isNull () ? NULL : d->snap.toStdString ().c_str (), d->interface.isNull () ? NULL : d->interface.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), get_connections_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetConnectionsRequest::establishedCount () const
@@ -1679,6 +1730,7 @@ int QSnapdGetConnectionsRequest::establi
 QSnapdConnection *QSnapdGetConnectionsRequest::established (int n) const
 {
     Q_D(const QSnapdGetConnectionsRequest);
+
     if (d->established == NULL || n < 0 || (guint) n >= d->established->len)
         return NULL;
     return new QSnapdConnection (d->established->pdata[n]);
@@ -1693,6 +1745,7 @@ int QSnapdGetConnectionsRequest::undesir
 QSnapdConnection *QSnapdGetConnectionsRequest::undesired (int n) const
 {
     Q_D(const QSnapdGetConnectionsRequest);
+
     if (d->undesired == NULL || n < 0 || (guint) n >= d->undesired->len)
         return NULL;
     return new QSnapdConnection (d->undesired->pdata[n]);
@@ -1707,6 +1760,7 @@ int QSnapdGetConnectionsRequest::plugCou
 QSnapdPlug *QSnapdGetConnectionsRequest::plug (int n) const
 {
     Q_D(const QSnapdGetConnectionsRequest);
+
     if (d->plugs == NULL || n < 0 || (guint) n >= d->plugs->len)
         return NULL;
     return new QSnapdPlug (d->plugs->pdata[n]);
@@ -1721,6 +1775,7 @@ int QSnapdGetConnectionsRequest::slotCou
 QSnapdSlot *QSnapdGetConnectionsRequest::slot (int n) const
 {
     Q_D(const QSnapdGetConnectionsRequest);
+
     if (d->slots_ == NULL || n < 0 || (guint) n >= d->slots_->len)
         return NULL;
     return new QSnapdSlot (d->slots_->pdata[n]);
@@ -1728,11 +1783,12 @@ QSnapdSlot *QSnapdGetConnectionsRequest:
 
 QSnapdGetInterfacesRequest::QSnapdGetInterfacesRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetInterfacesRequestPrivate ()) {}
+    d_ptr (new QSnapdGetInterfacesRequestPrivate (this)) {}
 
 void QSnapdGetInterfacesRequest::runSync ()
 {
     Q_D(QSnapdGetInterfacesRequest);
+
     g_autoptr(GError) error = NULL;
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_get_interfaces_sync (SNAPD_CLIENT (getClient ()), &d->plugs, &d->slots_, G_CANCELLABLE (getCancellable ()), &error);
@@ -1742,15 +1798,14 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
 void QSnapdGetInterfacesRequest::handleResult (void *object, void *result)
 {
+    Q_D(QSnapdGetInterfacesRequest);
+
     g_autoptr(GPtrArray) plugs = NULL;
     g_autoptr(GPtrArray) slots_ = NULL;
     g_autoptr(GError) error = NULL;
-
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_get_interfaces_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &plugs, &slots_, &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
-
-    Q_D(QSnapdGetInterfacesRequest);
     d->plugs = (GPtrArray*) g_steal_pointer (&plugs);
     d->slots_ = (GPtrArray*) g_steal_pointer (&slots_);
     finish (error);
@@ -1758,14 +1813,18 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 
 static void get_interfaces_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetInterfacesRequest *request = static_cast<QSnapdGetInterfacesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetInterfacesRequest *request = static_cast<QSnapdGetInterfacesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetInterfacesRequest::runAsync ()
 {
+    Q_D(QSnapdGetInterfacesRequest);
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-    snapd_client_get_interfaces_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), get_interfaces_ready_cb, (gpointer) this);
+    snapd_client_get_interfaces_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), get_interfaces_ready_cb, g_object_ref (d->callback_data));
 G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
@@ -1778,6 +1837,7 @@ int QSnapdGetInterfacesRequest::plugCoun
 QSnapdPlug *QSnapdGetInterfacesRequest::plug (int n) const
 {
     Q_D(const QSnapdGetInterfacesRequest);
+
     if (d->plugs == NULL || n < 0 || (guint) n >= d->plugs->len)
         return NULL;
     return new QSnapdPlug (d->plugs->pdata[n]);
@@ -1792,6 +1852,7 @@ int QSnapdGetInterfacesRequest::slotCoun
 QSnapdSlot *QSnapdGetInterfacesRequest::slot (int n) const
 {
     Q_D(const QSnapdGetInterfacesRequest);
+
     if (d->slots_ == NULL || n < 0 || (guint) n >= d->slots_->len)
         return NULL;
     return new QSnapdSlot (d->slots_->pdata[n]);
@@ -1799,7 +1860,7 @@ QSnapdSlot *QSnapdGetInterfacesRequest::
 
 QSnapdGetInterfaces2Request::QSnapdGetInterfaces2Request (int flags, const QStringList &names, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetInterfaces2RequestPrivate (flags, names)) {}
+    d_ptr (new QSnapdGetInterfaces2RequestPrivate (this, flags, names)) {}
 
 static SnapdGetInterfacesFlags convertInterfaceFlags (int flags)
 {
@@ -1820,39 +1881,38 @@ static SnapdGetInterfacesFlags convertIn
 void QSnapdGetInterfaces2Request::runSync ()
 {
     Q_D(QSnapdGetInterfaces2Request);
-    g_auto(GStrv) names = NULL;
-    g_autoptr(GError) error = NULL;
 
-    names = string_list_to_strv (d->names);
+    g_auto(GStrv) names = string_list_to_strv (d->names);
+    g_autoptr(GError) error = NULL;
     d->interfaces = snapd_client_get_interfaces2_sync (SNAPD_CLIENT (getClient ()), convertInterfaceFlags (d->flags), names, G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
 
 void QSnapdGetInterfaces2Request::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) interfaces = NULL;
-    g_autoptr(GError) error = NULL;
-
-    interfaces = snapd_client_get_interfaces2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetInterfaces2Request);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) interfaces = snapd_client_get_interfaces2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->interfaces = (GPtrArray*) g_steal_pointer (&interfaces);
     finish (error);
 }
 
 static void get_interfaces2_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetInterfaces2Request *request = static_cast<QSnapdGetInterfaces2Request*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetInterfaces2Request *request = static_cast<QSnapdGetInterfaces2Request*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetInterfaces2Request::runAsync ()
 {
     Q_D(QSnapdGetInterfaces2Request);
-    g_auto(GStrv) names = NULL;
 
-    names = string_list_to_strv (d->names);
-    snapd_client_get_interfaces2_async (SNAPD_CLIENT (getClient ()), convertInterfaceFlags (d->flags), names, G_CANCELLABLE (getCancellable ()), get_interfaces2_ready_cb, (gpointer) this);
+    g_auto(GStrv) names = string_list_to_strv (d->names);
+    snapd_client_get_interfaces2_async (SNAPD_CLIENT (getClient ()), convertInterfaceFlags (d->flags), names, G_CANCELLABLE (getCancellable ()), get_interfaces2_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetInterfaces2Request::interfaceCount () const
@@ -1864,6 +1924,7 @@ int QSnapdGetInterfaces2Request::interfa
 QSnapdInterface *QSnapdGetInterfaces2Request::interface (int n) const
 {
     Q_D(const QSnapdGetInterfaces2Request);
+
     if (d->interfaces == NULL || n < 0 || (guint) n >= d->interfaces->len)
         return NULL;
     return new QSnapdInterface (d->interfaces->pdata[n]);
@@ -1871,22 +1932,26 @@ QSnapdInterface *QSnapdGetInterfaces2Req
 
 QSnapdConnectInterfaceRequest::QSnapdConnectInterfaceRequest (const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdConnectInterfaceRequestPrivate (plug_snap, plug_name, slot_snap, slot_name)) {}
+    d_ptr (new QSnapdConnectInterfaceRequestPrivate (this, plug_snap, plug_name, slot_snap, slot_name)) {}
 
 static void progress_cb (SnapdClient *client, SnapdChange *change, gpointer, gpointer data)
 {
-    QSnapdRequest *request = static_cast<QSnapdRequest*>(data);
-    request->handleProgress (change);
+    CallbackData *callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdRequest *request = static_cast<QSnapdRequest*>(callback_data->request);
+        request->handleProgress (change);
+    }
 }
 
 void QSnapdConnectInterfaceRequest::runSync ()
 {
     Q_D(QSnapdConnectInterfaceRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_connect_interface_sync (SNAPD_CLIENT (getClient ()),
                                          d->plug_snap.toStdString ().c_str (), d->plug_name.toStdString ().c_str (),
                                          d->slot_snap.toStdString ().c_str (), d->slot_name.toStdString ().c_str (),
-                                         progress_cb, this,
+                                         progress_cb, d->callback_data,
                                          G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -1902,8 +1967,11 @@ void QSnapdConnectInterfaceRequest::hand
 
 static void connect_interface_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdConnectInterfaceRequest *request = static_cast<QSnapdConnectInterfaceRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdConnectInterfaceRequest *request = static_cast<QSnapdConnectInterfaceRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdConnectInterfaceRequest::runAsync ()
@@ -1912,22 +1980,23 @@ void QSnapdConnectInterfaceRequest::runA
     snapd_client_connect_interface_async (SNAPD_CLIENT (getClient ()),
                                           d->plug_snap.toStdString ().c_str (), d->plug_name.toStdString ().c_str (),
                                           d->slot_snap.toStdString ().c_str (), d->slot_name.toStdString ().c_str (),
-                                          progress_cb, this,
-                                          G_CANCELLABLE (getCancellable ()), connect_interface_ready_cb, (gpointer) this);
+                                          progress_cb, d->callback_data,
+                                          G_CANCELLABLE (getCancellable ()), connect_interface_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdDisconnectInterfaceRequest::QSnapdDisconnectInterfaceRequest (const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdDisconnectInterfaceRequestPrivate (plug_snap, plug_name, slot_snap, slot_name)) {}
+    d_ptr (new QSnapdDisconnectInterfaceRequestPrivate (this, plug_snap, plug_name, slot_snap, slot_name)) {}
 
 void QSnapdDisconnectInterfaceRequest::runSync ()
 {
     Q_D(QSnapdDisconnectInterfaceRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_disconnect_interface_sync (SNAPD_CLIENT (getClient ()),
                                             d->plug_snap.toStdString ().c_str (), d->plug_name.toStdString ().c_str (),
                                             d->slot_snap.toStdString ().c_str (), d->slot_name.toStdString ().c_str (),
-                                            progress_cb, this,
+                                            progress_cb, d->callback_data,
                                             G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -1937,14 +2006,16 @@ void QSnapdDisconnectInterfaceRequest::h
     g_autoptr(GError) error = NULL;
 
     snapd_client_disconnect_interface_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void disconnect_interface_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdDisconnectInterfaceRequest *request = static_cast<QSnapdDisconnectInterfaceRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdDisconnectInterfaceRequest *request = static_cast<QSnapdDisconnectInterfaceRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdDisconnectInterfaceRequest::runAsync ()
@@ -1953,8 +2024,8 @@ void QSnapdDisconnectInterfaceRequest::r
     snapd_client_disconnect_interface_async (SNAPD_CLIENT (getClient ()),
                                              d->plug_snap.toStdString ().c_str (), d->plug_name.toStdString ().c_str (),
                                              d->slot_snap.toStdString ().c_str (), d->slot_name.toStdString ().c_str (),
-                                             progress_cb, this,
-                                             G_CANCELLABLE (getCancellable ()), disconnect_interface_ready_cb, (gpointer) this);
+                                             progress_cb, d->callback_data,
+                                             G_CANCELLABLE (getCancellable ()), disconnect_interface_ready_cb, g_object_ref (d->callback_data));
 }
 
 static SnapdFindFlags convertFindFlags (int flags)
@@ -1975,11 +2046,12 @@ static SnapdFindFlags convertFindFlags (
 
 QSnapdFindRequest::QSnapdFindRequest (int flags, const QString& section, const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdFindRequestPrivate (flags, section, name)) {}
+    d_ptr (new QSnapdFindRequestPrivate (this, flags, section, name)) {}
 
 void QSnapdFindRequest::runSync ()
 {
     Q_D(QSnapdFindRequest);
+
     g_autoptr(GError) error = NULL;
     g_autofree gchar *suggested_currency = NULL;
     d->snaps = snapd_client_find_section_sync (SNAPD_CLIENT (getClient ()), convertFindFlags (d->flags), d->section.isNull () ? NULL : d->section.toStdString().c_str (), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), &suggested_currency, G_CANCELLABLE (getCancellable ()), &error);
@@ -1989,13 +2061,11 @@ void QSnapdFindRequest::runSync ()
 
 void QSnapdFindRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) snaps = NULL;
+    Q_D(QSnapdFindRequest);
+
     g_autofree gchar *suggested_currency = NULL;
     g_autoptr(GError) error = NULL;
-
-    snaps = snapd_client_find_section_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &suggested_currency, &error);
-
-    Q_D(QSnapdFindRequest);
+    g_autoptr(GPtrArray) snaps = snapd_client_find_section_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &suggested_currency, &error);
     d->snaps = (GPtrArray*) g_steal_pointer (&snaps);
     d->suggestedCurrency = suggested_currency;
     finish (error);
@@ -2003,14 +2073,17 @@ void QSnapdFindRequest::handleResult (vo
 
 static void find_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdFindRequest *request = static_cast<QSnapdFindRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdFindRequest *request = static_cast<QSnapdFindRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdFindRequest::runAsync ()
 {
     Q_D(QSnapdFindRequest);
-    snapd_client_find_section_async (SNAPD_CLIENT (getClient ()), convertFindFlags (d->flags), d->section.isNull () ? NULL : d->section.toStdString ().c_str (), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), find_ready_cb, (gpointer) this);
+    snapd_client_find_section_async (SNAPD_CLIENT (getClient ()), convertFindFlags (d->flags), d->section.isNull () ? NULL : d->section.toStdString ().c_str (), d->name.isNull () ? NULL : d->name.toStdString ().c_str (), G_CANCELLABLE (getCancellable ()), find_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdFindRequest::snapCount () const
@@ -2022,6 +2095,7 @@ int QSnapdFindRequest::snapCount () cons
 QSnapdSnap *QSnapdFindRequest::snap (int n) const
 {
     Q_D(const QSnapdFindRequest);
+
     if (d->snaps == NULL || n < 0 || (guint) n >= d->snaps->len)
         return NULL;
     return new QSnapdSnap (d->snaps->pdata[n]);
@@ -2035,11 +2109,12 @@ const QString QSnapdFindRequest::suggest
 
 QSnapdFindRefreshableRequest::QSnapdFindRefreshableRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdFindRefreshableRequestPrivate ()) {}
+    d_ptr (new QSnapdFindRefreshableRequestPrivate (this)) {}
 
 void QSnapdFindRefreshableRequest::runSync ()
 {
     Q_D(QSnapdFindRefreshableRequest);
+
     g_autoptr(GError) error = NULL;
     d->snaps = snapd_client_find_refreshable_sync (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
@@ -2047,25 +2122,27 @@ void QSnapdFindRefreshableRequest::runSy
 
 void QSnapdFindRefreshableRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) snaps = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snaps = snapd_client_find_refreshable_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdFindRefreshableRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) snaps = snapd_client_find_refreshable_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->snaps = (GPtrArray*) g_steal_pointer (&snaps);
     finish (error);
 }
 
 static void find_refreshable_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdFindRefreshableRequest *request = static_cast<QSnapdFindRefreshableRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdFindRefreshableRequest *request = static_cast<QSnapdFindRefreshableRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdFindRefreshableRequest::runAsync ()
 {
-    snapd_client_find_refreshable_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), find_refreshable_ready_cb, (gpointer) this);
+    Q_D(QSnapdFindRefreshableRequest);
+    snapd_client_find_refreshable_async (SNAPD_CLIENT (getClient ()), G_CANCELLABLE (getCancellable ()), find_refreshable_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdFindRefreshableRequest::snapCount () const
@@ -2077,6 +2154,7 @@ int QSnapdFindRefreshableRequest::snapCo
 QSnapdSnap *QSnapdFindRefreshableRequest::snap (int n) const
 {
     Q_D(const QSnapdFindRefreshableRequest);
+
     if (d->snaps == NULL || n < 0 || (guint) n >= d->snaps->len)
         return NULL;
     return new QSnapdSnap (d->snaps->pdata[n]);
@@ -2100,17 +2178,18 @@ static SnapdInstallFlags convertInstallF
 
 QSnapdInstallRequest::QSnapdInstallRequest (int flags, const QString& name, const QString& channel, const QString& revision, QIODevice *ioDevice, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdInstallRequestPrivate (flags, name, channel, revision, ioDevice)) {}
+    d_ptr (new QSnapdInstallRequestPrivate (this, flags, name, channel, revision, ioDevice)) {}
 
 void QSnapdInstallRequest::runSync ()
 {
     Q_D(QSnapdInstallRequest);
+
     g_autoptr(GError) error = NULL;
     if (d->wrapper != NULL) {
         snapd_client_install_stream_sync (SNAPD_CLIENT (getClient ()),
                                           convertInstallFlags (d->flags),
                                           G_INPUT_STREAM (d->wrapper),
-                                          progress_cb, this,
+                                          progress_cb, d->callback_data,
                                           G_CANCELLABLE (getCancellable ()), &error);
     }
     else {
@@ -2119,7 +2198,7 @@ void QSnapdInstallRequest::runSync ()
                                     d->name.toStdString ().c_str (),
                                     d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
                                     d->revision.isNull () ? NULL : d->revision.toStdString ().c_str (),
-                                    progress_cb, this,
+                                    progress_cb, d->callback_data,
                                     G_CANCELLABLE (getCancellable ()), &error);
     }
     finish (error);
@@ -2128,52 +2207,56 @@ void QSnapdInstallRequest::runSync ()
 void QSnapdInstallRequest::handleResult (void *object, void *result)
 {
     Q_D(QSnapdInstallRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     if (d->wrapper != NULL)
         snapd_client_install_stream_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     else
         snapd_client_install2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void install_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdInstallRequest *request = static_cast<QSnapdInstallRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdInstallRequest *request = static_cast<QSnapdInstallRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdInstallRequest::runAsync ()
 {
     Q_D(QSnapdInstallRequest);
+
     if (d->wrapper != NULL)
         snapd_client_install_stream_async (SNAPD_CLIENT (getClient ()),
                                            convertInstallFlags (d->flags),
                                            G_INPUT_STREAM (d->wrapper),
-                                           progress_cb, this,
-                                           G_CANCELLABLE (getCancellable ()), install_ready_cb, (gpointer) this);
+                                           progress_cb, d->callback_data,
+                                           G_CANCELLABLE (getCancellable ()), install_ready_cb, g_object_ref (d->callback_data));
     else
         snapd_client_install2_async (SNAPD_CLIENT (getClient ()),
                                      convertInstallFlags (d->flags),
                                      d->name.toStdString ().c_str (),
                                      d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
                                      d->revision.isNull () ? NULL : d->revision.toStdString ().c_str (),
-                                     progress_cb, this,
-                                     G_CANCELLABLE (getCancellable ()), install_ready_cb, (gpointer) this);
+                                     progress_cb, d->callback_data,
+                                     G_CANCELLABLE (getCancellable ()), install_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdTryRequest::QSnapdTryRequest (const QString& path, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdTryRequestPrivate (path)) {}
+    d_ptr (new QSnapdTryRequestPrivate (this, path)) {}
 
 void QSnapdTryRequest::runSync ()
 {
     Q_D(QSnapdTryRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_try_sync (SNAPD_CLIENT (getClient ()),
                            d->path.toStdString ().c_str (),
-                           progress_cb, this,
+                           progress_cb, d->callback_data,
                            G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2181,16 +2264,17 @@ void QSnapdTryRequest::runSync ()
 void QSnapdTryRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_try_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void try_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdTryRequest *request = static_cast<QSnapdTryRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdTryRequest *request = static_cast<QSnapdTryRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdTryRequest::runAsync ()
@@ -2198,21 +2282,22 @@ void QSnapdTryRequest::runAsync ()
     Q_D(QSnapdTryRequest);
     snapd_client_try_async (SNAPD_CLIENT (getClient ()),
                             d->path.toStdString ().c_str (),
-                            progress_cb, this,
-                            G_CANCELLABLE (getCancellable ()), try_ready_cb, (gpointer) this);
+                            progress_cb, d->callback_data,
+                            G_CANCELLABLE (getCancellable ()), try_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdRefreshRequest::QSnapdRefreshRequest (const QString& name, const QString& channel, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdRefreshRequestPrivate (name, channel)) {}
+    d_ptr (new QSnapdRefreshRequestPrivate (this, name, channel)) {}
 
 void QSnapdRefreshRequest::runSync ()
 {
     Q_D(QSnapdRefreshRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_refresh_sync (SNAPD_CLIENT (getClient ()),
                                d->name.toStdString ().c_str (), d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
-                               progress_cb, this,
+                               progress_cb, d->callback_data,
                                G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2220,16 +2305,17 @@ void QSnapdRefreshRequest::runSync ()
 void QSnapdRefreshRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_refresh_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void refresh_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdRefreshRequest *request = static_cast<QSnapdRefreshRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdRefreshRequest *request = static_cast<QSnapdRefreshRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdRefreshRequest::runAsync ()
@@ -2237,53 +2323,56 @@ void QSnapdRefreshRequest::runAsync ()
     Q_D(QSnapdRefreshRequest);
     snapd_client_refresh_async (SNAPD_CLIENT (getClient ()),
                                 d->name.toStdString ().c_str (), d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
-                                progress_cb, this,
-                                G_CANCELLABLE (getCancellable ()), refresh_ready_cb, (gpointer) this);
+                                progress_cb, d->callback_data,
+                                G_CANCELLABLE (getCancellable ()), refresh_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdRefreshAllRequest::QSnapdRefreshAllRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdRefreshAllRequestPrivate ()) {}
+    d_ptr (new QSnapdRefreshAllRequestPrivate (this)) {}
 
 void QSnapdRefreshAllRequest::runSync ()
 {
     Q_D(QSnapdRefreshAllRequest);
+
     g_autoptr(GError) error = NULL;
     d->snap_names = snapd_client_refresh_all_sync (SNAPD_CLIENT (getClient ()),
-                                                   progress_cb, this,
+                                                   progress_cb, d->callback_data,
                                                    G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
 
 void QSnapdRefreshAllRequest::handleResult (void *object, void *result)
 {
-    g_auto(GStrv) snap_names = NULL;
-    g_autoptr(GError) error = NULL;
-
-    snap_names = snapd_client_refresh_all_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdRefreshAllRequest);
-    d->snap_names = (GStrv) g_steal_pointer (&snap_names);
 
+    g_autoptr(GError) error = NULL;
+    g_auto(GStrv) snap_names = snapd_client_refresh_all_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
+    d->snap_names = (GStrv) g_steal_pointer (&snap_names);
     finish (error);
 }
 
 static void refresh_all_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdRefreshAllRequest *request = static_cast<QSnapdRefreshAllRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdRefreshAllRequest *request = static_cast<QSnapdRefreshAllRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdRefreshAllRequest::runAsync ()
 {
+    Q_D(QSnapdRefreshAllRequest);
     snapd_client_refresh_all_async (SNAPD_CLIENT (getClient ()),
-                                    progress_cb, this,
-                                    G_CANCELLABLE (getCancellable ()), refresh_all_ready_cb, (gpointer) this);
+                                    progress_cb, d->callback_data,
+                                    G_CANCELLABLE (getCancellable ()), refresh_all_ready_cb, g_object_ref (d->callback_data));
 }
 
 QStringList QSnapdRefreshAllRequest::snapNames () const
 {
     Q_D(const QSnapdRefreshAllRequest);
+
     QStringList result;
     for (int i = 0; d->snap_names[i] != NULL; i++)
         result.append (d->snap_names[i]);
@@ -2302,16 +2391,17 @@ static SnapdRemoveFlags convertRemoveFla
 
 QSnapdRemoveRequest::QSnapdRemoveRequest (int flags, const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdRemoveRequestPrivate (flags, name)) {}
+    d_ptr (new QSnapdRemoveRequestPrivate (this, flags, name)) {}
 
 void QSnapdRemoveRequest::runSync ()
 {
     Q_D(QSnapdRemoveRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_remove2_sync (SNAPD_CLIENT (getClient ()),
                                convertRemoveFlags (d->flags),
                                d->name.toStdString ().c_str (),
-                               progress_cb, this,
+                               progress_cb, d->callback_data,
                                G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2319,16 +2409,17 @@ void QSnapdRemoveRequest::runSync ()
 void QSnapdRemoveRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_remove2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void remove_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdRemoveRequest *request = static_cast<QSnapdRemoveRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdRemoveRequest *request = static_cast<QSnapdRemoveRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdRemoveRequest::runAsync ()
@@ -2337,21 +2428,22 @@ void QSnapdRemoveRequest::runAsync ()
     snapd_client_remove2_async (SNAPD_CLIENT (getClient ()),
                                 convertRemoveFlags (d->flags),
                                 d->name.toStdString ().c_str (),
-                                progress_cb, this,
-                                G_CANCELLABLE (getCancellable ()), remove_ready_cb, (gpointer) this);
+                                progress_cb, d->callback_data,
+                                G_CANCELLABLE (getCancellable ()), remove_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdEnableRequest::QSnapdEnableRequest (const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdEnableRequestPrivate (name)) {}
+    d_ptr (new QSnapdEnableRequestPrivate (this, name)) {}
 
 void QSnapdEnableRequest::runSync ()
 {
     Q_D(QSnapdEnableRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_enable_sync (SNAPD_CLIENT (getClient ()),
                               d->name.toStdString ().c_str (),
-                              progress_cb, this,
+                              progress_cb, d->callback_data,
                               G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2359,16 +2451,17 @@ void QSnapdEnableRequest::runSync ()
 void QSnapdEnableRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_enable_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void enable_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdEnableRequest *request = static_cast<QSnapdEnableRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdEnableRequest *request = static_cast<QSnapdEnableRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdEnableRequest::runAsync ()
@@ -2376,21 +2469,22 @@ void QSnapdEnableRequest::runAsync ()
     Q_D(QSnapdEnableRequest);
     snapd_client_enable_async (SNAPD_CLIENT (getClient ()),
                                d->name.toStdString ().c_str (),
-                               progress_cb, this,
-                               G_CANCELLABLE (getCancellable ()), enable_ready_cb, (gpointer) this);
+                               progress_cb, d->callback_data,
+                               G_CANCELLABLE (getCancellable ()), enable_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdDisableRequest::QSnapdDisableRequest (const QString& name, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdDisableRequestPrivate (name)) {}
+    d_ptr (new QSnapdDisableRequestPrivate (this, name)) {}
 
 void QSnapdDisableRequest::runSync ()
 {
     Q_D(QSnapdDisableRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_disable_sync (SNAPD_CLIENT (getClient ()),
                                d->name.toStdString ().c_str (),
-                               progress_cb, this,
+                               progress_cb, d->callback_data,
                                G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2398,39 +2492,42 @@ void QSnapdDisableRequest::runSync ()
 void QSnapdDisableRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_disable_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void disable_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdDisableRequest *request = static_cast<QSnapdDisableRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdDisableRequest *request = static_cast<QSnapdDisableRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdDisableRequest::runAsync ()
 {
     Q_D(QSnapdDisableRequest);
+
     snapd_client_disable_async (SNAPD_CLIENT (getClient ()),
                                 d->name.toStdString ().c_str (),
-                                progress_cb, this,
-                                G_CANCELLABLE (getCancellable ()), disable_ready_cb, (gpointer) this);
+                                progress_cb, d->callback_data,
+                                G_CANCELLABLE (getCancellable ()), disable_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdSwitchChannelRequest::QSnapdSwitchChannelRequest (const QString& name, const QString& channel, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdSwitchChannelRequestPrivate (name, channel)) {}
+    d_ptr (new QSnapdSwitchChannelRequestPrivate (this, name, channel)) {}
 
 void QSnapdSwitchChannelRequest::runSync ()
 {
     Q_D(QSnapdSwitchChannelRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_switch_sync (SNAPD_CLIENT (getClient ()),
                               d->name.toStdString ().c_str (),
                               d->channel.toStdString ().c_str (),
-                              progress_cb, this,
+                              progress_cb, d->callback_data,
                               G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2438,35 +2535,38 @@ void QSnapdSwitchChannelRequest::runSync
 void QSnapdSwitchChannelRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_switch_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void switch_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdSwitchChannelRequest *request = static_cast<QSnapdSwitchChannelRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdSwitchChannelRequest *request = static_cast<QSnapdSwitchChannelRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdSwitchChannelRequest::runAsync ()
 {
     Q_D(QSnapdSwitchChannelRequest);
+
     snapd_client_switch_async (SNAPD_CLIENT (getClient ()),
                                d->name.toStdString ().c_str (),
                                d->channel.toStdString ().c_str (),
-                               progress_cb, this,
-                               G_CANCELLABLE (getCancellable ()), switch_ready_cb, (gpointer) this);
+                               progress_cb, d->callback_data,
+                               G_CANCELLABLE (getCancellable ()), switch_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdCheckBuyRequest::QSnapdCheckBuyRequest (void *snapd_client, QObject *parent):
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdCheckBuyRequestPrivate ()) {}
+    d_ptr (new QSnapdCheckBuyRequestPrivate (this)) {}
 
 void QSnapdCheckBuyRequest::runSync ()
 {
     Q_D(QSnapdCheckBuyRequest);
+
     g_autoptr(GError) error = NULL;
     d->canBuy = snapd_client_check_buy_sync (SNAPD_CLIENT (getClient ()),
                                              G_CANCELLABLE (getCancellable ()), &error);
@@ -2475,26 +2575,28 @@ void QSnapdCheckBuyRequest::runSync ()
 
 void QSnapdCheckBuyRequest::handleResult (void *object, void *result)
 {
-    gboolean can_buy;
-    g_autoptr(GError) error = NULL;
-
-    can_buy = snapd_client_check_buy_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdCheckBuyRequest);
+
+    g_autoptr(GError) error = NULL;
+    gboolean can_buy = snapd_client_check_buy_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->canBuy = can_buy;
     finish (error);
 }
 
 static void check_buy_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdCheckBuyRequest *request = static_cast<QSnapdCheckBuyRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdCheckBuyRequest *request = static_cast<QSnapdCheckBuyRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdCheckBuyRequest::runAsync ()
 {
+    Q_D(QSnapdCheckBuyRequest);
     snapd_client_check_buy_async (SNAPD_CLIENT (getClient ()),
-                                  G_CANCELLABLE (getCancellable ()), check_buy_ready_cb, (gpointer) this);
+                                  G_CANCELLABLE (getCancellable ()), check_buy_ready_cb, g_object_ref (d->callback_data));
 }
 
 bool QSnapdCheckBuyRequest::canBuy () const
@@ -2505,11 +2607,12 @@ bool QSnapdCheckBuyRequest::canBuy () co
 
 QSnapdBuyRequest::QSnapdBuyRequest (const QString& id, double amount, const QString& currency, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdBuyRequestPrivate (id, amount, currency)) {}
+    d_ptr (new QSnapdBuyRequestPrivate (this, id, amount, currency)) {}
 
 void QSnapdBuyRequest::runSync ()
 {
     Q_D(QSnapdBuyRequest);
+
     g_autoptr(GError) error = NULL;
     snapd_client_buy_sync (SNAPD_CLIENT (getClient ()),
                            d->id.toStdString ().c_str (), d->amount, d->currency.toStdString ().c_str (),
@@ -2520,16 +2623,17 @@ void QSnapdBuyRequest::runSync ()
 void QSnapdBuyRequest::handleResult (void *object, void *result)
 {
     g_autoptr(GError) error = NULL;
-
     snapd_client_buy_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void buy_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdBuyRequest *request = static_cast<QSnapdBuyRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdBuyRequest *request = static_cast<QSnapdBuyRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdBuyRequest::runAsync ()
@@ -2537,7 +2641,7 @@ void QSnapdBuyRequest::runAsync ()
     Q_D(QSnapdBuyRequest);
     snapd_client_buy_async (SNAPD_CLIENT (getClient ()),
                             d->id.toStdString ().c_str (), d->amount, d->currency.toStdString ().c_str (),
-                            G_CANCELLABLE (getCancellable ()), buy_ready_cb, (gpointer) this);
+                            G_CANCELLABLE (getCancellable ()), buy_ready_cb, g_object_ref (d->callback_data));
 }
 
 static SnapdCreateUserFlags convertCreateUserFlags (int flags)
@@ -2554,11 +2658,12 @@ static SnapdCreateUserFlags convertCreat
 
 QSnapdCreateUserRequest::QSnapdCreateUserRequest (const QString& email, int flags, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdCreateUserRequestPrivate (email, flags)) {}
+    d_ptr (new QSnapdCreateUserRequestPrivate (this, email, flags)) {}
 
 void QSnapdCreateUserRequest::runSync ()
 {
     Q_D(QSnapdCreateUserRequest);
+
     g_autoptr(GError) error = NULL;
     d->info = snapd_client_create_user_sync (SNAPD_CLIENT (getClient ()),
                                              d->email.toStdString ().c_str (), convertCreateUserFlags (d->flags),
@@ -2569,17 +2674,19 @@ void QSnapdCreateUserRequest::runSync ()
 void QSnapdCreateUserRequest::handleResult (void *object, void *result)
 {
     Q_D(QSnapdCreateUserRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     d->info = snapd_client_create_user_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void create_user_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdCreateUserRequest *request = static_cast<QSnapdCreateUserRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdCreateUserRequest *request = static_cast<QSnapdCreateUserRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdCreateUserRequest::runAsync ()
@@ -2587,7 +2694,7 @@ void QSnapdCreateUserRequest::runAsync (
     Q_D(QSnapdCreateUserRequest);
     snapd_client_create_user_async (SNAPD_CLIENT (getClient ()),
                                     d->email.toStdString ().c_str (), convertCreateUserFlags (d->flags),
-                                    G_CANCELLABLE (getCancellable ()), create_user_ready_cb, (gpointer) this);
+                                    G_CANCELLABLE (getCancellable ()), create_user_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdUserInformation *QSnapdCreateUserRequest::userInformation () const
@@ -2598,11 +2705,12 @@ QSnapdUserInformation *QSnapdCreateUserR
 
 QSnapdCreateUsersRequest::QSnapdCreateUsersRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdCreateUsersRequestPrivate ()) {}
+    d_ptr (new QSnapdCreateUsersRequestPrivate (this)) {}
 
 void QSnapdCreateUsersRequest::runSync ()
 {
     Q_D(QSnapdCreateUsersRequest);
+
     g_autoptr(GError) error = NULL;
     d->info = snapd_client_create_users_sync (SNAPD_CLIENT (getClient ()),
                                               G_CANCELLABLE (getCancellable ()), &error);
@@ -2612,23 +2720,26 @@ void QSnapdCreateUsersRequest::runSync (
 void QSnapdCreateUsersRequest::handleResult (void *object, void *result)
 {
     Q_D(QSnapdCreateUsersRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     d->info = snapd_client_create_users_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void create_users_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdCreateUsersRequest *request = static_cast<QSnapdCreateUsersRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdCreateUsersRequest *request = static_cast<QSnapdCreateUsersRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdCreateUsersRequest::runAsync ()
 {
+    Q_D(QSnapdCreateUsersRequest);
     snapd_client_create_users_async (SNAPD_CLIENT (getClient ()),
-                                     G_CANCELLABLE (getCancellable ()), create_users_ready_cb, (gpointer) this);
+                                     G_CANCELLABLE (getCancellable ()), create_users_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdCreateUsersRequest::userInformationCount () const
@@ -2640,6 +2751,7 @@ int QSnapdCreateUsersRequest::userInform
 QSnapdUserInformation *QSnapdCreateUsersRequest::userInformation (int n) const
 {
     Q_D(const QSnapdCreateUsersRequest);
+
     if (d->info == NULL || n < 0 || (guint) n >= d->info->len)
         return NULL;
     return new QSnapdUserInformation (d->info->pdata[n]);
@@ -2647,11 +2759,12 @@ QSnapdUserInformation *QSnapdCreateUsers
 
 QSnapdGetUsersRequest::QSnapdGetUsersRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetUsersRequestPrivate ()) {}
+    d_ptr (new QSnapdGetUsersRequestPrivate (this)) {}
 
 void QSnapdGetUsersRequest::runSync ()
 {
     Q_D(QSnapdGetUsersRequest);
+
     g_autoptr(GError) error = NULL;
     d->info = snapd_client_get_users_sync (SNAPD_CLIENT (getClient ()),
                                            G_CANCELLABLE (getCancellable ()), &error);
@@ -2661,23 +2774,26 @@ void QSnapdGetUsersRequest::runSync ()
 void QSnapdGetUsersRequest::handleResult (void *object, void *result)
 {
     Q_D(QSnapdGetUsersRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     d->info = snapd_client_get_users_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void get_users_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetUsersRequest *request = static_cast<QSnapdGetUsersRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetUsersRequest *request = static_cast<QSnapdGetUsersRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetUsersRequest::runAsync ()
 {
+    Q_D(QSnapdGetUsersRequest);
     snapd_client_get_users_async (SNAPD_CLIENT (getClient ()),
-                                  G_CANCELLABLE (getCancellable ()), get_users_ready_cb, (gpointer) this);
+                                  G_CANCELLABLE (getCancellable ()), get_users_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetUsersRequest::userInformationCount () const
@@ -2689,6 +2805,7 @@ int QSnapdGetUsersRequest::userInformati
 QSnapdUserInformation *QSnapdGetUsersRequest::userInformation (int n) const
 {
     Q_D(const QSnapdGetUsersRequest);
+
     if (d->info == NULL || n < 0 || (guint) n >= d->info->len)
         return NULL;
     return new QSnapdUserInformation (d->info->pdata[n]);
@@ -2696,11 +2813,12 @@ QSnapdUserInformation *QSnapdGetUsersReq
 
 QSnapdGetSectionsRequest::QSnapdGetSectionsRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetSectionsRequestPrivate ()) {}
+    d_ptr (new QSnapdGetSectionsRequestPrivate (this)) {}
 
 void QSnapdGetSectionsRequest::runSync ()
 {
     Q_D(QSnapdGetSectionsRequest);
+
     g_autoptr(GError) error = NULL;
     d->sections = snapd_client_get_sections_sync (SNAPD_CLIENT (getClient ()),
                                                   G_CANCELLABLE (getCancellable ()), &error);
@@ -2709,31 +2827,35 @@ void QSnapdGetSectionsRequest::runSync (
 
 void QSnapdGetSectionsRequest::handleResult (void *object, void *result)
 {
-    g_auto(GStrv) sections = NULL;
-    g_autoptr(GError) error = NULL;
+    Q_D(QSnapdGetSectionsRequest);
 
-    sections = snapd_client_get_sections_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
+    g_autoptr(GError) error = NULL;
+    g_auto(GStrv) sections = snapd_client_get_sections_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 
-    Q_D(QSnapdGetSectionsRequest);
     d->sections = (GStrv) g_steal_pointer (&sections);
     finish (error);
 }
 
 static void get_sections_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetSectionsRequest *request = static_cast<QSnapdGetSectionsRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetSectionsRequest *request = static_cast<QSnapdGetSectionsRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetSectionsRequest::runAsync ()
 {
+    Q_D(QSnapdGetSectionsRequest);
     snapd_client_get_sections_async (SNAPD_CLIENT (getClient ()),
-                                     G_CANCELLABLE (getCancellable ()), get_sections_ready_cb, (gpointer) this);
+                                     G_CANCELLABLE (getCancellable ()), get_sections_ready_cb, g_object_ref (d->callback_data));
 }
 
 QStringList QSnapdGetSectionsRequest::sections () const
 {
     Q_D(const QSnapdGetSectionsRequest);
+
     QStringList result;
     for (int i = 0; d->sections[i] != NULL; i++)
         result.append (d->sections[i]);
@@ -2742,11 +2864,12 @@ QStringList QSnapdGetSectionsRequest::se
 
 QSnapdGetAliasesRequest::QSnapdGetAliasesRequest (void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdGetAliasesRequestPrivate ()) {}
+    d_ptr (new QSnapdGetAliasesRequestPrivate (this)) {}
 
 void QSnapdGetAliasesRequest::runSync ()
 {
     Q_D(QSnapdGetAliasesRequest);
+
     g_autoptr(GError) error = NULL;
     d->aliases = snapd_client_get_aliases_sync (SNAPD_CLIENT (getClient ()),
                                                 G_CANCELLABLE (getCancellable ()), &error);
@@ -2755,26 +2878,28 @@ void QSnapdGetAliasesRequest::runSync ()
 
 void QSnapdGetAliasesRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GPtrArray) aliases = NULL;
-    g_autoptr(GError) error = NULL;
-
-    aliases = snapd_client_get_aliases_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     Q_D(QSnapdGetAliasesRequest);
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GPtrArray) aliases = snapd_client_get_aliases_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
     d->aliases = (GPtrArray*) g_steal_pointer (&aliases);
     finish (error);
 }
 
 static void get_aliases_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdGetAliasesRequest *request = static_cast<QSnapdGetAliasesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdGetAliasesRequest *request = static_cast<QSnapdGetAliasesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdGetAliasesRequest::runAsync ()
 {
+    Q_D(QSnapdGetAliasesRequest);
     snapd_client_get_aliases_async (SNAPD_CLIENT (getClient ()),
-                                    G_CANCELLABLE (getCancellable ()), get_aliases_ready_cb, (gpointer) this);
+                                    G_CANCELLABLE (getCancellable ()), get_aliases_ready_cb, g_object_ref (d->callback_data));
 }
 
 int QSnapdGetAliasesRequest::aliasCount () const
@@ -2786,6 +2911,7 @@ int QSnapdGetAliasesRequest::aliasCount
 QSnapdAlias *QSnapdGetAliasesRequest::alias (int n) const
 {
     Q_D(const QSnapdGetAliasesRequest);
+
     if (d->aliases == NULL || n < 0 || (guint) n >= d->aliases->len)
         return NULL;
     return new QSnapdAlias (d->aliases->pdata[n]);
@@ -2793,18 +2919,18 @@ QSnapdAlias *QSnapdGetAliasesRequest::al
 
 QSnapdAliasRequest::QSnapdAliasRequest (const QString& snap, const QString& app, const QString& alias, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdAliasRequestPrivate (snap, app, alias)) {}
+    d_ptr (new QSnapdAliasRequestPrivate (this, snap, app, alias)) {}
 
 void QSnapdAliasRequest::runSync ()
 {
     Q_D(QSnapdAliasRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     snapd_client_alias_sync (SNAPD_CLIENT (getClient ()),
                              d->snap.toStdString ().c_str (),
                              d->app.toStdString ().c_str (),
                              d->alias.toStdString ().c_str (),
-                             progress_cb, this,
+                             progress_cb, d->callback_data,
                              G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2813,14 +2939,16 @@ void QSnapdAliasRequest::handleResult (v
 {
     g_autoptr(GError) error = NULL;
     snapd_client_alias_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void alias_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdAliasRequest *request = static_cast<QSnapdAliasRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdAliasRequest *request = static_cast<QSnapdAliasRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdAliasRequest::runAsync ()
@@ -2831,23 +2959,23 @@ void QSnapdAliasRequest::runAsync ()
                               d->snap.toStdString ().c_str (),
                               d->app.toStdString ().c_str (),
                               d->alias.toStdString ().c_str (),
-                              progress_cb, this,
-                              G_CANCELLABLE (getCancellable ()), alias_ready_cb, (gpointer) this);
+                              progress_cb, d->callback_data,
+                              G_CANCELLABLE (getCancellable ()), alias_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdUnaliasRequest::QSnapdUnaliasRequest (const QString& snap, const QString& alias, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdUnaliasRequestPrivate (snap, alias)) {}
+    d_ptr (new QSnapdUnaliasRequestPrivate (this, snap, alias)) {}
 
 void QSnapdUnaliasRequest::runSync ()
 {
     Q_D(QSnapdUnaliasRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     snapd_client_unalias_sync (SNAPD_CLIENT (getClient ()),
                                d->snap.isNull () ? NULL : d->snap.toStdString ().c_str (),
                                d->alias.isNull () ? NULL : d->alias.toStdString ().c_str (),
-                               progress_cb, this,
+                               progress_cb, d->callback_data,
                                G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2856,14 +2984,16 @@ void QSnapdUnaliasRequest::handleResult
 {
     g_autoptr(GError) error = NULL;
     snapd_client_unalias_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void unalias_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdUnaliasRequest *request = static_cast<QSnapdUnaliasRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdUnaliasRequest *request = static_cast<QSnapdUnaliasRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdUnaliasRequest::runAsync ()
@@ -2873,22 +3003,22 @@ void QSnapdUnaliasRequest::runAsync ()
     snapd_client_unalias_async (SNAPD_CLIENT (getClient ()),
                                 d->snap.isNull () ? NULL : d->snap.toStdString ().c_str (),
                                 d->alias.isNull () ? NULL : d->alias.toStdString ().c_str (),
-                                progress_cb, this,
-                                G_CANCELLABLE (getCancellable ()), unalias_ready_cb, (gpointer) this);
+                                progress_cb, d->callback_data,
+                                G_CANCELLABLE (getCancellable ()), unalias_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdPreferRequest::QSnapdPreferRequest (const QString& snap, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdPreferRequestPrivate (snap)) {}
+    d_ptr (new QSnapdPreferRequestPrivate (this, snap)) {}
 
 void QSnapdPreferRequest::runSync ()
 {
     Q_D(QSnapdPreferRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     snapd_client_prefer_sync (SNAPD_CLIENT (getClient ()),
                               d->snap.toStdString ().c_str (),
-                              progress_cb, this,
+                              progress_cb, d->callback_data,
                               G_CANCELLABLE (getCancellable ()), &error);
     finish (error);
 }
@@ -2897,14 +3027,16 @@ void QSnapdPreferRequest::handleResult (
 {
     g_autoptr(GError) error = NULL;
     snapd_client_prefer_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void prefer_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdPreferRequest *request = static_cast<QSnapdPreferRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdPreferRequest *request = static_cast<QSnapdPreferRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdPreferRequest::runAsync ()
@@ -2913,25 +3045,24 @@ void QSnapdPreferRequest::runAsync ()
 
     snapd_client_prefer_async (SNAPD_CLIENT (getClient ()),
                                d->snap.toStdString ().c_str (),
-                               progress_cb, this,
-                               G_CANCELLABLE (getCancellable ()), prefer_ready_cb, (gpointer) this);
+                               progress_cb, d->callback_data,
+                               G_CANCELLABLE (getCancellable ()), prefer_ready_cb, g_object_ref (d->callback_data));
 }
 
 QSnapdEnableAliasesRequest::QSnapdEnableAliasesRequest (const QString& name, const QStringList& aliases, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdEnableAliasesRequestPrivate (name, aliases)) {}
+    d_ptr (new QSnapdEnableAliasesRequestPrivate (this, name, aliases)) {}
 
 void QSnapdEnableAliasesRequest::runSync ()
 {
     Q_D(QSnapdEnableAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
-    g_autoptr(GError) error = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
+    g_autoptr(GError) error = NULL;
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_enable_aliases_sync (SNAPD_CLIENT (getClient ()),
                                       d->snap.toStdString ().c_str (), aliases,
-                                      progress_cb, this,
+                                      progress_cb, d->callback_data,
                                       G_CANCELLABLE (getCancellable ()), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
     finish (error);
@@ -2943,45 +3074,45 @@ void QSnapdEnableAliasesRequest::handleR
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_enable_aliases_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
-
     finish (error);
 }
 
 static void enable_aliases_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdEnableAliasesRequest *request = static_cast<QSnapdEnableAliasesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdEnableAliasesRequest *request = static_cast<QSnapdEnableAliasesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdEnableAliasesRequest::runAsync ()
 {
     Q_D(QSnapdEnableAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_disable_aliases_async (SNAPD_CLIENT (getClient ()),
                                        d->snap.toStdString ().c_str (), aliases,
-                                       progress_cb, this,
-                                       G_CANCELLABLE (getCancellable ()), enable_aliases_ready_cb, (gpointer) this);
+                                       progress_cb, d->callback_data,
+                                       G_CANCELLABLE (getCancellable ()), enable_aliases_ready_cb, g_object_ref (d->callback_data));
 G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
 QSnapdDisableAliasesRequest::QSnapdDisableAliasesRequest (const QString& name, const QStringList& aliases, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdDisableAliasesRequestPrivate (name, aliases)) {}
+    d_ptr (new QSnapdDisableAliasesRequestPrivate (this, name, aliases)) {}
 
 void QSnapdDisableAliasesRequest::runSync ()
 {
     Q_D(QSnapdDisableAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
-    g_autoptr(GError) error = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
+    g_autoptr(GError) error = NULL;
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_disable_aliases_sync (SNAPD_CLIENT (getClient ()),
                                        d->snap.toStdString ().c_str (), aliases,
-                                       progress_cb, this,
+                                       progress_cb, d->callback_data,
                                        G_CANCELLABLE (getCancellable ()), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
     finish (error);
@@ -2993,45 +3124,45 @@ void QSnapdDisableAliasesRequest::handle
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_disable_aliases_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
-
     finish (error);
 }
 
 static void disable_aliases_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdDisableAliasesRequest *request = static_cast<QSnapdDisableAliasesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdDisableAliasesRequest *request = static_cast<QSnapdDisableAliasesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdDisableAliasesRequest::runAsync ()
 {
     Q_D(QSnapdDisableAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_disable_aliases_async (SNAPD_CLIENT (getClient ()),
                                        d->snap.toStdString ().c_str (), aliases,
-                                       progress_cb, this,
-                                       G_CANCELLABLE (getCancellable ()), disable_aliases_ready_cb, (gpointer) this);
+                                       progress_cb, d->callback_data,
+                                       G_CANCELLABLE (getCancellable ()), disable_aliases_ready_cb, g_object_ref (d->callback_data));
 G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
 QSnapdResetAliasesRequest::QSnapdResetAliasesRequest (const QString& name, const QStringList& aliases, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdResetAliasesRequestPrivate (name, aliases)) {}
+    d_ptr (new QSnapdResetAliasesRequestPrivate (this, name, aliases)) {}
 
 void QSnapdResetAliasesRequest::runSync ()
 {
     Q_D(QSnapdResetAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
-    g_autoptr(GError) error = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
+    g_autoptr(GError) error = NULL;
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_reset_aliases_sync (SNAPD_CLIENT (getClient ()),
                                      d->snap.toStdString ().c_str (), aliases,
-                                     progress_cb, this,
+                                     progress_cb, d->callback_data,
                                      G_CANCELLABLE (getCancellable ()), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
     finish (error);
@@ -3043,41 +3174,41 @@ void QSnapdResetAliasesRequest::handleRe
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_reset_aliases_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
 G_GNUC_END_IGNORE_DEPRECATIONS
-
     finish (error);
 }
 
 static void reset_aliases_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdResetAliasesRequest *request = static_cast<QSnapdResetAliasesRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdResetAliasesRequest *request = static_cast<QSnapdResetAliasesRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdResetAliasesRequest::runAsync ()
 {
     Q_D(QSnapdResetAliasesRequest);
-    g_auto(GStrv) aliases = NULL;
 
-    aliases = string_list_to_strv (d->aliases);
+    g_auto(GStrv) aliases = string_list_to_strv (d->aliases);
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
     snapd_client_reset_aliases_async (SNAPD_CLIENT (getClient ()),
                                       d->snap.toStdString ().c_str (), aliases,
-                                      progress_cb, this,
-                                      G_CANCELLABLE (getCancellable ()), reset_aliases_ready_cb, (gpointer) this);
+                                      progress_cb, d->callback_data,
+                                      G_CANCELLABLE (getCancellable ()), reset_aliases_ready_cb, g_object_ref (d->callback_data));
 G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
 QSnapdRunSnapCtlRequest::QSnapdRunSnapCtlRequest (const QString& contextId, const QStringList& args, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdRunSnapCtlRequestPrivate (contextId, args)) {}
+    d_ptr (new QSnapdRunSnapCtlRequestPrivate (this, contextId, args)) {}
 
 void QSnapdRunSnapCtlRequest::runSync ()
 {
     Q_D(QSnapdRunSnapCtlRequest);
-    g_auto(GStrv) aliases = NULL;
-    g_autoptr(GError) error = NULL;
 
-    aliases = string_list_to_strv (d->args);
+    g_auto(GStrv) aliases = string_list_to_strv (d->args);
+    g_autoptr(GError) error = NULL;
     snapd_client_run_snapctl2_sync (SNAPD_CLIENT (getClient ()),
                                     d->contextId.toStdString ().c_str (), aliases,
                                     &d->stdout_output, &d->stderr_output,
@@ -3088,29 +3219,30 @@ void QSnapdRunSnapCtlRequest::runSync ()
 
 void QSnapdRunSnapCtlRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GError) error = NULL;
     Q_D(QSnapdRunSnapCtlRequest);
 
+    g_autoptr(GError) error = NULL;
     snapd_client_run_snapctl2_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &d->stdout_output, &d->stderr_output, &d->exit_code, &error);
-
     finish (error);
 }
 
 static void run_snapctl_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdRunSnapCtlRequest *request = static_cast<QSnapdRunSnapCtlRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+    if (callback_data->request != NULL) {
+        QSnapdRunSnapCtlRequest *request = static_cast<QSnapdRunSnapCtlRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdRunSnapCtlRequest::runAsync ()
 {
     Q_D(QSnapdRunSnapCtlRequest);
-    g_auto(GStrv) aliases = NULL;
 
-    aliases = string_list_to_strv (d->args);
+    g_auto(GStrv) aliases = string_list_to_strv (d->args);
     snapd_client_run_snapctl2_async (SNAPD_CLIENT (getClient ()),
                                      d->contextId.toStdString ().c_str (), aliases,
-                                     G_CANCELLABLE (getCancellable ()), run_snapctl_ready_cb, (gpointer) this);
+                                     G_CANCELLABLE (getCancellable ()), run_snapctl_ready_cb, g_object_ref (d->callback_data));
 }
 
 QString QSnapdRunSnapCtlRequest::stdout () const
@@ -3133,13 +3265,13 @@ int QSnapdRunSnapCtlRequest::exitCode ()
 
 QSnapdDownloadRequest::QSnapdDownloadRequest (const QString& name, const QString &channel, const QString &revision, void *snapd_client, QObject *parent) :
     QSnapdRequest (snapd_client, parent),
-    d_ptr (new QSnapdDownloadRequestPrivate (name, channel, revision)) {}
+    d_ptr (new QSnapdDownloadRequestPrivate (this, name, channel, revision)) {}
 
 void QSnapdDownloadRequest::runSync ()
 {
     Q_D(QSnapdDownloadRequest);
-    g_autoptr(GError) error = NULL;
 
+    g_autoptr(GError) error = NULL;
     d->data = snapd_client_download_sync (SNAPD_CLIENT (getClient ()),
                                           d->name.toStdString ().c_str (),
                                           d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
@@ -3150,18 +3282,20 @@ void QSnapdDownloadRequest::runSync ()
 
 void QSnapdDownloadRequest::handleResult (void *object, void *result)
 {
-    g_autoptr(GError) error = NULL;
     Q_D(QSnapdDownloadRequest);
 
+    g_autoptr(GError) error = NULL;
     d->data = snapd_client_download_finish (SNAPD_CLIENT (object), G_ASYNC_RESULT (result), &error);
-
     finish (error);
 }
 
 static void download_ready_cb (GObject *object, GAsyncResult *result, gpointer data)
 {
-    QSnapdDownloadRequest *request = static_cast<QSnapdDownloadRequest*>(data);
-    request->handleResult (object, result);
+    g_autoptr(CallbackData) callback_data = (CallbackData *) data;
+      if (callback_data->request != NULL) {
+        QSnapdDownloadRequest *request = static_cast<QSnapdDownloadRequest*>(callback_data->request);
+        request->handleResult (object, result);
+    }
 }
 
 void QSnapdDownloadRequest::runAsync ()
@@ -3172,12 +3306,13 @@ void QSnapdDownloadRequest::runAsync ()
                                  d->name.toStdString ().c_str (),
                                  d->channel.isNull () ? NULL : d->channel.toStdString ().c_str (),
                                  d->revision.isNull () ? NULL : d->revision.toStdString ().c_str (),
-                                 G_CANCELLABLE (getCancellable ()), download_ready_cb, (gpointer) this);
+                                 G_CANCELLABLE (getCancellable ()), download_ready_cb, g_object_ref (d->callback_data));
 }
 
 QByteArray QSnapdDownloadRequest::data () const
 {
     Q_D(const QSnapdDownloadRequest);
+
     gsize length;
     gchar *raw_data = (gchar *) g_bytes_get_data (d->data, &length);
     return QByteArray::fromRawData (raw_data, length);
diff -pruN 1.59-3/snapd-qt/client-private.h 1.60-0ubuntu1/snapd-qt/client-private.h
--- 1.59-3/snapd-qt/client-private.h	2021-03-04 03:49:31.156320000 +0000
+++ 1.60-0ubuntu1/snapd-qt/client-private.h	2022-02-15 01:52:07.000000000 +0000
@@ -18,17 +18,41 @@
 #include <QtCore/QVariant>
 #include <QIODevice>
 
+G_DECLARE_FINAL_TYPE (CallbackData, callback_data, SNAPD, CALLBACK_DATA, GObject)
+
+struct _CallbackData
+{
+    GObject parent_instance;
+    gpointer request;
+};
+
+CallbackData *callback_data_new (gpointer request);
+
 class QSnapdConnectRequestPrivate
 {
+public:
+    QSnapdConnectRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdConnectRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
+    CallbackData *callback_data;
 };
 
 class QSnapdLoginRequestPrivate
 {
 public:
-    QSnapdLoginRequestPrivate (const QString& email, const QString& password, const QString& otp) :
-        email(email), password(password), otp(otp) {}
+    QSnapdLoginRequestPrivate (gpointer request, const QString& email, const QString& password, const QString& otp) :
+        email(email), password(password), otp(otp) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdLoginRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (user_information != NULL)
             g_object_unref (user_information);
         if (auth_data != NULL)
@@ -37,6 +61,7 @@ public:
     QString email;
     QString password;
     QString otp;
+    CallbackData *callback_data;
     SnapdUserInformation *user_information = NULL;
     SnapdAuthData *auth_data = NULL;
 };
@@ -44,201 +69,291 @@ public:
 class QSnapdLogoutRequestPrivate
 {
 public:
-    QSnapdLogoutRequestPrivate (qint64 id) :
-        id (id) {}
+    QSnapdLogoutRequestPrivate (gpointer request, qint64 id) :
+        id (id) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdLogoutRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     qint64 id;
+    CallbackData *callback_data;
 };
 
 class QSnapdGetChangesRequestPrivate
 {
 public:
-    QSnapdGetChangesRequestPrivate (int filter, const QString& snapName) :
-        filter(filter), snapName(snapName) {}
+    QSnapdGetChangesRequestPrivate (gpointer request, int filter, const QString& snapName) :
+        filter(filter), snapName(snapName) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetChangesRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (changes != NULL)
             g_ptr_array_unref (changes);
     }
     int filter;
     QString snapName;
+    CallbackData *callback_data;
     GPtrArray *changes = NULL;
 };
 
 class QSnapdGetChangeRequestPrivate
 {
 public:
-    QSnapdGetChangeRequestPrivate (const QString& id) :
-        id(id) {}
+    QSnapdGetChangeRequestPrivate (gpointer request, const QString& id) :
+        id(id) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetChangeRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (change != NULL)
             g_object_unref (change);
     }
     QString id;
+    CallbackData *callback_data;
     SnapdChange *change = NULL;
 };
 
 class QSnapdAbortChangeRequestPrivate
 {
 public:
-    QSnapdAbortChangeRequestPrivate (const QString& id) :
-        id(id) {}
+    QSnapdAbortChangeRequestPrivate (gpointer request, const QString& id) :
+        id(id) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdAbortChangeRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (change != NULL)
             g_object_unref (change);
     }
     QString id;
+    CallbackData *callback_data;
     SnapdChange *change = NULL;
 };
 
 class QSnapdGetSystemInformationRequestPrivate
 {
 public:
+    QSnapdGetSystemInformationRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetSystemInformationRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (info != NULL)
             g_object_unref (info);
     }
+    CallbackData *callback_data;
     SnapdSystemInformation *info = NULL;
 };
 
 class QSnapdListRequestPrivate
 {
 public:
+    QSnapdListRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdListRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snaps != NULL)
             g_ptr_array_unref (snaps);
     }
+    CallbackData *callback_data;
     GPtrArray *snaps = NULL;
 };
 
 class QSnapdGetSnapsRequestPrivate
 {
 public:
-    QSnapdGetSnapsRequestPrivate (int flags, const QStringList& snaps) :
-        flags(flags), filter_snaps(snaps) {}
+    QSnapdGetSnapsRequestPrivate (gpointer request, int flags, const QStringList& snaps) :
+        flags(flags), filter_snaps(snaps) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetSnapsRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snaps != NULL)
             g_ptr_array_unref (snaps);
     }
     int flags;
     QStringList filter_snaps;
+    CallbackData *callback_data;
     GPtrArray *snaps = NULL;
 };
 
 class QSnapdListOneRequestPrivate
 {
 public:
-    QSnapdListOneRequestPrivate (const QString& name) :
-        name(name) {}
+    QSnapdListOneRequestPrivate (gpointer request, const QString& name) :
+        name(name) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdListOneRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snap != NULL)
             g_object_unref (snap);
     }
     QString name;
+    CallbackData *callback_data;
     SnapdSnap *snap = NULL;
 };
 
 class QSnapdGetSnapRequestPrivate
 {
 public:
-    QSnapdGetSnapRequestPrivate (const QString& name) :
-        name(name) {}
+    QSnapdGetSnapRequestPrivate (gpointer request, const QString& name) :
+        name(name) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetSnapRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snap != NULL)
             g_object_unref (snap);
     }
     QString name;
+    CallbackData *callback_data;
     SnapdSnap *snap = NULL;
 };
 
 class QSnapdGetSnapConfRequestPrivate
 {
 public:
-    QSnapdGetSnapConfRequestPrivate (const QString& name, const QStringList& keys) :
-        name(name), keys(keys) {}
+    QSnapdGetSnapConfRequestPrivate (gpointer request, const QString& name, const QStringList& keys) :
+        name(name), keys(keys) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetSnapConfRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (configuration != NULL)
             g_hash_table_unref (configuration);
     }
     QString name;
     QStringList keys;
+    CallbackData *callback_data;
     GHashTable *configuration = NULL;
 };
 
 class QSnapdSetSnapConfRequestPrivate
 {
 public:
-    QSnapdSetSnapConfRequestPrivate (const QString& name, const QHash<QString, QVariant>& configuration) :
-        name(name), configuration(configuration) {}
+    QSnapdSetSnapConfRequestPrivate (gpointer request, const QString& name, const QHash<QString, QVariant>& configuration) :
+        name(name), configuration(configuration) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdSetSnapConfRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString name;
     QHash<QString, QVariant> configuration;
+    CallbackData *callback_data;
 };
 
 class QSnapdGetAppsRequestPrivate
 {
 public:
-    QSnapdGetAppsRequestPrivate (int flags, const QStringList& snaps) :
-        flags(flags), filter_snaps(snaps) {}
+    QSnapdGetAppsRequestPrivate (gpointer request, int flags, const QStringList& snaps) :
+        flags(flags), filter_snaps(snaps) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetAppsRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (apps != NULL)
             g_ptr_array_unref (apps);
     }
     int flags;
     QStringList filter_snaps;
+    CallbackData *callback_data;
     GPtrArray *apps = NULL;
 };
 
 class QSnapdGetIconRequestPrivate
 {
 public:
-    QSnapdGetIconRequestPrivate (const QString& name) :
-        name(name) {}
+    QSnapdGetIconRequestPrivate (gpointer request, const QString& name) :
+        name(name) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetIconRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (icon != NULL)
             g_object_unref (icon);
     }
     QString name;
+    CallbackData *callback_data;
     SnapdIcon *icon = NULL;
 };
 
 class QSnapdGetAssertionsRequestPrivate
 {
 public:
-    QSnapdGetAssertionsRequestPrivate (const QString& type) :
-        type (type) {}
+    QSnapdGetAssertionsRequestPrivate (gpointer request, const QString& type) :
+        type (type) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetAssertionsRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (assertions != NULL)
             g_strfreev (assertions);
     }
     QString type;
+    CallbackData *callback_data;
     GStrv assertions = NULL;
 };
 
 class QSnapdAddAssertionsRequestPrivate
 {
 public:
-    QSnapdAddAssertionsRequestPrivate (const QStringList& assertions) :
-        assertions (assertions) {}
+    QSnapdAddAssertionsRequestPrivate (gpointer request, const QStringList& assertions) :
+        assertions (assertions) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdAddAssertionsRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QStringList assertions;
+    CallbackData *callback_data;
 };
 
 class QSnapdGetConnectionsRequestPrivate
 {
 public:
-    QSnapdGetConnectionsRequestPrivate (int flags, const QString &snap, const QString &interface) :
-        flags (flags), snap (snap), interface (interface) {};
+    QSnapdGetConnectionsRequestPrivate (gpointer request, int flags, const QString &snap, const QString &interface) :
+        flags (flags), snap (snap), interface (interface) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetConnectionsRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (established != NULL)
             g_ptr_array_unref (established);
         if (undesired != NULL)
@@ -251,6 +366,7 @@ public:
     int flags;
     QString snap;
     QString interface;
+    CallbackData *callback_data;
     GPtrArray *established = NULL;
     GPtrArray *undesired = NULL;
     GPtrArray *plugs = NULL;
@@ -260,13 +376,19 @@ public:
 class QSnapdGetInterfacesRequestPrivate
 {
 public:
+    QSnapdGetInterfacesRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetInterfacesRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (plugs != NULL)
             g_ptr_array_unref (plugs);
         if (slots_ != NULL)
             g_ptr_array_unref (slots_);
     }
+    CallbackData *callback_data;
     GPtrArray *plugs = NULL;
     GPtrArray *slots_ = NULL;
 };
@@ -274,53 +396,79 @@ public:
 class QSnapdGetInterfaces2RequestPrivate
 {
 public:
-    QSnapdGetInterfaces2RequestPrivate (int flags, const QStringList &names) :
-        flags (flags), names (names) {};
+    QSnapdGetInterfaces2RequestPrivate (gpointer request, int flags, const QStringList &names) :
+        flags (flags), names (names) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetInterfaces2RequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (interfaces != NULL)
             g_ptr_array_unref (interfaces);
     }
     int flags;
     QStringList names;
+    CallbackData *callback_data;
     GPtrArray *interfaces = NULL;
 };
 
 class QSnapdConnectInterfaceRequestPrivate
 {
 public:
-    QSnapdConnectInterfaceRequestPrivate (const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name) :
-        plug_snap (plug_snap), plug_name (plug_name), slot_snap (slot_snap), slot_name (slot_name) {}
+    QSnapdConnectInterfaceRequestPrivate (gpointer request, const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name) :
+        plug_snap (plug_snap), plug_name (plug_name), slot_snap (slot_snap), slot_name (slot_name) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdConnectInterfaceRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString plug_snap;
     QString plug_name;
     QString slot_snap;
     QString slot_name;
+    CallbackData *callback_data;
 };
 
 class QSnapdDisconnectInterfaceRequestPrivate
 {
 public:
-    QSnapdDisconnectInterfaceRequestPrivate (const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name) :
-        plug_snap (plug_snap), plug_name (plug_name), slot_snap (slot_snap), slot_name (slot_name) {}
+    QSnapdDisconnectInterfaceRequestPrivate (gpointer request, const QString &plug_snap, const QString &plug_name, const QString &slot_snap, const QString &slot_name) :
+        plug_snap (plug_snap), plug_name (plug_name), slot_snap (slot_snap), slot_name (slot_name) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdDisconnectInterfaceRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString plug_snap;
     QString plug_name;
     QString slot_snap;
     QString slot_name;
+    CallbackData *callback_data;
 };
 
 class QSnapdFindRequestPrivate
 {
 public:
-    QSnapdFindRequestPrivate (int flags, const QString& section, const QString& name) :
-        flags (flags), section (section), name (name) {}
+    QSnapdFindRequestPrivate (gpointer request, int flags, const QString& section, const QString& name) :
+        flags (flags), section (section), name (name) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdFindRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snaps != NULL)
             g_ptr_array_unref (snaps);
     }
     int flags;
     QString section;
     QString name;
+    CallbackData *callback_data;
     GPtrArray *snaps = NULL;
     QString suggestedCurrency;
 };
@@ -328,206 +476,333 @@ public:
 class QSnapdFindRefreshableRequestPrivate
 {
 public:
-    QSnapdFindRefreshableRequestPrivate () {}
+    QSnapdFindRefreshableRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdFindRefreshableRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snaps != NULL)
             g_ptr_array_unref (snaps);
     }
+    CallbackData *callback_data;
     GPtrArray *snaps = NULL;
 };
 
 class QSnapdInstallRequestPrivate : public QObject
 {
 public:
-    Q_OBJECT
-
-public:
-    QSnapdInstallRequestPrivate (int flags, const QString& name, const QString& channel, const QString& revision, QIODevice *ioDevice, QObject *parent = NULL) :
+    QSnapdInstallRequestPrivate (gpointer request, int flags, const QString& name, const QString& channel, const QString& revision, QIODevice *ioDevice, QObject *parent = NULL) :
         QObject (parent),
         flags(flags), name(name), channel(channel), revision(revision)
     {
+        callback_data = callback_data_new (request);
         if (ioDevice != NULL) {
             wrapper = (StreamWrapper *) g_object_new (stream_wrapper_get_type (), NULL);
             wrapper->ioDevice = ioDevice;
         }
     }
-
     ~QSnapdInstallRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         g_clear_object (&wrapper);
     }
-
     int flags;
     QString name;
     QString channel;
     QString revision;
+    CallbackData *callback_data;
     StreamWrapper *wrapper = NULL;
 };
 
 class QSnapdTryRequestPrivate
 {
 public:
-    QSnapdTryRequestPrivate (const QString& path) :
-        path(path) {}
+    QSnapdTryRequestPrivate (gpointer request, const QString& path) :
+        path(path) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdTryRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString path;
+    CallbackData *callback_data;
 };
 
 class QSnapdRefreshRequestPrivate
 {
 public:
-    QSnapdRefreshRequestPrivate (const QString& name, const QString& channel) :
-        name(name), channel(channel) {}
+    QSnapdRefreshRequestPrivate (gpointer request, const QString& name, const QString& channel) :
+        name(name), channel(channel) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdRefreshRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString name;
     QString channel;
+    CallbackData *callback_data;
 };
 
 class QSnapdRefreshAllRequestPrivate
 {
 public:
-    QSnapdRefreshAllRequestPrivate () {}
+    QSnapdRefreshAllRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdRefreshAllRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (snap_names != NULL)
             g_strfreev (snap_names);
     }
+    CallbackData *callback_data;
     GStrv snap_names = NULL;
 };
 
 class QSnapdRemoveRequestPrivate
 {
 public:
-    QSnapdRemoveRequestPrivate (int flags, const QString& name) :
-        flags(flags), name(name) {}
+    QSnapdRemoveRequestPrivate (gpointer request, int flags, const QString& name) :
+        flags(flags), name(name) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdRemoveRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     int flags;
     QString name;
+    CallbackData *callback_data;
 };
 
 class QSnapdEnableRequestPrivate
 {
 public:
-    QSnapdEnableRequestPrivate (const QString& name) :
-        name(name) {}
+    QSnapdEnableRequestPrivate (gpointer request, const QString& name) :
+        name(name) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdEnableRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString name;
+    CallbackData *callback_data;
 };
 
 class QSnapdDisableRequestPrivate
 {
 public:
-    QSnapdDisableRequestPrivate (const QString& name) :
-        name(name) {}
+    QSnapdDisableRequestPrivate (gpointer request, const QString& name) :
+        name(name) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdDisableRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString name;
+    CallbackData *callback_data;
 };
 
 class QSnapdSwitchChannelRequestPrivate
 {
 public:
-    QSnapdSwitchChannelRequestPrivate (const QString& name, const QString& channel) :
-        name(name), channel(channel) {}
+    QSnapdSwitchChannelRequestPrivate (gpointer request, const QString& name, const QString& channel) :
+        name(name), channel(channel) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdSwitchChannelRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString name;
     QString channel;
+    CallbackData *callback_data;
 };
 
 class QSnapdCheckBuyRequestPrivate
 {
 public:
+    QSnapdCheckBuyRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdCheckBuyRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
+    CallbackData *callback_data;
     bool canBuy;
 };
 
 class QSnapdBuyRequestPrivate
 {
 public:
-    QSnapdBuyRequestPrivate (const QString& id, double amount, const QString& currency) :
-      id(id), amount(amount), currency(currency) {}
+    QSnapdBuyRequestPrivate (gpointer request, const QString& id, double amount, const QString& currency) :
+      id(id), amount(amount), currency(currency) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdBuyRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString id;
     double amount;
     QString currency;
+    CallbackData *callback_data;
 };
 
 class QSnapdCreateUserRequestPrivate
 {
 public:
-    QSnapdCreateUserRequestPrivate (const QString& email, int flags) :
-      email(email), flags(flags) {}
+    QSnapdCreateUserRequestPrivate (gpointer request, const QString& email, int flags) :
+      email(email), flags(flags) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdCreateUserRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (info != NULL)
             g_object_unref (info);
     }
     QString email;
     int flags;
+    CallbackData *callback_data;
     SnapdUserInformation *info = NULL;
 };
 
 class QSnapdCreateUsersRequestPrivate
 {
 public:
+    QSnapdCreateUsersRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdCreateUsersRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (info != NULL)
             g_ptr_array_unref (info);
     }
+    CallbackData *callback_data;
     GPtrArray *info = NULL;
 };
 
 class QSnapdGetUsersRequestPrivate
 {
 public:
+    QSnapdGetUsersRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetUsersRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (info != NULL)
             g_ptr_array_unref (info);
     }
+    CallbackData *callback_data;
     GPtrArray *info = NULL;
 };
 
 class QSnapdGetSectionsRequestPrivate
 {
 public:
+    QSnapdGetSectionsRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetSectionsRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (sections != NULL)
             g_strfreev (sections);
     }
+    CallbackData *callback_data;
     GStrv sections = NULL;
 };
 
 class QSnapdGetAliasesRequestPrivate
 {
 public:
+    QSnapdGetAliasesRequestPrivate (gpointer request) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdGetAliasesRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (aliases != NULL)
             g_ptr_array_unref (aliases);
     }
+    CallbackData *callback_data;
     GPtrArray *aliases = NULL;
 };
 
 class QSnapdAliasRequestPrivate
 {
 public:
-    QSnapdAliasRequestPrivate (const QString &snap, const QString &app, const QString &alias) :
-        snap (snap), app (app), alias (alias) {}
+    QSnapdAliasRequestPrivate (gpointer request, const QString &snap, const QString &app, const QString &alias) :
+        snap (snap), app (app), alias (alias) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdAliasRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
     QString app;
     QString alias;
+    CallbackData *callback_data;
 };
 
 class QSnapdUnaliasRequestPrivate
 {
 public:
-    QSnapdUnaliasRequestPrivate (const QString &snap, const QString &alias) :
-        snap (snap), alias (alias) {}
+    QSnapdUnaliasRequestPrivate (gpointer request, const QString &snap, const QString &alias) :
+        snap (snap), alias (alias) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdUnaliasRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
     QString alias;
+    CallbackData *callback_data;
 };
 
 class QSnapdPreferRequestPrivate
 {
 public:
-    QSnapdPreferRequestPrivate (const QString &snap) :
-        snap (snap) {}
+    QSnapdPreferRequestPrivate (gpointer request, const QString &snap) :
+        snap (snap) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdPreferRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
+    CallbackData *callback_data;
     QString app;
     QString alias;
 };
@@ -535,37 +810,65 @@ public:
 class QSnapdEnableAliasesRequestPrivate
 {
 public:
-    QSnapdEnableAliasesRequestPrivate (const QString &snap, const QStringList& aliases) :
-        snap (snap), aliases (aliases) {}
+    QSnapdEnableAliasesRequestPrivate (gpointer request, const QString &snap, const QStringList& aliases) :
+        snap (snap), aliases (aliases) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdEnableAliasesRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
     QStringList aliases;
+    CallbackData *callback_data;
 };
 
 class QSnapdDisableAliasesRequestPrivate
 {
 public:
-    QSnapdDisableAliasesRequestPrivate (const QString &snap, const QStringList& aliases) :
-        snap (snap), aliases (aliases) {}
+    QSnapdDisableAliasesRequestPrivate (gpointer request, const QString &snap, const QStringList& aliases) :
+        snap (snap), aliases (aliases) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdDisableAliasesRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
     QStringList aliases;
+    CallbackData *callback_data;
 };
 
 class QSnapdResetAliasesRequestPrivate
 {
 public:
-    QSnapdResetAliasesRequestPrivate (const QString &snap, const QStringList& aliases) :
-        snap (snap), aliases (aliases) {}
+    QSnapdResetAliasesRequestPrivate (gpointer request, const QString &snap, const QStringList& aliases) :
+        snap (snap), aliases (aliases) {
+        callback_data = callback_data_new (request);
+    }
+    ~QSnapdResetAliasesRequestPrivate ()
+    {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
+    }
     QString snap;
     QStringList aliases;
+    CallbackData *callback_data;
 };
 
 class QSnapdRunSnapCtlRequestPrivate
 {
 public:
-    QSnapdRunSnapCtlRequestPrivate (const QString &contextId, const QStringList& args) :
-        contextId (contextId), args (args) {}
+    QSnapdRunSnapCtlRequestPrivate (gpointer request, const QString &contextId, const QStringList& args) :
+        contextId (contextId), args (args) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdRunSnapCtlRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (stdout_output != NULL)
             g_free (stdout_output);
         if (stderr_output != NULL)
@@ -573,6 +876,7 @@ public:
     }
     QString contextId;
     QStringList args;
+    CallbackData *callback_data;
     gchar *stdout_output = NULL;
     gchar *stderr_output = NULL;
     int exit_code = 0;
@@ -581,16 +885,21 @@ public:
 class QSnapdDownloadRequestPrivate
 {
 public:
-    QSnapdDownloadRequestPrivate (const QString &name, const QString& channel, const QString& revision) :
-        name (name), channel (channel), revision (revision) {}
+    QSnapdDownloadRequestPrivate (gpointer request, const QString &name, const QString& channel, const QString& revision) :
+        name (name), channel (channel), revision (revision) {
+        callback_data = callback_data_new (request);
+    }
     ~QSnapdDownloadRequestPrivate ()
     {
+        callback_data->request = NULL;
+        g_object_unref (callback_data);
         if (data != NULL)
             g_bytes_unref (data);
     }
     QString name;
     QString channel;
     QString revision;
+    CallbackData *callback_data;
     GBytes *data = NULL;
 };
 
diff -pruN 1.59-3/snapd-qt/snap.cpp 1.60-0ubuntu1/snapd-qt/snap.cpp
--- 1.59-3/snapd-qt/snap.cpp	2021-03-04 03:49:31.168320200 +0000
+++ 1.60-0ubuntu1/snapd-qt/snap.cpp	2022-02-15 01:52:07.000000000 +0000
@@ -318,6 +318,11 @@ QSnapdEnums::SnapStatus QSnapdSnap::stat
     }
 }
 
+QString QSnapdSnap::storeUrl () const
+{
+    return snapd_snap_get_store_url (SNAPD_SNAP (wrapped_object));
+}
+
 QString QSnapdSnap::summary () const
 {
     return snapd_snap_get_summary (SNAPD_SNAP (wrapped_object));
diff -pruN 1.59-3/snapd-qt/Snapd/snap.h 1.60-0ubuntu1/snapd-qt/Snapd/snap.h
--- 1.59-3/snapd-qt/Snapd/snap.h	2021-03-04 03:49:31.152320000 +0000
+++ 1.60-0ubuntu1/snapd-qt/Snapd/snap.h	2022-02-15 01:52:07.000000000 +0000
@@ -53,6 +53,7 @@ class Q_DECL_EXPORT QSnapdSnap : public
     Q_PROPERTY(QString revision READ revision)
     Q_PROPERTY(QSnapdEnums::SnapType snapType READ snapType)
     Q_PROPERTY(QSnapdEnums::SnapStatus status READ status)
+    Q_PROPERTY(QString storeUrl READ summary)
     Q_PROPERTY(QString summary READ summary)
     Q_PROPERTY(QString title READ title)
     Q_PROPERTY(QString trackingChannel READ trackingChannel)
@@ -101,6 +102,7 @@ public:
     Q_DECL_DEPRECATED_X("Use media()") QSnapdScreenshot *screenshot (int) const;
     QSnapdEnums::SnapType snapType () const;
     QSnapdEnums::SnapStatus status () const;
+    QString storeUrl () const;
     QString summary () const;
     QString title () const;
     QString trackingChannel () const;
diff -pruN 1.59-3/tests/mock-snapd.c 1.60-0ubuntu1/tests/mock-snapd.c
--- 1.59-3/tests/mock-snapd.c	2021-03-04 03:49:31.172320400 +0000
+++ 1.60-0ubuntu1/tests/mock-snapd.c	2022-02-15 01:52:07.000000000 +0000
@@ -65,6 +65,9 @@ struct _MockSnapd
     gchar *spawn_time;
     gchar *ready_time;
     SoupMessageHeaders *last_request_headers;
+    GHashTable *gtk_theme_status;
+    GHashTable *icon_theme_status;
+    GHashTable *sound_theme_status;
 };
 
 G_DEFINE_TYPE (MockSnapd, mock_snapd, G_TYPE_OBJECT)
@@ -206,6 +209,7 @@ struct _MockSnap
     gchar *publisher_validation;
     gchar *revision;
     gchar *status;
+    gchar *store_url;
     gchar *summary;
     gchar *title;
     gchar *tracking_channel;
@@ -369,6 +373,7 @@ mock_snap_free (MockSnap *snap)
     g_free (snap->publisher_validation);
     g_free (snap->revision);
     g_free (snap->status);
+    g_free (snap->store_url);
     g_free (snap->summary);
     g_free (snap->title);
     g_free (snap->tracking_channel);
@@ -1501,6 +1506,13 @@ mock_snap_set_status (MockSnap *snap, co
 }
 
 void
+mock_snap_set_store_url (MockSnap *snap, const gchar *store_url)
+{
+    g_free (snap->store_url);
+    snap->store_url = g_strdup (store_url);
+}
+
+void
 mock_snap_set_summary (MockSnap *snap, const gchar *summary)
 {
     g_free (snap->summary);
@@ -1773,6 +1785,24 @@ mock_snapd_get_last_allow_interaction (M
     return soup_message_headers_get_one (self->last_request_headers, "X-Allow-Interaction");
 }
 
+void
+mock_snapd_set_gtk_theme_status (MockSnapd *self, const gchar *name, const gchar *status)
+{
+    g_hash_table_insert (self->gtk_theme_status, g_strdup (name), g_strdup (status));
+}
+
+void
+mock_snapd_set_icon_theme_status (MockSnapd *self, const gchar *name, const gchar *status)
+{
+    g_hash_table_insert (self->icon_theme_status, g_strdup (name), g_strdup (status));
+}
+
+void
+mock_snapd_set_sound_theme_status (MockSnapd *self, const gchar *name, const gchar *status)
+{
+    g_hash_table_insert (self->sound_theme_status, g_strdup (name), g_strdup (status));
+}
+
 static MockChange *
 get_change (MockSnapd *self, const gchar *id)
 {
@@ -2490,6 +2520,10 @@ make_snap_node (MockSnap *snap)
     json_builder_end_array (builder);
     json_builder_set_member_name (builder, "status");
     json_builder_add_string_value (builder, snap->status);
+    if (snap->store_url) {
+        json_builder_set_member_name (builder, "store-url");
+        json_builder_add_string_value (builder, snap->store_url);
+    }
     if (snap->summary) {
         json_builder_set_member_name (builder, "summary");
         json_builder_add_string_value (builder, snap->summary);
@@ -4534,6 +4568,108 @@ handle_download (MockSnapd *self, SoupMe
     send_response (message, 200, "application/octet-stream", (const guint8 *) contents->str, contents->len);
 }
 
+static int
+count_available_themes (JsonObject *o, const char *theme_type, GHashTable *theme_status) {
+    guint i, length;
+    int available = 0;
+    JsonArray *themes = json_object_get_array_member (o, theme_type);
+
+    if (themes == NULL)
+        return 0;
+
+    length = json_array_get_length (themes);
+    for (i = 0; i < length; i++) {
+        const char *theme_name = json_array_get_string_element (themes, i);
+        if (theme_name == NULL)
+            continue;
+        if (g_strcmp0 (g_hash_table_lookup (theme_status, theme_name), "available") == 0)
+            available++;
+    }
+    return available;
+}
+
+static void
+handle_themes (MockSnapd *self, SoupMessage *message)
+{
+    if (strcmp (message->method, "GET") == 0) {
+        SoupURI *uri = soup_message_get_uri (message);
+        g_autoptr(JsonBuilder) gtk_themes = json_builder_new ();
+        g_autoptr(JsonBuilder) icon_themes = json_builder_new ();
+        g_autoptr(JsonBuilder) sound_themes = json_builder_new ();
+
+        json_builder_begin_object (gtk_themes);
+        json_builder_begin_object (icon_themes);
+        json_builder_begin_object (sound_themes);
+        /* We are parsing the query parameters manually because the
+         * GHashTable API loses duplicate values */
+        g_auto(GStrv) pairs = g_strsplit (soup_uri_get_query (uri), "&", -1);
+        char *const *pair;
+        for (pair = pairs; *pair != NULL; pair++) {
+            char *eq = strchr (*pair, '=');
+            if (!eq)
+                continue;
+            *eq = '\0';
+            g_autofree char *attr = soup_uri_decode (*pair);
+            g_autofree char *value = soup_uri_decode (eq + 1);
+            if (strcmp (attr, "gtk-theme") == 0) {
+                const char *status = g_hash_table_lookup (self->gtk_theme_status, value);
+                json_builder_set_member_name (gtk_themes, value);
+                json_builder_add_string_value (gtk_themes, status ? status : "unavailable");
+            } else if (strcmp (attr, "icon-theme") == 0) {
+                const char *status = g_hash_table_lookup (self->icon_theme_status, value);
+                json_builder_set_member_name (icon_themes, value);
+                json_builder_add_string_value (icon_themes, status ? status : "unavailable");
+            } else if (strcmp (attr, "sound-theme") == 0) {
+                const char *status = g_hash_table_lookup (self->sound_theme_status, value);
+                json_builder_set_member_name (sound_themes, value);
+                json_builder_add_string_value (sound_themes, status ? status : "unavailable");
+            }
+        }
+        json_builder_end_object (gtk_themes);
+        json_builder_end_object (icon_themes);
+        json_builder_end_object (sound_themes);
+
+        g_autoptr(JsonBuilder) builder = json_builder_new ();
+        json_builder_begin_object (builder);
+        json_builder_set_member_name (builder, "gtk-themes");
+        json_builder_add_value (builder, json_builder_get_root (gtk_themes));
+        json_builder_set_member_name (builder, "icon-themes");
+        json_builder_add_value (builder, json_builder_get_root (icon_themes));
+        json_builder_set_member_name (builder, "sound-themes");
+        json_builder_add_value (builder, json_builder_get_root (sound_themes));
+        json_builder_end_object (builder);
+
+        send_sync_response (self, message, 200, json_builder_get_root (builder), NULL);
+    } else if (strcmp (message->method, "POST") == 0) {
+        g_autoptr(JsonNode) request = get_json (message);
+        if (request == NULL) {
+            send_error_bad_request (self, message, "unknown content type", NULL);
+            return;
+        }
+        JsonObject *o = json_node_get_object (request);
+        int available = 0;
+
+        available += count_available_themes (o, "gtk-themes", self->gtk_theme_status);
+        available += count_available_themes (o, "icon-themes", self->icon_theme_status);
+        available += count_available_themes (o, "sound-themes", self->sound_theme_status);
+        if (available == 0) {
+            send_error_bad_request (self, message, "no snaps to install", NULL);
+            return;
+        }
+
+        MockChange *change = add_change (self);
+        mock_change_set_spawn_time (change, self->spawn_time);
+        mock_change_set_ready_time (change, self->ready_time);
+        MockTask *task = mock_change_add_task (change, "install");
+        task->snap = mock_snap_new ("theme-snap");
+        mock_snap_set_channel (task->snap, "stable");
+        mock_snap_set_revision (task->snap, "1");
+        send_async_response (self, message, 202, change->id);
+    } else {
+        send_error_method_not_allowed (self, message, "method not allowed");
+    }
+}
+
 static void
 handle_request (SoupServer        *server,
                 SoupMessage       *message,
@@ -4607,6 +4743,8 @@ handle_request (SoupServer        *serve
         handle_users (self, message);
     else if (strcmp (path, "/v2/download") == 0)
         handle_download (self, message);
+    else if (strcmp (path, "/v2/accessories/themes") == 0)
+        handle_themes (self, message);
     else
         send_error_not_found (self, message, "not found", NULL);
 }
@@ -4671,6 +4809,9 @@ mock_snapd_finalize (GObject *object)
     g_clear_pointer (&self->spawn_time, g_free);
     g_clear_pointer (&self->ready_time, g_free);
     g_clear_pointer (&self->last_request_headers, soup_message_headers_free);
+    g_clear_pointer (&self->gtk_theme_status, g_hash_table_unref);
+    g_clear_pointer (&self->icon_theme_status, g_hash_table_unref);
+    g_clear_pointer (&self->sound_theme_status, g_hash_table_unref);
     g_clear_pointer (&self->context, g_main_context_unref);
     g_clear_pointer (&self->loop, g_main_loop_unref);
 
@@ -4807,6 +4948,9 @@ mock_snapd_init (MockSnapd *self)
     g_cond_init (&self->condition);
 
     self->sandbox_features = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_ptr_array_unref);
+    self->gtk_theme_status = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+    self->icon_theme_status = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+    self->sound_theme_status = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
     g_autoptr(GError) error = NULL;
     self->dir_path = g_dir_make_tmp ("mock-snapd-XXXXXX", &error);
     if (self->dir_path == NULL)
diff -pruN 1.59-3/tests/mock-snapd.h 1.60-0ubuntu1/tests/mock-snapd.h
--- 1.59-3/tests/mock-snapd.h	2021-03-04 03:49:31.172320400 +0000
+++ 1.60-0ubuntu1/tests/mock-snapd.h	2022-02-15 01:52:07.000000000 +0000
@@ -373,6 +373,9 @@ MockMedia      *mock_snap_add_media
 void            mock_snap_set_status              (MockSnap      *snap,
                                                    const gchar   *status);
 
+void            mock_snap_set_store_url           (MockSnap      *snap,
+                                                   const gchar   *store_url);
+
 void            mock_snap_set_summary             (MockSnap      *snap,
                                                    const gchar   *summary);
 
@@ -444,6 +447,18 @@ const gchar    *mock_snapd_get_last_acce
 
 const gchar    *mock_snapd_get_last_allow_interaction (MockSnapd *snapd);
 
+void            mock_snapd_set_gtk_theme_status   (MockSnapd     *snapd,
+                                                   const gchar   *name,
+                                                   const gchar   *status);
+
+void            mock_snapd_set_icon_theme_status  (MockSnapd     *snapd,
+                                                   const gchar   *name,
+                                                   const gchar   *status);
+
+void            mock_snapd_set_sound_theme_status (MockSnapd     *snapd,
+                                                   const gchar   *name,
+                                                   const gchar   *status);
+
 G_END_DECLS
 
 #endif /* __MOCK_SNAPD_H__ */
diff -pruN 1.59-3/tests/test-glib.c 1.60-0ubuntu1/tests/test-glib.c
--- 1.59-3/tests/test-glib.c	2021-03-04 03:49:31.176320300 +0000
+++ 1.60-0ubuntu1/tests/test-glib.c	2022-02-15 01:52:07.000000000 +0000
@@ -1537,6 +1537,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_tracking_channel (snap), ==, NULL);
     g_assert_false (snapd_snap_get_trymode (snap));
@@ -1586,6 +1587,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_tracking_channel (snap), ==, NULL);
     g_assert_false (snapd_snap_get_trymode (snap));
@@ -1659,6 +1661,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_tracking_channel (snap), ==, NULL);
     g_assert_false (snapd_snap_get_trymode (snap));
@@ -1706,6 +1709,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, NULL);
     g_assert_cmpstr (snapd_snap_get_tracking_channel (snap), ==, NULL);
     g_assert_false (snapd_snap_get_trymode (snap));
@@ -1811,6 +1815,7 @@ test_get_snap_optional_fields (void)
     mock_snap_set_description (s, "DESCRIPTION");
     mock_snap_set_license (s, "LICENSE");
     mock_snap_set_mounted_from (s, "MOUNTED-FROM");
+    mock_snap_set_store_url (s, "https://snapcraft.io/snap");
     mock_snap_set_summary (s, "SUMMARY");
     mock_snap_set_tracking_channel (s, "CHANNEL");
 
@@ -1861,6 +1866,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, "https://snapcraft.io/snap");
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, "SUMMARY");
     g_assert_cmpstr (snapd_snap_get_tracking_channel (snap), ==, "CHANNEL");
     g_assert_true (snapd_snap_get_trymode (snap));
@@ -4117,6 +4123,7 @@ test_find_query (void)
     mock_snap_set_contact (s, "CONTACT");
     mock_snap_set_website (s, "WEBSITE");
     mock_snap_set_description (s, "DESCRIPTION");
+    mock_snap_set_store_url (s, "https://snapcraft.io/snap");
     mock_snap_set_summary (s, "SUMMARY");
     mock_snap_set_download_size (s, 1024);
     mock_snap_add_price (s, 1.25, "NZD");
@@ -4155,6 +4162,7 @@ test_find_query (void)
     g_assert_cmpint (snapd_channel_get_size (channel), ==, 65535);
     g_assert_null (snapd_snap_get_contact (snap));
     g_assert_null (snapd_snap_get_description (snap));
+    g_assert_null (snapd_snap_get_store_url (snap));
     g_assert_null (snapd_snap_get_summary (snap));
     snap = snaps->pdata[1];
     g_assert_cmpstr (snapd_snap_get_channel (snap), ==, "CHANNEL");
@@ -4194,6 +4202,7 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 G_GNUC_END_IGNORE_DEPRECATIONS
     g_assert_cmpint (snapd_snap_get_snap_type (snap), ==, SNAPD_SNAP_TYPE_APP);
     g_assert_cmpint (snapd_snap_get_status (snap), ==, SNAPD_SNAP_STATUS_ACTIVE);
+    g_assert_cmpstr (snapd_snap_get_store_url (snap), ==, "https://snapcraft.io/snap");
     g_assert_cmpstr (snapd_snap_get_summary (snap), ==, "SUMMARY");
     g_assert_true (snapd_snap_get_trymode (snap));
     g_assert_cmpstr (snapd_snap_get_version (snap), ==, "VERSION");
@@ -7795,6 +7804,232 @@ test_download_channel_revision (void)
 }
 
 static void
+test_themes_check_sync (void)
+{
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "installed");
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme2", "available");
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme3", "unavailable");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme1", "installed");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme2", "available");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme3", "unavailable");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme1", "installed");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme2", "available");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme3", "unavailable");
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", "gtktheme2", "gtktheme3", NULL };
+    char *icon_themes[] = { "icontheme1", "icontheme2", "icontheme3", NULL };
+    char *sound_themes[] = { "soundtheme1", "soundtheme2", "soundtheme3", NULL };
+    g_autoptr(GHashTable) gtk_status = NULL;
+    g_autoptr(GHashTable) icon_status = NULL;
+    g_autoptr(GHashTable) sound_status = NULL;
+
+    gboolean result = snapd_client_check_themes_sync (client, gtk_themes, icon_themes, sound_themes, &gtk_status, &icon_status, &sound_status, NULL, &error);
+    g_assert_no_error (error);
+    g_assert_true (result);
+    g_assert_nonnull (gtk_status);
+    g_assert_nonnull (icon_status);
+    g_assert_nonnull (sound_status);
+
+    g_assert_cmpint (g_hash_table_size (gtk_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+
+    g_assert_cmpint (g_hash_table_size (icon_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+
+    g_assert_cmpint (g_hash_table_size (sound_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+}
+
+static void
+check_themes_cb (GObject *object, GAsyncResult *result, gpointer user_data)
+{
+    g_autoptr(AsyncData) data = user_data;
+
+    g_autoptr(GError) error = NULL;
+    g_autoptr(GHashTable) gtk_status = NULL;
+    g_autoptr(GHashTable) icon_status = NULL;
+    g_autoptr(GHashTable) sound_status = NULL;
+    gboolean res = snapd_client_check_themes_finish (SNAPD_CLIENT (object), result, &gtk_status, &icon_status, &sound_status, &error);
+    g_assert_no_error (error);
+    g_assert_true (res);
+    g_assert_nonnull (gtk_status);
+    g_assert_nonnull (icon_status);
+    g_assert_nonnull (sound_status);
+
+    g_assert_cmpint (g_hash_table_size (gtk_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (gtk_status, "gtktheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+
+    g_assert_cmpint (g_hash_table_size (icon_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (icon_status, "icontheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+
+    g_assert_cmpint (g_hash_table_size (sound_status), ==, 3);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme1")), ==, SNAPD_THEME_STATUS_INSTALLED);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme2")), ==, SNAPD_THEME_STATUS_AVAILABLE);
+    g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (sound_status, "soundtheme3")), ==, SNAPD_THEME_STATUS_UNAVAILABLE);
+
+    g_main_loop_quit (data->loop);
+}
+
+static void
+test_themes_check_async (void)
+{
+    g_autoptr(GMainLoop) loop = g_main_loop_new (NULL, FALSE);
+
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "installed");
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme2", "available");
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme3", "unavailable");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme1", "installed");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme2", "available");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme3", "unavailable");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme1", "installed");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme2", "available");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme3", "unavailable");
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", "gtktheme2", "gtktheme3", NULL };
+    char *icon_themes[] = { "icontheme1", "icontheme2", "icontheme3", NULL };
+    char *sound_themes[] = { "soundtheme1", "soundtheme2", "soundtheme3", NULL };
+    snapd_client_check_themes_async (client, gtk_themes, icon_themes, sound_themes, NULL, check_themes_cb, async_data_new (loop, snapd));
+    g_main_loop_run (loop);
+}
+
+static void
+test_themes_install_sync (void)
+{
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "available");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme1", "available");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme1", "available");
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", NULL };
+    char *icon_themes[] = { "icontheme1", NULL };
+    char *sound_themes[] = { "soundtheme1", NULL };
+    gboolean result = snapd_client_install_themes_sync (client, gtk_themes, icon_themes, sound_themes, NULL, NULL, NULL, &error);
+    g_assert_no_error (error);
+    g_assert_true (result);
+}
+
+static void
+install_themes_cb (GObject *object, GAsyncResult *result, gpointer user_data)
+{
+    g_autoptr(AsyncData) data = user_data;
+
+    g_autoptr(GError) error = NULL;
+    gboolean res = snapd_client_install_themes_finish (SNAPD_CLIENT (object), result, &error);
+    g_assert_no_error (error);
+    g_assert_true (res);
+
+    g_main_loop_quit (data->loop);
+}
+
+static void
+test_themes_install_async (void)
+{
+    g_autoptr(GMainLoop) loop = g_main_loop_new (NULL, FALSE);
+
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "available");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme1", "available");
+    mock_snapd_set_sound_theme_status (snapd, "soundtheme1", "available");
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", NULL };
+    char *icon_themes[] = { "icontheme1", NULL };
+    char *sound_themes[] = { "soundtheme1", NULL };
+    snapd_client_install_themes_async (client, gtk_themes, icon_themes, sound_themes, NULL, NULL, NULL, install_themes_cb, async_data_new (loop, snapd));
+    g_main_loop_run (loop);
+}
+
+static void
+test_themes_install_no_snaps (void)
+{
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "installed");
+    mock_snapd_set_icon_theme_status (snapd, "icontheme1", "unavailable");
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", NULL };
+    char *icon_themes[] = { "icontheme1", NULL };
+    char *sound_themes[] = { NULL };
+    gboolean result = snapd_client_install_themes_sync (client, gtk_themes, icon_themes, sound_themes, NULL, NULL, NULL, &error);
+    g_assert_false (result);
+    g_assert_error (error, SNAPD_ERROR, SNAPD_ERROR_BAD_REQUEST);
+}
+
+static void
+test_themes_install_progress (void)
+{
+    InstallProgressData install_progress_data;
+    install_progress_data.progress_done = 0;
+    install_progress_data.spawn_time = "2017-01-02T11:23:58Z";
+    install_progress_data.ready_time = "2017-01-03T00:00:00Z";
+
+    g_autoptr(MockSnapd) snapd = mock_snapd_new ();
+    mock_snapd_set_spawn_time (snapd, install_progress_data.spawn_time);
+    mock_snapd_set_ready_time (snapd, install_progress_data.ready_time);
+    mock_snapd_set_gtk_theme_status (snapd, "gtktheme1", "available");
+
+    g_autoptr(GError) error = NULL;
+    g_assert_true (mock_snapd_start (snapd, &error));
+
+    g_autoptr(SnapdClient) client = snapd_client_new ();
+    snapd_client_set_socket_path (client, mock_snapd_get_socket_path (snapd));
+
+    char *gtk_themes[] = { "gtktheme1", NULL };
+    char *icon_themes[] = { "icontheme1", NULL };
+    char *sound_themes[] = { NULL };
+    gboolean result = snapd_client_install_themes_sync (client, gtk_themes, icon_themes, sound_themes, install_progress_cb, &install_progress_data, NULL, &error);
+;
+    g_assert_no_error (error);
+    g_assert_true (result);
+    g_assert_cmpint (install_progress_data.progress_done, >, 0);
+}
+
+static void
 test_stress (void)
 {
     g_autoptr(MockSnapd) snapd = mock_snapd_new ();
@@ -8062,6 +8297,12 @@ main (int argc, char **argv)
     g_test_add_func ("/download/sync", test_download_sync);
     g_test_add_func ("/download/async", test_download_async);
     g_test_add_func ("/download/channel-revision", test_download_channel_revision);
+    g_test_add_func ("/themes/check/sync", test_themes_check_sync);
+    g_test_add_func ("/themes/check/async", test_themes_check_async);
+    g_test_add_func ("/themes/install/sync", test_themes_install_sync);
+    g_test_add_func ("/themes/install/async", test_themes_install_async);
+    g_test_add_func ("/themes/install/no-snaps", test_themes_install_no_snaps);
+    g_test_add_func ("/themes/install/progress", test_themes_install_progress);
     g_test_add_func ("/stress/basic", test_stress);
 
     return g_test_run ();
diff -pruN 1.59-3/tests/test-qt.cpp 1.60-0ubuntu1/tests/test-qt.cpp
--- 1.59-3/tests/test-qt.cpp	2021-03-04 03:49:31.180320500 +0000
+++ 1.60-0ubuntu1/tests/test-qt.cpp	2022-02-15 01:52:07.000000000 +0000
@@ -1392,6 +1392,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_null (snap->storeUrl ());
     g_assert_null (snap->summary ());
     g_assert_null (snap->trackingChannel ());
     g_assert_false (snap->trymode ());
@@ -1436,6 +1437,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_null (snap->storeUrl ());
     g_assert_null (snap->summary ());
     g_assert_null (snap->trackingChannel ());
     g_assert_false (snap->trymode ());
@@ -1513,6 +1515,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_null (snap->storeUrl ());
     g_assert_null (snap->summary ());
     g_assert_null (snap->trackingChannel ());
     g_assert_false (snap->trymode ());
@@ -1557,6 +1560,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_null (snap->storeUrl ());
     g_assert_null (snap->summary ());
     g_assert_null (snap->trackingChannel ());
     g_assert_false (snap->trymode ());
@@ -1661,6 +1665,7 @@ test_get_snap_optional_fields ()
     mock_snap_set_description (s, "DESCRIPTION");
     mock_snap_set_license (s, "LICENSE");
     mock_snap_set_mounted_from (s, "MOUNTED-FROM");
+    mock_snap_set_store_url (s, "https://snapcraft.io/snap");
     mock_snap_set_summary (s, "SUMMARY");
     mock_snap_set_tracking_channel (s, "CHANNEL");
     g_assert_true (mock_snapd_start (snapd, NULL));
@@ -1713,6 +1718,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_true (snap->storeUrl () == "https://snapcraft.io/snap");
     g_assert_true (snap->summary () == "SUMMARY");
     g_assert_true (snap->trackingChannel () == "CHANNEL");
     g_assert_true (snap->trymode ());
@@ -3594,6 +3600,7 @@ test_find_query ()
     mock_snap_set_contact (s, "CONTACT");
     mock_snap_set_website (s, "WEBSITE");
     mock_snap_set_description (s, "DESCRIPTION");
+    mock_snap_set_store_url (s, "https://snapcraft.io/snap");
     mock_snap_set_summary (s, "SUMMARY");
     mock_snap_set_download_size (s, 1024);
     mock_snap_add_price (s, 1.25, "NZD");
@@ -3667,6 +3674,7 @@ QT_WARNING_DISABLE_DEPRECATED
 QT_WARNING_POP
     g_assert_cmpint (snap1->snapType (), ==, QSnapdEnums::SnapTypeApp);
     g_assert_cmpint (snap1->status (), ==, QSnapdEnums::SnapStatusActive);
+    g_assert_true (snap1->storeUrl () == "https://snapcraft.io/snap");
     g_assert_true (snap1->summary () == "SUMMARY");
     g_assert_true (snap1->trymode ());
     g_assert_true (snap1->version () == "VERSION");
