[gtk+] Support a gtk.gresource file in themes
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Support a gtk.gresource file in themes
- Date: Fri, 3 Feb 2012 14:53:32 +0000 (UTC)
commit 57386285fa23db6879efaccd2cfa7ed501b6056f
Author: Alexander Larsson <alexl redhat com>
Date: Fri Feb 3 15:50:49 2012 +0100
Support a gtk.gresource file in themes
This lets themes install a .gresource for efficient loading
of resources. This resource file will (if it exists) be automatically
loaded (mmaped) when the theme is used and unloaded when not used.
gtk/gtkcssprovider.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssprovider.c b/gtk/gtkcssprovider.c
index dbbf92a..e499db5 100644
--- a/gtk/gtkcssprovider.c
+++ b/gtk/gtkcssprovider.c
@@ -985,6 +985,7 @@ struct _GtkCssProviderPrivate
GHashTable *symbolic_colors;
GArray *rulesets;
+ GResource *resource;
};
enum {
@@ -1591,6 +1592,13 @@ gtk_css_provider_finalize (GObject *object)
if (priv->symbolic_colors)
g_hash_table_destroy (priv->symbolic_colors);
+ if (priv->resource)
+ {
+ g_resources_unregister (priv->resource);
+ g_resource_unref (priv->resource);
+ priv->resource = NULL;
+ }
+
G_OBJECT_CLASS (gtk_css_provider_parent_class)->finalize (object);
}
@@ -2901,8 +2909,20 @@ gtk_css_provider_get_named (const gchar *name,
if (path)
{
+ char *dir, *resource_file;
+ GResource *resource;
+
provider = gtk_css_provider_new ();
+ dir = g_path_get_dirname (path);
+ resource_file = g_build_filename (dir, "gtk.gresource", NULL);
+ resource = g_resource_load (resource_file, NULL);
+ if (resource != NULL)
+ {
+ provider->priv->resource = resource;
+ g_resources_register (resource);
+ }
+
if (!gtk_css_provider_load_from_path (provider, path, NULL))
{
g_object_unref (provider);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]