void key_configure_thaw(void) { g_return_if_fail(key_config_frozen > 0); if (--key_config_frozen == 0) key_states_rescan(); }
/* Configure new key */ static void key_configure_create(const char *id, const char *key, const char *data) { KEYINFO_REC *info; KEY_REC *rec; g_return_if_fail(id != NULL); g_return_if_fail(key != NULL && *key != '\0'); info = key_info_find(id); if (info == NULL) return; rec = g_hash_table_lookup(keys, key); if (rec != NULL) key_configure_destroy(rec); rec = g_new0(KEY_REC, 1); rec->key = g_strdup(key); rec->info = info; rec->data = g_strdup(data); info->keys = g_slist_append(info->keys, rec); g_hash_table_insert(keys, rec->key, rec); signal_emit("key created", 1, rec); if (!key_config_frozen) key_states_rescan(); }
static void key_configure_destroy(KEY_REC *rec) { g_return_if_fail(rec != NULL); rec->info->keys = g_slist_remove(rec->info->keys, rec); g_hash_table_remove(keys, rec->key); if (!key_config_frozen) key_states_rescan(); g_free_not_null(rec->data); g_free(rec->key); g_free(rec); }