Commit 57386285 authored by Alexander Larsson's avatar Alexander Larsson

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.
parent 35db0819
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment