Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50cf27b0 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Stop calling IMM#isActive() from TextView#onDraw()

Despite its name, InputMethodManager#isActive(View) internally aquires
IMM lock three times and may even trigger IME focus switching.

To make things simpler and more predictable,

  InputMethodManager#hasActiveInputConnectionInternal(View)

should be used instead, especially for methods like TextView#onDraw().

Bug: 291826769
Test: presubmit
Test: atest CtsInputMethodTestCases
Change-Id: I27f2d66050588c5adc6315160e54486131f3fca2
parent 33d74806
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2101,7 +2101,7 @@ public class Editor {
        if (ims != null && ims.mBatchEditNesting == 0) {
            InputMethodManager imm = getInputMethodManager();
            if (imm != null) {
                if (imm.isActive(mTextView)) {
                if (imm.hasActiveInputConnection(mTextView)) {
                    if (ims.mContentChanged || ims.mSelectionModeChanged) {
                        // We are in extract mode and the content has changed
                        // in some way... just report complete new text to the