summaryrefslogtreecommitdiff
path: root/src/com
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-02-21 17:45:16 -0800
committerJeff Sharkey <jsharkey@android.com>2013-02-21 17:52:34 -0800
commit479bd643981271fb0edf756ae5915e44a7352c4d (patch)
treedb3ebc4bb28345500906392e2ec76d4d7be36dde /src/com
parent9cae0a9616b1b71eac7e762d198fe1da47fea901 (diff)
downloadTerminal-479bd643981271fb0edf756ae5915e44a7352c4d.tar.gz
Split init() and run().
Also switch to ScopedCharArrayRW. Change-Id: I1e22a166c48ba7209e624fc49bee8618e9b36f0d
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/terminal/Terminal.java22
-rw-r--r--src/com/android/terminal/TerminalActivity.java2
-rw-r--r--src/com/android/terminal/TerminalView.java5
3 files changed, 20 insertions, 9 deletions
diff --git a/src/com/android/terminal/Terminal.java b/src/com/android/terminal/Terminal.java
index dfd370b..c2e9749 100644
--- a/src/com/android/terminal/Terminal.java
+++ b/src/com/android/terminal/Terminal.java
@@ -22,6 +22,8 @@ import android.graphics.Color;
* Single terminal session backed by a pseudo terminal on the local device.
*/
public class Terminal {
+ private static final String TAG = "Terminal";
+
static {
System.loadLibrary("jni_terminal");
}
@@ -52,6 +54,8 @@ public class Terminal {
}
private final int mNativePtr;
+ private final Thread mThread;
+
private TerminalClient mClient;
private final TerminalCallbacks mCallbacks = new TerminalCallbacks() {
@@ -74,14 +78,19 @@ public class Terminal {
public Terminal() {
mNativePtr = nativeInit(mCallbacks, 25, 80);
-
- // TODO: move all I/O into separate method; init should only be object setup
- new Thread(new Runnable() {
+ mThread = new Thread(TAG) {
@Override
public void run() {
- nativeReadLoop(mNativePtr);
+ nativeRun(mNativePtr);
}
- }).start();
+ };
+ }
+
+ /**
+ * Start thread which internally forks and manages the pseudo terminal.
+ */
+ public void start() {
+ mThread.start();
}
public void setClient(TerminalClient client) {
@@ -109,7 +118,8 @@ public class Terminal {
}
private static native int nativeInit(TerminalCallbacks callbacks, int rows, int cols);
- private static native int nativeReadLoop(int ptr);
+ private static native int nativeRun(int ptr);
+
private static native int nativeResize(int ptr, int rows, int cols);
private static native int nativeGetCellRun(int ptr, int row, int col, CellRun run);
private static native int nativeGetRows(int ptr);
diff --git a/src/com/android/terminal/TerminalActivity.java b/src/com/android/terminal/TerminalActivity.java
index 601fd98..bef1859 100644
--- a/src/com/android/terminal/TerminalActivity.java
+++ b/src/com/android/terminal/TerminalActivity.java
@@ -28,6 +28,8 @@ public class TerminalActivity extends Activity {
super.onCreate(savedInstanceState);
final Terminal term = new Terminal();
+ term.start();
+
final TerminalView view = new TerminalView(this, term);
setContentView(view);
diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java
index 33b651b..eb4f063 100644
--- a/src/com/android/terminal/TerminalView.java
+++ b/src/com/android/terminal/TerminalView.java
@@ -20,13 +20,12 @@ import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
-import android.graphics.Typeface;
import android.graphics.Paint.FontMetrics;
import android.graphics.Rect;
-import android.view.View;
-
+import android.graphics.Typeface;
import android.os.SystemClock;
import android.util.Log;
+import android.view.View;
import com.android.terminal.Terminal.TerminalClient;