From d3c34ad1f546d7d410e36dad20565789c420c1bd Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Mon, 28 Jun 2021 11:57:12 +0500 Subject: [PATCH] Fix issue where cursor blinker wouldn't automatically start after session change The reason was that mTerminalCursorBlinkerRunnable inner class mEmulator wouldn't get updated to the new mEmulator on session change and would still be using the old session's. --- .../src/main/java/com/termux/view/TerminalView.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/terminal-view/src/main/java/com/termux/view/TerminalView.java b/terminal-view/src/main/java/com/termux/view/TerminalView.java index 7fa8d513..d041248f 100644 --- a/terminal-view/src/main/java/com/termux/view/TerminalView.java +++ b/terminal-view/src/main/java/com/termux/view/TerminalView.java @@ -760,6 +760,10 @@ public final class TerminalView extends View { mEmulator = mTermSession.getEmulator(); mClient.onEmulatorSet(); + // Update mTerminalCursorBlinkerRunnable inner class mEmulator on session change + if (mTerminalCursorBlinkerRunnable != null) + mTerminalCursorBlinkerRunnable.setEmulator(mEmulator); + mTopRow = 0; scrollTo(0, 0); invalidate(); @@ -966,7 +970,7 @@ public final class TerminalView extends View { private class TerminalCursorBlinkerRunnable implements Runnable { - private final TerminalEmulator mEmulator; + private TerminalEmulator mEmulator; private final int mBlinkRate; // Initialize with false so that initial blink state is visible after toggling @@ -977,6 +981,10 @@ public final class TerminalView extends View { mBlinkRate = blinkRate; } + public void setEmulator(TerminalEmulator emulator) { + mEmulator = emulator; + } + public void run() { try { if (mEmulator != null) {