diff options
author | Richard Hughes <richard@hughsie.com> | 2015-02-02 11:36:29 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-02-02 11:36:29 +0000 |
commit | 25b97c77b2d27f9c86d1a0bb6b731a327a1906a6 (patch) | |
tree | 589d7efb5515ccb682c3116d27410136b6f4baac /libappstream-builder | |
parent | fbc9a6c77311a9aaf6cecdd44792d2d33e113e2d (diff) | |
download | appstream-glib-25b97c77b2d27f9c86d1a0bb6b731a327a1906a6.tar.gz |
Only open the package when required
This reduces the peak RSS by about 15% typically.
Diffstat (limited to 'libappstream-builder')
-rw-r--r-- | libappstream-builder/asb-context.c | 3 | ||||
-rw-r--r-- | libappstream-builder/asb-package.c | 23 | ||||
-rw-r--r-- | libappstream-builder/asb-package.h | 2 |
3 files changed, 22 insertions, 6 deletions
diff --git a/libappstream-builder/asb-context.c b/libappstream-builder/asb-context.c index 69f920f..f6ea8b4 100644 --- a/libappstream-builder/asb-context.c +++ b/libappstream-builder/asb-context.c @@ -567,10 +567,9 @@ asb_context_add_filename (AsbContext *ctx, const gchar *filename, GError **error filename); return FALSE; } - if (!asb_package_open (pkg, filename, error)) - return FALSE; /* add to array */ + asb_package_set_filename (pkg, filename); asb_context_add_package (ctx, pkg); return TRUE; } diff --git a/libappstream-builder/asb-package.c b/libappstream-builder/asb-package.c index 4d444ba..5c68d43 100644 --- a/libappstream-builder/asb-package.c +++ b/libappstream-builder/asb-package.c @@ -794,6 +794,25 @@ asb_package_class_init (AsbPackageClass *klass) } /** + * asb_package_set_filename: + * @pkg: A #AsbPackage + * @filename: package filename + * + * Sets the package filename. + * + * Since: 0.3.5 + **/ +void +asb_package_set_filename (AsbPackage *pkg, const gchar *filename) +{ + AsbPackagePrivate *priv = GET_PRIVATE (pkg); + g_free (priv->basename); + g_free (priv->filename); + priv->basename = g_path_get_basename (filename); + priv->filename = g_strdup (filename); +} + +/** * asb_package_open: * @pkg: A #AsbPackage * @filename: package filename @@ -816,10 +835,6 @@ asb_package_open (AsbPackage *pkg, const gchar *filename, GError **error) /* already open */ if (priv->is_open) return TRUE; - - /* cache here */ - priv->filename = g_strdup (filename); - priv->basename = g_path_get_basename (filename); priv->is_open = TRUE; /* call distro-specific method */ diff --git a/libappstream-builder/asb-package.h b/libappstream-builder/asb-package.h index b996baa..e424469 100644 --- a/libappstream-builder/asb-package.h +++ b/libappstream-builder/asb-package.h @@ -139,6 +139,8 @@ void asb_package_set_kind (AsbPackage *pkg, AsbPackageKind kind); void asb_package_set_name (AsbPackage *pkg, const gchar *name); +void asb_package_set_filename (AsbPackage *pkg, + const gchar *filename); void asb_package_set_version (AsbPackage *pkg, const gchar *version); void asb_package_set_release (AsbPackage *pkg, |