mgrLM // Use multithread data-loading for non-core models.

This commit is contained in:
ShikiSuen 2022-05-04 17:09:27 +08:00
parent 4bb93b5932
commit 92995a38ba
1 changed files with 39 additions and 35 deletions

View File

@ -51,8 +51,25 @@ class mgrLangModel: NSObject {
} }
public static func loadDataModels() { public static func loadDataModels() {
if !gLangModelCHT.isCNSDataLoaded() { DispatchQueue.global(qos: .userInitiated).async {
gLangModelCHT.loadCNSData(path: getBundleDataPath("char-kanji-cns")) if !gLangModelCHT.isCNSDataLoaded() {
gLangModelCHT.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
}
if !gLangModelCHT.isMiscDataLoaded() {
gLangModelCHT.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
}
if !gLangModelCHT.isSymbolDataLoaded() {
gLangModelCHT.loadSymbolData(path: getBundleDataPath("data-symbols"))
}
if !gLangModelCHS.isCNSDataLoaded() {
gLangModelCHS.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
}
if !gLangModelCHS.isMiscDataLoaded() {
gLangModelCHS.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
}
if !gLangModelCHS.isSymbolDataLoaded() {
gLangModelCHS.loadSymbolData(path: getBundleDataPath("data-symbols"))
}
} }
if !gLangModelCHT.isDataModelLoaded() { if !gLangModelCHT.isDataModelLoaded() {
NotifierController.notify( NotifierController.notify(
@ -67,17 +84,6 @@ class mgrLangModel: NSObject {
) )
) )
} }
if !gLangModelCHT.isMiscDataLoaded() {
gLangModelCHT.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
}
if !gLangModelCHT.isSymbolDataLoaded() {
gLangModelCHT.loadSymbolData(path: getBundleDataPath("data-symbols"))
}
// -----------------
if !gLangModelCHS.isCNSDataLoaded() {
gLangModelCHS.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
}
if !gLangModelCHS.isDataModelLoaded() { if !gLangModelCHS.isDataModelLoaded() {
NotifierController.notify( NotifierController.notify(
message: String( message: String(
@ -91,24 +97,20 @@ class mgrLangModel: NSObject {
) )
) )
} }
if !gLangModelCHS.isMiscDataLoaded() {
gLangModelCHS.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
}
if !gLangModelCHS.isSymbolDataLoaded() {
gLangModelCHS.loadSymbolData(path: getBundleDataPath("data-symbols"))
}
} }
public static func loadDataModel(_ mode: InputMode) { public static func loadDataModel(_ mode: InputMode) {
if mode == InputMode.imeModeCHS { if mode == InputMode.imeModeCHS {
if !gLangModelCHS.isMiscDataLoaded() { DispatchQueue.global(qos: .userInitiated).async {
gLangModelCHS.loadMiscData(path: getBundleDataPath("data-zhuyinwen")) if !gLangModelCHS.isMiscDataLoaded() {
} gLangModelCHS.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
if !gLangModelCHS.isSymbolDataLoaded() { }
gLangModelCHS.loadSymbolData(path: getBundleDataPath("data-symbols")) if !gLangModelCHS.isSymbolDataLoaded() {
} gLangModelCHS.loadSymbolData(path: getBundleDataPath("data-symbols"))
if !gLangModelCHS.isCNSDataLoaded() { }
gLangModelCHS.loadCNSData(path: getBundleDataPath("char-kanji-cns")) if !gLangModelCHS.isCNSDataLoaded() {
gLangModelCHS.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
}
} }
if !gLangModelCHS.isDataModelLoaded() { if !gLangModelCHS.isDataModelLoaded() {
NotifierController.notify( NotifierController.notify(
@ -124,14 +126,16 @@ class mgrLangModel: NSObject {
) )
} }
} else if mode == InputMode.imeModeCHT { } else if mode == InputMode.imeModeCHT {
if !gLangModelCHT.isMiscDataLoaded() { DispatchQueue.global(qos: .userInitiated).async {
gLangModelCHT.loadMiscData(path: getBundleDataPath("data-zhuyinwen")) if !gLangModelCHT.isMiscDataLoaded() {
} gLangModelCHT.loadMiscData(path: getBundleDataPath("data-zhuyinwen"))
if !gLangModelCHT.isSymbolDataLoaded() { }
gLangModelCHT.loadSymbolData(path: getBundleDataPath("data-symbols")) if !gLangModelCHT.isSymbolDataLoaded() {
} gLangModelCHT.loadSymbolData(path: getBundleDataPath("data-symbols"))
if !gLangModelCHT.isCNSDataLoaded() { }
gLangModelCHT.loadCNSData(path: getBundleDataPath("char-kanji-cns")) if !gLangModelCHT.isCNSDataLoaded() {
gLangModelCHT.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
}
} }
if !gLangModelCHT.isDataModelLoaded() { if !gLangModelCHT.isDataModelLoaded() {
NotifierController.notify( NotifierController.notify(