DO NOT MERGE - Merge pi-dev@5234907 into stage-aosp-master

Bug: 120848293
Change-Id: Idb732259bb135f4d1e3968861fdc58263e4c040a
diff --git a/Android.bp b/Android.bp
index d43a37b..d806a4d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -3,7 +3,7 @@
 ]
 android_app {
     name: "Terminal",
-    srcs: ["**/*.java"],
+    srcs: ["src/**/*.java"],
     static_libs: ["androidx.viewpager_viewpager"],
     jni_libs: ["libjni_terminal"],
     // TODO: enable proguard once development has settled down
diff --git a/jni/com_android_terminal_Terminal.cpp b/jni/com_android_terminal_Terminal.cpp
index 277ca89..07690f0 100644
--- a/jni/com_android_terminal_Terminal.cpp
+++ b/jni/com_android_terminal_Terminal.cpp
@@ -27,13 +27,13 @@
 
 #include <fcntl.h>
 #include <pty.h>
-#include <stdio.h>
+#include <cstdio>
 #include <termios.h>
 #include <unistd.h>
 
 #include <vterm.h>
 
-#include <string.h>
+#include <cstring>
 
 #define USE_TEST_SHELL 0
 #define DEBUG_CALLBACKS 0
@@ -207,21 +207,14 @@
         return env->CallIntMethod(term->getCallbacks(), setTermPropStringMethod, prop,
                 env->NewStringUTF(val->string));
     case VTERM_VALUETYPE_COLOR:
-        return env->CallIntMethod(term->getCallbacks(), setTermPropIntMethod, prop, val->color.red,
-                val->color.green, val->color.blue);
+        return env->CallIntMethod(term->getCallbacks(), setTermPropIntMethod, prop,
+                val->color.rgb.red, val->color.rgb.green, val->color.rgb.blue);
     default:
         ALOGE("unknown callback type");
         return 0;
     }
 }
 
-static int term_setmousefunc(VTermMouseFunc func, void *data, void *user) {
-#if DEBUG_CALLBACKS
-    ALOGW("term_setmousefunc");
-#endif
-    return 1;
-}
-
 static int term_bell(void *user) {
     Terminal* term = reinterpret_cast<Terminal*>(user);
 #if DEBUG_CALLBACKS
@@ -255,7 +248,6 @@
     .moverect = term_moverect,
     .movecursor = term_movecursor,
     .settermprop = term_settermprop,
-    .setmousefunc = term_setmousefunc,
     .bell = term_bell,
     // Resize requests are applied immediately, so callback is ignored
     .resize = NULL,
@@ -274,7 +266,7 @@
 
     /* Create VTerm */
     mVt = vterm_new(mRows, mCols);
-    vterm_parser_set_utf8(mVt, 1);
+    vterm_set_utf8(mVt, 1);
 
     /* Set up screen */
     mVts = vterm_obtain_screen(mVt);
@@ -345,7 +337,9 @@
         // We know execvp(2) won't actually try to modify this.
         char *shell = const_cast<char*>("/system/bin/sh");
 #if USE_TEST_SHELL
-        char *args[4] = {shell, "-c", "x=1; c=0; while true; do echo -e \"stop \e[00;3${c}mechoing\e[00m yourself! ($x)\"; x=$(( $x + 1 )); c=$((($c+1)%7)); if [ $x -gt 110 ]; then sleep 0.5; fi; done", NULL};
+        char *arg1 = const_cast<char*>("-c");
+        char *arg2 = const_cast<char*>("x=1; c=0; while true; do echo -e \"stop \e[00;3${c}mechoing\e[00m yourself! ($x)\"; x=$(( $x + 1 )); c=$((($c+1)%7)); if [ $x -gt 110 ]; then sleep 0.5; fi; done");
+        char *args[4] = {shell, arg1, arg2, NULL};
 #else
         char *args[2] = {shell, NULL};
 #endif
@@ -378,7 +372,7 @@
 
         {
             Mutex::Autolock lock(mLock);
-            vterm_push_bytes(mVt, buffer, bytes);
+            vterm_input_write(mVt, buffer, bytes);
             vterm_screen_flush_damage(mVts);
         }
     }
@@ -392,13 +386,13 @@
 
 bool Terminal::dispatchCharacter(int mod, int character) {
     Mutex::Autolock lock(mLock);
-    vterm_input_push_char(mVt, static_cast<VTermModifier>(mod), character);
+    vterm_keyboard_unichar(mVt, character, static_cast<VTermModifier>(mod));
     return flushInput();
 }
 
 bool Terminal::dispatchKey(int mod, int key) {
     Mutex::Autolock lock(mLock);
-    vterm_input_push_key(mVt, static_cast<VTermModifier>(mod), static_cast<VTermKey>(key));
+    vterm_keyboard_key(mVt, static_cast<VTermKey>(key), static_cast<VTermModifier>(mod));
     return flushInput();
 }
 
@@ -406,7 +400,7 @@
     size_t len = vterm_output_get_buffer_current(mVt);
     if (len) {
         char buf[len];
-        len = vterm_output_bufferread(mVt, buf, len);
+        len = vterm_output_read(mVt, buf, len);
         return len == write(buf, len);
     }
     return true;
@@ -569,7 +563,7 @@
 }
 
 static inline int toArgb(const VTermColor& color) {
-    return (0xff << 24 | color.red << 16 | color.green << 8 | color.blue);
+    return (0xff << 24 | color.rgb.red << 16 | color.rgb.green << 8 | color.rgb.blue);
 }
 
 static inline bool isCellStyleEqual(const VTermScreenCell& a, const VTermScreenCell& b) {