diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-04-02 08:56:21 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-04-02 09:02:05 -0400 |
commit | 8ec254e2bbe030d9ccca2d6ba25198644335e09f (patch) | |
tree | 37eae47b4add1b8bb114385057bfcf5a1cc71694 /gtk/gtkimcontextsimple.c | |
parent | 2a9911724f5ad1f3fa7eb8c7f48e7aaac45185f7 (diff) | |
download | gtk+-8ec254e2bbe030d9ccca2d6ba25198644335e09f.tar.gz |
imcontextsimple: Simpify Compose file loading
We are not loading the Compose file for individual contexts,
it just gets added to a global list. So don't pass an im context
along. This will let us move the loading out of the initialization
of individual contexts, and only do it once.
Diffstat (limited to 'gtk/gtkimcontextsimple.c')
-rw-r--r-- | gtk/gtkimcontextsimple.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/gtk/gtkimcontextsimple.c b/gtk/gtkimcontextsimple.c index 1b809a12e5..35ecce3d2e 100644 --- a/gtk/gtkimcontextsimple.c +++ b/gtk/gtkimcontextsimple.c @@ -160,7 +160,7 @@ get_x11_compose_file_dir (void) } static void -gtk_im_context_simple_init_compose_table (GtkIMContextSimple *im_context_simple) +gtk_im_context_simple_init_compose_table (void) { gchar *path = NULL; const gchar *home; @@ -174,7 +174,10 @@ gtk_im_context_simple_init_compose_table (GtkIMContextSimple *im_context_simple) path = g_build_filename (g_get_user_config_dir (), "gtk-4.0", "Compose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { - gtk_im_context_simple_add_compose_file (im_context_simple, path); + G_LOCK (global_tables); + global_tables = gtk_compose_table_list_add_file (global_tables, path); + G_UNLOCK (global_tables); + g_free (path); return; } @@ -188,7 +191,9 @@ gtk_im_context_simple_init_compose_table (GtkIMContextSimple *im_context_simple) path = g_build_filename (home, ".XCompose", NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { - gtk_im_context_simple_add_compose_file (im_context_simple, path); + G_LOCK (global_tables); + global_tables = gtk_compose_table_list_add_file (global_tables, path); + G_UNLOCK (global_tables); g_free (path); return; } @@ -234,7 +239,11 @@ gtk_im_context_simple_init_compose_table (GtkIMContextSimple *im_context_simple) g_strfreev (langs); if (path != NULL) - gtk_im_context_simple_add_compose_file (im_context_simple, path); + { + G_LOCK (global_tables); + global_tables = gtk_compose_table_list_add_file (global_tables, path); + G_UNLOCK (global_tables); + } g_free (path); path = NULL; } @@ -252,21 +261,19 @@ init_compose_table_thread_cb (GTask *task, g_return_if_fail (GTK_IS_IM_CONTEXT_SIMPLE (task_data)); - gtk_im_context_simple_init_compose_table (GTK_IM_CONTEXT_SIMPLE (task_data)); + gtk_im_context_simple_init_compose_table (); if (GDK_PROFILER_IS_RUNNING) gdk_profiler_end_mark (before, "im compose table load (thread)", NULL); } static void -init_compose_table_async (GtkIMContextSimple *im_context_simple, - GCancellable *cancellable, +init_compose_table_async (GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { GTask *task = g_task_new (NULL, cancellable, callback, user_data); g_task_set_source_tag (task, init_compose_table_async); - g_task_set_task_data (task, g_object_ref (im_context_simple), g_object_unref); g_task_run_in_thread (task, init_compose_table_thread_cb); g_object_unref (task); } @@ -1437,12 +1444,7 @@ static void gtk_im_context_simple_set_client_widget (GtkIMContext *context, GtkWidget *widget) { - GtkIMContextSimple *im_context_simple = GTK_IM_CONTEXT_SIMPLE (context); - - if (!widget) - return; - - init_compose_table_async (im_context_simple, NULL, NULL, NULL); + init_compose_table_async (NULL, NULL, NULL); } /** |