From 989c7f34b30198a87948d37e782f48d771336fa1 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 23 Nov 2019 02:44:54 -0500 Subject: remove some flickering --- teleterm-web/src/model.rs | 15 ++++++++++++- teleterm-web/src/views/watch.rs | 6 ++++- teleterm/static/teleterm_web.js | 42 +++++++++++++++++------------------ teleterm/static/teleterm_web_bg.wasm | Bin 700263 -> 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) { 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) { @@ -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> { 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 Binary files a/teleterm/static/teleterm_web_bg.wasm and b/teleterm/static/teleterm_web_bg.wasm differ -- cgit v1.2.3-54-g00ecf