aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-23 02:44:54 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-23 02:44:54 -0500
commit989c7f34b30198a87948d37e782f48d771336fa1 (patch)
tree2d600e425f8d09b1cfb6e3b98995126f10402563
parentb47e647487ab7eebb210bb0cd7f2734a437ca499 (diff)
downloadteleterm-989c7f34b30198a87948d37e782f48d771336fa1.tar.gz
teleterm-989c7f34b30198a87948d37e782f48d771336fa1.zip
remove some flickering
-rw-r--r--teleterm-web/src/model.rs15
-rw-r--r--teleterm-web/src/views/watch.rs6
-rw-r--r--teleterm/static/teleterm_web.js42
-rw-r--r--teleterm/static/teleterm_web_bg.wasmbin700263 -> 700342 bytes
4 files changed, 40 insertions, 23 deletions
diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs
index 362b4bd..8a22f1b 100644
--- a/teleterm-web/src/model.rs
+++ b/teleterm-web/src/model.rs
@@ -6,6 +6,7 @@ const WATCH_URL: &str = "ws://127.0.0.1:4145/watch";
struct WatchConn {
ws: WebSocket,
term: vt100::Parser,
+ received_data: bool,
}
impl Drop for WatchConn {
@@ -95,6 +96,13 @@ impl Model {
self.watch_conn.is_some()
}
+ pub(crate) fn received_data(&self) -> bool {
+ self.watch_conn
+ .as_ref()
+ .map(|conn| conn.received_data)
+ .unwrap_or(false)
+ }
+
fn watch(&mut self, id: &str, orders: &mut impl Orders<crate::Msg>) {
let ws = crate::ws::connect(
&format!("{}?id={}", WATCH_URL, id),
@@ -103,7 +111,11 @@ impl Model {
orders,
);
let term = vt100::Parser::default();
- self.watch_conn = Some(WatchConn { ws, term })
+ self.watch_conn = Some(WatchConn {
+ ws,
+ term,
+ received_data: false,
+ })
}
fn update_sessions(&mut self, sessions: Vec<crate::protocol::Session>) {
@@ -117,6 +129,7 @@ impl Model {
fn process(&mut self, bytes: &[u8]) {
if let Some(conn) = &mut self.watch_conn {
conn.term.process(bytes);
+ conn.received_data = true;
}
}
diff --git a/teleterm-web/src/views/watch.rs b/teleterm-web/src/views/watch.rs
index 5fe7830..cf00fff 100644
--- a/teleterm-web/src/views/watch.rs
+++ b/teleterm-web/src/views/watch.rs
@@ -3,7 +3,11 @@ use crate::prelude::*;
pub(crate) fn render(model: &crate::model::Model) -> Vec<Node<crate::Msg>> {
vec![
if let Some(screen) = model.screen() {
- crate::views::terminal::render(screen)
+ if model.received_data() {
+ crate::views::terminal::render(screen)
+ } else {
+ seed::empty![]
+ }
} else {
seed::empty![]
},
diff --git a/teleterm/static/teleterm_web.js b/teleterm/static/teleterm_web.js
index 3e096c7..a2f704d 100644
--- a/teleterm/static/teleterm_web.js
+++ b/teleterm/static/teleterm_web.js
@@ -20,24 +20,24 @@ function addHeapObject(obj) {
function __wbg_elem_binding0(arg0, arg1, arg2) {
wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
}
-function __wbg_elem_binding1(arg0, arg1) {
- wasm.__wbg_function_table.get(34)(arg0, arg1);
+function __wbg_elem_binding1(arg0, arg1, arg2) {
+ wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
}
function __wbg_elem_binding2(arg0, arg1, arg2) {
wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
}
function __wbg_elem_binding3(arg0, arg1, arg2) {
- wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
+ wasm.__wbg_function_table.get(62)(arg0, arg1, arg2);
}
function __wbg_elem_binding4(arg0, arg1, arg2) {
wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
}
function __wbg_elem_binding5(arg0, arg1, arg2) {
- wasm.__wbg_function_table.get(62)(arg0, arg1, arg2);
-}
-function __wbg_elem_binding6(arg0, arg1, arg2) {
wasm.__wbg_function_table.get(61)(arg0, arg1, addHeapObject(arg2));
}
+function __wbg_elem_binding6(arg0, arg1) {
+ wasm.__wbg_function_table.get(34)(arg0, arg1);
+}
function __wbg_elem_binding7(arg0, arg1, arg2, arg3, arg4) {
wasm.__wbg_function_table.get(18)(arg0, arg1, addHeapObject(arg2), arg3, addHeapObject(arg4));
}
@@ -884,14 +884,14 @@ function init(module) {
imports.wbg.__widl_f_warn_1_ = function(arg0) {
console.warn(getObject(arg0));
};
- imports.wbg.__wbindgen_closure_wrapper792 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper594 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
const real = (arg0) => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding2(a, state.b, arg0);
+ return __wbg_elem_binding5(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -909,7 +909,7 @@ function init(module) {
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding3(a, state.b, arg0);
+ return __wbg_elem_binding0(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -920,14 +920,14 @@ function init(module) {
const ret = real;
return addHeapObject(ret);
};
- imports.wbg.__wbindgen_closure_wrapper595 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper487 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
- const real = (arg0) => {
+ const real = () => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding0(a, state.b, arg0);
+ return __wbg_elem_binding6(a, state.b, );
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -938,14 +938,14 @@ function init(module) {
const ret = real;
return addHeapObject(ret);
};
- imports.wbg.__wbindgen_closure_wrapper653 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper655 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
const real = (arg0) => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding4(a, state.b, arg0);
+ return __wbg_elem_binding3(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -956,14 +956,14 @@ function init(module) {
const ret = real;
return addHeapObject(ret);
};
- imports.wbg.__wbindgen_closure_wrapper487 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper792 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
- const real = () => {
+ const real = (arg0) => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding1(a, state.b, );
+ return __wbg_elem_binding4(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -974,14 +974,14 @@ function init(module) {
const ret = real;
return addHeapObject(ret);
};
- imports.wbg.__wbindgen_closure_wrapper655 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper653 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
const real = (arg0) => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding5(a, state.b, arg0);
+ return __wbg_elem_binding1(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
@@ -992,14 +992,14 @@ function init(module) {
const ret = real;
return addHeapObject(ret);
};
- imports.wbg.__wbindgen_closure_wrapper594 = function(arg0, arg1, arg2) {
+ imports.wbg.__wbindgen_closure_wrapper595 = function(arg0, arg1, arg2) {
const state = { a: arg0, b: arg1, cnt: 1 };
const real = (arg0) => {
state.cnt++;
const a = state.a;
state.a = 0;
try {
- return __wbg_elem_binding6(a, state.b, arg0);
+ return __wbg_elem_binding2(a, state.b, arg0);
} finally {
if (--state.cnt === 0) wasm.__wbg_function_table.get(35)(a, state.b);
else state.a = a;
diff --git a/teleterm/static/teleterm_web_bg.wasm b/teleterm/static/teleterm_web_bg.wasm
index 5986a6b..2b2e8f8 100644
--- a/teleterm/static/teleterm_web_bg.wasm
+++ b/teleterm/static/teleterm_web_bg.wasm
Binary files differ