summaryrefslogtreecommitdiff
path: root/bus
diff options
context:
space:
mode:
authorDaiki Ueno <ueno@unixuser.org>2012-08-24 21:48:56 +0900
committerDaiki Ueno <ueno@unixuser.org>2012-08-24 21:48:56 +0900
commit69970b68c025a04f6ac557f8b196f2d5d3fe858e (patch)
tree682419b1bec7a68245c6cf72aab6b94c7ba3043b /bus
parent6bd9e0d2d49205fda366b20b18c7b20636993776 (diff)
tests: add engine-switch test
Moved engine specific test from ibus-bus.c to a separate file, so that it can be conditionally built depending on --enable-engine. Also do not register duplicate engine when loading component files. This is for the case when two engine descs with the same name are in different directories in IBUS_COMPONENT_PATH. BUG=none Review URL: https://codereview.appspot.com/6480052
Diffstat (limited to 'bus')
-rw-r--r--bus/registry.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/bus/registry.c b/bus/registry.c
index f8f42855..946e8270 100644
--- a/bus/registry.c
+++ b/bus/registry.c
@@ -147,9 +147,15 @@ bus_registry_init (BusRegistry *registry)
GList *p1;
for (p1 = engines; p1 != NULL; p1 = p1->next) {
IBusEngineDesc *desc = (IBusEngineDesc *) p1->data;
- g_hash_table_insert (registry->engine_table,
- (gpointer) ibus_engine_desc_get_name (desc),
- desc);
+ const gchar *name = ibus_engine_desc_get_name (desc);
+ if (g_hash_table_lookup (registry->engine_table, name) == NULL) {
+ g_hash_table_insert (registry->engine_table,
+ (gpointer) name,
+ desc);
+ } else {
+ g_message ("Engine %s is already registered by other component",
+ name);
+ }
}
g_list_free (engines);
}