summaryrefslogtreecommitdiffstats
path: root/jni/com_android_terminal_Terminal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'jni/com_android_terminal_Terminal.cpp')
-rw-r--r--jni/com_android_terminal_Terminal.cpp33
1 files changed, 16 insertions, 17 deletions
diff --git a/jni/com_android_terminal_Terminal.cpp b/jni/com_android_terminal_Terminal.cpp
index bc303dd..9f4b36e 100644
--- a/jni/com_android_terminal_Terminal.cpp
+++ b/jni/com_android_terminal_Terminal.cpp
@@ -34,7 +34,7 @@
#include <string.h>
-#define USE_TEST_SHELL 1
+#define USE_TEST_SHELL 0
#define DEBUG_CALLBACKS 0
#define DEBUG_IO 0
@@ -87,9 +87,9 @@ public:
size_t write(const char *bytes, size_t len);
- int dispatchCharacter(int mod, int character);
- int dispatchKey(int mod, int key);
- void flushInput();
+ bool dispatchCharacter(int mod, int character);
+ bool dispatchKey(int mod, int key);
+ bool flushInput();
int flushDamage();
int resize(short unsigned int rows, short unsigned int cols);
@@ -387,25 +387,24 @@ size_t Terminal::write(const char *bytes, size_t len) {
return ::write(mMasterFd, bytes, len);
}
-int Terminal::dispatchCharacter(int mod, int character) {
+bool Terminal::dispatchCharacter(int mod, int character) {
vterm_input_push_char(mVt, static_cast<VTermModifier>(mod), character);
- flushInput();
- return 0;
+ return flushInput();
}
-int Terminal::dispatchKey(int mod, int key) {
+bool Terminal::dispatchKey(int mod, int key) {
vterm_input_push_key(mVt, static_cast<VTermModifier>(mod), static_cast<VTermKey>(key));
- flushInput();
- return 0;
+ return flushInput();
}
-void Terminal::flushInput() {
+bool Terminal::flushInput() {
size_t len = vterm_output_get_buffer_current(mVt);
if (len) {
char buf[len];
len = vterm_output_bufferread(mVt, buf, len);
- write(buf, len);
+ return len == write(buf, len);
}
+ return true;
}
int Terminal::flushDamage() {
@@ -559,14 +558,14 @@ static jint com_android_terminal_Terminal_nativeGetCols(JNIEnv* env, jclass claz
return term->getCols();
}
-static jint com_android_terminal_Terminal_nativeDispatchCharacter(JNIEnv *env, jclass clazz,
+static jboolean com_android_terminal_Terminal_nativeDispatchCharacter(JNIEnv *env, jclass clazz,
jint ptr, jint mod, jint c) {
Terminal* term = reinterpret_cast<Terminal*>(ptr);
return term->dispatchCharacter(mod, c);
}
-static jint com_android_terminal_Terminal_nativeDispatchKey(JNIEnv *env, jclass clazz, jint ptr,
- jint mod, jint c) {
+static jboolean com_android_terminal_Terminal_nativeDispatchKey(JNIEnv *env, jclass clazz,
+ jint ptr, jint mod, jint c) {
Terminal* term = reinterpret_cast<Terminal*>(ptr);
return term->dispatchKey(mod, c);
}
@@ -580,8 +579,8 @@ static JNINativeMethod gMethods[] = {
{ "nativeGetCellRun", "(IIILcom/android/terminal/Terminal$CellRun;)I", (void*)com_android_terminal_Terminal_nativeGetCellRun },
{ "nativeGetRows", "(I)I", (void*)com_android_terminal_Terminal_nativeGetRows },
{ "nativeGetCols", "(I)I", (void*)com_android_terminal_Terminal_nativeGetCols },
- { "nativeDispatchCharacter", "(III)I", (void*)com_android_terminal_Terminal_nativeDispatchCharacter},
- { "nativeDispatchKey", "(III)I", (void*)com_android_terminal_Terminal_nativeDispatchKey },
+ { "nativeDispatchCharacter", "(III)Z", (void*)com_android_terminal_Terminal_nativeDispatchCharacter},
+ { "nativeDispatchKey", "(III)Z", (void*)com_android_terminal_Terminal_nativeDispatchKey },
};
int register_com_android_terminal_Terminal(JNIEnv* env) {