Skip to content
Snippets Groups Projects
Commit 21800d37 authored by Aleksandras Kostarevas's avatar Aleksandras Kostarevas
Browse files

Disable transformer when super stressed

parent ecaf9df3
No related branches found
No related tags found
No related merge requests found
......@@ -381,6 +381,7 @@ class LatinIME : InputMethodService(), LifecycleOwner, ViewModelStoreOwner, Save
override fun onStartInput(attribute: EditorInfo?, restarting: Boolean) {
super.onStartInput(attribute, restarting)
latinIMELegacy.onStartInput(attribute, restarting)
languageModelFacilitator.onStartInput()
}
override fun onStartInputView(info: EditorInfo?, restarting: Boolean) {
......
......@@ -133,6 +133,9 @@ public class LanguageModelFacilitator(
public fun hasPendingUpdate(): Boolean =
computationSemaphore.availablePermits == 0
private var numConsecutiveTimeouts = 0
private var transformerDisabled = false
public fun blockUntilComplete() {
runBlocking {
try {
......@@ -145,8 +148,14 @@ public class LanguageModelFacilitator(
}
}
numConsecutiveTimeouts = 0
} catch(e: TimeoutCancellationException) {
Log.d("LanguageModelFacilitator", "Failed to complete prediction within 1000ms!")
numConsecutiveTimeouts += 1
if(numConsecutiveTimeouts > 5) {
transformerDisabled = true
Log.w("LanguageModelFacilitator", "Temporarily disabling transformer due to continuous timeouts")
}
}
}
}
......@@ -171,6 +180,8 @@ public class LanguageModelFacilitator(
}
private suspend fun runLanguageModel(values: PredictionInputValues): ArrayList<SuggestedWordInfo>? {
if(transformerDisabled) return null
val locale = dictionaryFacilitator.locale ?: return null
if (languageModel == null || (languageModel?.locale?.language != locale.language)) {
Log.d(
......@@ -602,4 +613,9 @@ public class LanguageModelFacilitator(
assert(historyLog.isEmpty())
loadHistoryLogBackup(context, historyLog)
}
public fun onStartInput() {
transformerDisabled = false
numConsecutiveTimeouts = 0
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment