Loading core/java/android/inputmethodservice/InputMethodService.java +11 −14 Original line number Original line Diff line number Diff line Loading @@ -807,9 +807,11 @@ public class InputMethodService extends AbstractInputMethodService { onUnbindInput(); onUnbindInput(); mInputBinding = null; mInputBinding = null; mInputConnection = null; mInputConnection = null; // free-up cached InkWindow surface on detaching from current client. if (mInkWindow != null) { if (mInkWindow != null) { removeHandwritingInkWindow(); finishStylusHandwriting(); // free-up InkWindow surface after timeout. scheduleStylusWindowIdleTimeout(); } } } } Loading Loading @@ -1020,6 +1022,7 @@ public class InputMethodService extends AbstractInputMethodService { mOnPreparedStylusHwCalled = true; mOnPreparedStylusHwCalled = true; } } if (onStartStylusHandwriting()) { if (onStartStylusHandwriting()) { cancelStylusWindowIdleTimeout(); mPrivOps.onStylusHandwritingReady(requestId, Process.myPid()); mPrivOps.onStylusHandwritingReady(requestId, Process.myPid()); } else { } else { Log.i(TAG, "IME is not ready. Can't start Stylus Handwriting"); Log.i(TAG, "IME is not ready. Can't start Stylus Handwriting"); Loading Loading @@ -1109,7 +1112,7 @@ public class InputMethodService extends AbstractInputMethodService { */ */ @Override @Override public void removeStylusHandwritingWindow() { public void removeStylusHandwritingWindow() { InputMethodService.this.removeStylusHandwritingWindow(); InputMethodService.this.finishAndRemoveStylusHandwritingWindow(); } } /** /** Loading Loading @@ -2667,21 +2670,15 @@ public class InputMethodService extends AbstractInputMethodService { * Typically, this is called when {@link InkWindow} should no longer be holding a surface in * Typically, this is called when {@link InkWindow} should no longer be holding a surface in * memory. * memory. */ */ private void removeStylusHandwritingWindow() { private void finishAndRemoveStylusHandwritingWindow() { cancelStylusWindowIdleTimeout(); mOnPreparedStylusHwCalled = false; mStylusWindowIdleTimeoutRunnable = null; if (mInkWindow != null) { if (mInkWindow != null) { if (mHandwritingRequestId.isPresent()) { if (mHandwritingRequestId.isPresent()) { // if handwriting session is still ongoing. This shouldn't happen. // if handwriting session is still ongoing. This shouldn't happen. finishStylusHandwriting(); finishStylusHandwriting(); } } removeHandwritingInkWindow(); } } private void removeHandwritingInkWindow() { cancelStylusWindowIdleTimeout(); mOnPreparedStylusHwCalled = false; mStylusWindowIdleTimeoutRunnable = null; if (mInkWindow != null) { mInkWindow.hide(true /* remove */); mInkWindow.hide(true /* remove */); mInkWindow.destroy(); mInkWindow.destroy(); mInkWindow = null; mInkWindow = null; Loading @@ -2707,7 +2704,7 @@ public class InputMethodService extends AbstractInputMethodService { private Runnable getStylusWindowIdleTimeoutRunnable() { private Runnable getStylusWindowIdleTimeoutRunnable() { if (mStylusWindowIdleTimeoutRunnable == null) { if (mStylusWindowIdleTimeoutRunnable == null) { mStylusWindowIdleTimeoutRunnable = () -> { mStylusWindowIdleTimeoutRunnable = () -> { removeHandwritingInkWindow(); finishAndRemoveStylusHandwritingWindow(); mStylusWindowIdleTimeoutRunnable = null; mStylusWindowIdleTimeoutRunnable = null; }; }; } } Loading Loading
core/java/android/inputmethodservice/InputMethodService.java +11 −14 Original line number Original line Diff line number Diff line Loading @@ -807,9 +807,11 @@ public class InputMethodService extends AbstractInputMethodService { onUnbindInput(); onUnbindInput(); mInputBinding = null; mInputBinding = null; mInputConnection = null; mInputConnection = null; // free-up cached InkWindow surface on detaching from current client. if (mInkWindow != null) { if (mInkWindow != null) { removeHandwritingInkWindow(); finishStylusHandwriting(); // free-up InkWindow surface after timeout. scheduleStylusWindowIdleTimeout(); } } } } Loading Loading @@ -1020,6 +1022,7 @@ public class InputMethodService extends AbstractInputMethodService { mOnPreparedStylusHwCalled = true; mOnPreparedStylusHwCalled = true; } } if (onStartStylusHandwriting()) { if (onStartStylusHandwriting()) { cancelStylusWindowIdleTimeout(); mPrivOps.onStylusHandwritingReady(requestId, Process.myPid()); mPrivOps.onStylusHandwritingReady(requestId, Process.myPid()); } else { } else { Log.i(TAG, "IME is not ready. Can't start Stylus Handwriting"); Log.i(TAG, "IME is not ready. Can't start Stylus Handwriting"); Loading Loading @@ -1109,7 +1112,7 @@ public class InputMethodService extends AbstractInputMethodService { */ */ @Override @Override public void removeStylusHandwritingWindow() { public void removeStylusHandwritingWindow() { InputMethodService.this.removeStylusHandwritingWindow(); InputMethodService.this.finishAndRemoveStylusHandwritingWindow(); } } /** /** Loading Loading @@ -2667,21 +2670,15 @@ public class InputMethodService extends AbstractInputMethodService { * Typically, this is called when {@link InkWindow} should no longer be holding a surface in * Typically, this is called when {@link InkWindow} should no longer be holding a surface in * memory. * memory. */ */ private void removeStylusHandwritingWindow() { private void finishAndRemoveStylusHandwritingWindow() { cancelStylusWindowIdleTimeout(); mOnPreparedStylusHwCalled = false; mStylusWindowIdleTimeoutRunnable = null; if (mInkWindow != null) { if (mInkWindow != null) { if (mHandwritingRequestId.isPresent()) { if (mHandwritingRequestId.isPresent()) { // if handwriting session is still ongoing. This shouldn't happen. // if handwriting session is still ongoing. This shouldn't happen. finishStylusHandwriting(); finishStylusHandwriting(); } } removeHandwritingInkWindow(); } } private void removeHandwritingInkWindow() { cancelStylusWindowIdleTimeout(); mOnPreparedStylusHwCalled = false; mStylusWindowIdleTimeoutRunnable = null; if (mInkWindow != null) { mInkWindow.hide(true /* remove */); mInkWindow.hide(true /* remove */); mInkWindow.destroy(); mInkWindow.destroy(); mInkWindow = null; mInkWindow = null; Loading @@ -2707,7 +2704,7 @@ public class InputMethodService extends AbstractInputMethodService { private Runnable getStylusWindowIdleTimeoutRunnable() { private Runnable getStylusWindowIdleTimeoutRunnable() { if (mStylusWindowIdleTimeoutRunnable == null) { if (mStylusWindowIdleTimeoutRunnable == null) { mStylusWindowIdleTimeoutRunnable = () -> { mStylusWindowIdleTimeoutRunnable = () -> { removeHandwritingInkWindow(); finishAndRemoveStylusHandwritingWindow(); mStylusWindowIdleTimeoutRunnable = null; mStylusWindowIdleTimeoutRunnable = null; }; }; } } Loading