engine: look dictionaries up synchronously
The dictionary thread ran in imthread's own proc, so a lookup could only start once the engine blocked, and it was a trie probe anyway; the emoji and Hanja searches already called dictlookup directly. The request/result channels, sequence numbers, staleness checks and the second draw per Japanese key are gone; dictqjp fills the candidates in place. Emit.dict and Lang.dictq only ever triggered lookups for Vietnamese, which has no dictionary. dictlookup(Lang*, key, out, max) returns the count. The Hanja lookup no longer pre-checks for a single syllable; a reading either has an entry or it does not.
This commit is contained in:
@@ -5,8 +5,6 @@
|
||||
|
||||
Channel *drawc;
|
||||
Channel *keyc;
|
||||
Channel *dictreqc;
|
||||
Channel *dictresc;
|
||||
Lang testvi;
|
||||
|
||||
void
|
||||
@@ -88,10 +86,8 @@ static const struct ct_test tests[] = {
|
||||
{ "engine/candidate-page-snapshots", engine_candidate_page_snapshots },
|
||||
{ "engine/candidate-page-movement", engine_candidate_page_movement },
|
||||
{ "engine/candidate-completion", engine_candidate_completion },
|
||||
{ "engine/dictionary-queue-latest", engine_dictionary_queue_latest_wins },
|
||||
{ "engine/active-owner-lifecycle", engine_active_owner_lifecycle },
|
||||
{ "engine/active-owner-reset", engine_active_owner_reset },
|
||||
{ "engine/rejects-stale-dictionary", engine_rejects_stale_dictionary_results },
|
||||
{ "engine/active-owner-caret", engine_active_owner_caret },
|
||||
{ "engine/popup-preedit-capability", engine_popup_preedit_capability },
|
||||
{ "engine/vietnamese-client-preedit", engine_vietnamese_client_preedit },
|
||||
@@ -112,7 +108,6 @@ static const struct ct_test tests[] = {
|
||||
{ "engine/search-candidate-keys", engine_search_candidate_keys },
|
||||
{ "engine/emoji-preedit-languages", engine_emoji_preedit_languages },
|
||||
{ "engine/emoji-start-and-unknown", engine_emoji_start_and_unknown },
|
||||
{ "engine/emoji-dictionary-identity", engine_emoji_dictionary_identity },
|
||||
{ "engine/hanja-search", engine_hanja_search },
|
||||
{ "engine/hanja-unknown-cancel", engine_hanja_unknown_and_cancel },
|
||||
{ "engine/hanja-korean-keys", engine_hanja_korean_keys },
|
||||
@@ -120,7 +115,7 @@ static const struct ct_test tests[] = {
|
||||
{ "engine/hanja-input-languages", engine_hanja_input_languages },
|
||||
{ "engine/full-boundary-passthrough", engine_full_boundary_passthrough },
|
||||
{ "dict/candidates", dictionary_candidates },
|
||||
{ "dict/misses-clear-result", dictionary_misses_clear_result },
|
||||
{ "dict/misses", dictionary_misses },
|
||||
{ "dict/emoji-identity", dictionary_emoji_identity },
|
||||
{ "ipc/masks-modifiers", ipc_masks_modifiers },
|
||||
{ "ipc/control-caret-frames", ipc_control_and_caret_frames },
|
||||
@@ -166,8 +161,6 @@ threadmain(int argc, char **argv)
|
||||
|
||||
drawc = chancreate(sizeof(Drawcmd), 4);
|
||||
keyc = chancreate(sizeof(Keyreq), 0);
|
||||
dictreqc = chancreate(sizeof(Dictreq), 64);
|
||||
dictresc = chancreate(sizeof(Dictres), 0);
|
||||
testmapinit();
|
||||
status = CT_RUN_ARGS(tests, argc, argv);
|
||||
for(i = 0; i < nlang; i++){
|
||||
@@ -178,7 +171,5 @@ threadmain(int argc, char **argv)
|
||||
testvi.map = nil;
|
||||
chanfree(drawc);
|
||||
chanfree(keyc);
|
||||
chanfree(dictreqc);
|
||||
chanfree(dictresc);
|
||||
threadexitsall(status == 0 ? nil : "tests failed");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user