summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2015-01-14 12:46:42 +0100
committerDanny Baumann <dannybaumann@web.de>2015-01-14 13:42:02 +0100
commit9a76b2106d1e00cdea5fd8899a9849c2e58a91d0 (patch)
tree6cb11cb7501ca0713b4dbce5c2ff58de24e4d106
parent704921b9f00e7b88091d54800f47c5fe43e1658e (diff)
downloadandroid_packages_apps_Terminal-9a76b2106d1e00cdea5fd8899a9849c2e58a91d0.tar.gz
android_packages_apps_Terminal-9a76b2106d1e00cdea5fd8899a9849c2e58a91d0.tar.bz2
android_packages_apps_Terminal-9a76b2106d1e00cdea5fd8899a9849c2e58a91d0.zip
Also use set colors for scrollback lines that aren't filled yet.
Change-Id: I3848eada46ae8df05c72a31c5a8a15b71d06fe76
-rw-r--r--jni/com_android_terminal_Terminal.cpp23
-rw-r--r--src/com/android/terminal/TerminalView.java2
2 files changed, 15 insertions, 10 deletions
diff --git a/jni/com_android_terminal_Terminal.cpp b/jni/com_android_terminal_Terminal.cpp
index 131912f..53c0417 100644
--- a/jni/com_android_terminal_Terminal.cpp
+++ b/jni/com_android_terminal_Terminal.cpp
@@ -126,7 +126,7 @@ public:
status_t onPushline(dimen_t cols, const VTermScreenCell* cells);
status_t onPopline(dimen_t cols, VTermScreenCell* cells);
- void getCellLocked(VTermPos pos, VTermScreenCell* cell);
+ bool getCellLocked(VTermPos pos, VTermScreenCell* cell);
dimen_t getRows() const;
dimen_t getCols() const;
@@ -437,7 +437,7 @@ status_t Terminal::resize(dimen_t rows, dimen_t cols, dimen_t scrollRows) {
status_t Terminal::setColors(int fg, int bg) {
Mutex::Autolock lock(mLock);
- ALOGD("setColors(%d, %d)", fg, bg);
+ ALOGD("setColors(0x%x, 0x%x)", fg, bg);
VTermState* state = vterm_obtain_state(mVt);
VTermColor fg_color = { (uint8_t)((fg>>16)&0xff),
@@ -500,7 +500,7 @@ status_t Terminal::onPopline(dimen_t cols, VTermScreenCell* cells) {
return 1;
}
-void Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
+bool Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
// The UI may be asking for cell data while the model is changing
// underneath it, so we always fill with meaningful data.
@@ -512,7 +512,7 @@ void Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
#if DEBUG_SCROLLBACK
cell->bg.red = 255;
#endif
- return;
+ return false;
}
ScrollbackLine* line = mScroll[scrollRow - 1];
@@ -523,7 +523,7 @@ void Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
#if DEBUG_SCROLLBACK
cell->bg.blue = 255;
#endif
- return;
+ return true;
} else {
// Extend last scrollback cell into invalid region
line->getCell(line->cols - 1, cell);
@@ -532,7 +532,7 @@ void Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
#if DEBUG_SCROLLBACK
cell->bg.green = 255;
#endif
- return;
+ return true;
}
}
@@ -542,11 +542,12 @@ void Terminal::getCellLocked(VTermPos pos, VTermScreenCell* cell) {
#if DEBUG_SCROLLBACK
cell->bg.red = 128;
#endif
- return;
+ return false;
}
// Valid screen cell
vterm_screen_get_cell(mVts, pos, cell);
+ return true;
}
dimen_t Terminal::getRows() const {
@@ -637,11 +638,13 @@ static jint com_android_terminal_Terminal_nativeGetCellRun(JNIEnv* env,
size_t colSize = 0;
while ((size_t) pos.col < term->getCols()) {
memset(&cell, 0, sizeof(VTermScreenCell));
- term->getCellLocked(pos, &cell);
+ bool valid = term->getCellLocked(pos, &cell);
if (colSize == 0) {
- env->SetIntField(run, cellRunFgField, toArgb(cell.fg));
- env->SetIntField(run, cellRunBgField, toArgb(cell.bg));
+ if (valid) {
+ env->SetIntField(run, cellRunFgField, toArgb(cell.fg));
+ env->SetIntField(run, cellRunBgField, toArgb(cell.bg));
+ }
memcpy(&firstCell, &cell, sizeof(VTermScreenCell));
} else {
if (!isCellStyleEqual(cell, firstCell)) {
diff --git a/src/com/android/terminal/TerminalView.java b/src/com/android/terminal/TerminalView.java
index c24bbfb..974136a 100644
--- a/src/com/android/terminal/TerminalView.java
+++ b/src/com/android/terminal/TerminalView.java
@@ -382,6 +382,8 @@ public class TerminalView extends ListView {
}
}
mTerm.setColors(fg, bg);
+ mMetrics.run.fg = fg;
+ mMetrics.run.bg = bg;
mMetrics.cursorPaint.setColor(fg);
}
}