GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit 314027f0 authored by Michael Natterer's avatar Michael Natterer 😴

app: create members of the Gimp instance earlier

Move fonts, data factories, document list, paint methods and user
context creation to gimp_init() or gimp_constructed() so that most
members are created when gimp_new() is done. This does not load any
data earlier, it just makes sure that all containers exist when
gimp_load_config() is called. It's also cleaner and less fragile,
parent 631110e0
......@@ -252,6 +252,10 @@ gimp_init (Gimp *gimp)
gimp_object_set_static_name (GIMP_OBJECT (gimp->named_buffers),
"named buffers");
gimp_fonts_init (gimp);
gimp_data_factories_init (gimp);
gimp->tool_info_list = g_object_new (GIMP_TYPE_LIST,
"children-type", GIMP_TYPE_TOOL_INFO,
"append", TRUE,
......@@ -259,6 +263,8 @@ gimp_init (Gimp *gimp)
gimp_object_set_static_name (GIMP_OBJECT (gimp->tool_info_list),
"tool infos");
gimp->documents = gimp_document_list_new (gimp);
gimp->templates = gimp_list_new (GIMP_TYPE_TEMPLATE, TRUE);
gimp_object_set_static_name (GIMP_OBJECT (gimp->templates), "templates");
}
......@@ -272,12 +278,15 @@ gimp_constructed (GObject *object)
gimp_modules_init (gimp);
gimp_paint_init (gimp);
gimp->plug_in_manager = gimp_plug_in_manager_new (gimp);
gimp->pdb = gimp_pdb_new (gimp);
xcf_init (gimp);
gimp->documents = gimp_document_list_new (gimp);
/* create user and default context */
gimp_contexts_init (gimp);
}
static void
......@@ -397,11 +406,7 @@ gimp_finalize (GObject *object)
gimp_data_factories_exit (gimp);
if (gimp->fonts)
{
g_object_unref (gimp->fonts);
gimp->fonts = NULL;
}
gimp_fonts_exit (gimp);
if (gimp->named_buffers)
{
......@@ -563,20 +568,12 @@ gimp_real_initialize (Gimp *gimp,
status_callback (_("Initialization"), NULL, 0.0);
gimp_fonts_init (gimp);
/* create the data factories & tag cache */
gimp_data_factories_init (gimp);
gimp_paint_init (gimp);
gimp_fonts_set_config (gimp);
/* Set the last values used to default values. */
gimp->image_new_last_template =
gimp_config_duplicate (GIMP_CONFIG (gimp->config->default_image));
/* create user and default context */
gimp_contexts_init (gimp);
/* add data objects that need the user context */
gimp_data_factories_add_builtin (gimp);
......
......@@ -53,11 +53,33 @@ gimp_fonts_init (Gimp *gimp)
gimp->fonts = gimp_font_list_new (72.0, 72.0);
gimp_object_set_name (GIMP_OBJECT (gimp->fonts), "fonts");
}
void
gimp_fonts_set_config (Gimp *gimp)
{
g_return_if_fail (GIMP_IS_GIMP (gimp));
g_signal_connect_swapped (gimp->config, "notify::font-path",
G_CALLBACK (gimp_fonts_load), gimp);
}
void
gimp_fonts_exit (Gimp *gimp)
{
g_return_if_fail (GIMP_IS_GIMP (gimp));
if (gimp->fonts)
{
g_signal_handlers_disconnect_by_func (gimp->config,
G_CALLBACK (gimp_fonts_load),
gimp);
g_object_unref (gimp->fonts);
gimp->fonts = NULL;
}
}
typedef struct
{
FcConfig *config;
......
......@@ -19,10 +19,13 @@
#define __GIMP_FONTS_H__
void gimp_fonts_init (Gimp *gimp);
void gimp_fonts_load (Gimp *gimp,
GimpInitStatusFunc status_callback);
void gimp_fonts_reset (Gimp *gimp);
void gimp_fonts_init (Gimp *gimp);
void gimp_fonts_set_config (Gimp *gimp);
void gimp_fonts_exit (Gimp *gimp);
void gimp_fonts_load (Gimp *gimp,
GimpInitStatusFunc status_callback);
void gimp_fonts_reset (Gimp *gimp);
#endif /* __GIMP_FONTS_H__ */
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