From 03637dd43e2ed2a536bf564c38aa858723b29190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sun, 10 Sep 2017 19:20:05 +0200 Subject: [PATCH] do not redraw in blink timer if blinking is turned off --- jssrc/term_screen.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/jssrc/term_screen.js b/jssrc/term_screen.js index 6ff9ddd..7ade0c8 100644 --- a/jssrc/term_screen.js +++ b/jssrc/term_screen.js @@ -143,7 +143,7 @@ class TermScreen { set (target, key, value, receiver) { target[key] = value self.scheduleSizeUpdate() - self.scheduleDraw() + self.scheduleDraw('proxy') return true } }) @@ -168,20 +168,20 @@ class TermScreen { if (selecting) return selecting = true this.selection.start = this.selection.end = this.screenToGrid(x, y) - this.scheduleDraw() + this.scheduleDraw('ss') } let selectMove = (x, y) => { if (!selecting) return this.selection.end = this.screenToGrid(x, y) - this.scheduleDraw() + this.scheduleDraw('sm') } let selectEnd = (x, y) => { if (!selecting) return selecting = false this.selection.end = this.screenToGrid(x, y) - this.scheduleDraw() + this.scheduleDraw('se') Object.assign(this.selection, this.getNormalizedSelection()) } @@ -274,7 +274,7 @@ class TermScreen { // reset selection this.selection.start = this.selection.end = [0, 0] qs('#touch-select-menu').classList.remove('open') - this.scheduleDraw() + this.scheduleDraw('tap') } else { e.preventDefault() this.emit('open-soft-keyboard') @@ -377,7 +377,7 @@ class TermScreen { set palette (palette) { this._palette = palette - this.scheduleDraw() + this.scheduleDraw('palette') } getColor (i) { @@ -411,9 +411,9 @@ class TermScreen { } // schedule a draw in the next tick - scheduleDraw (aggregateTime = 1) { + scheduleDraw (why, aggregateTime = 1) { clearTimeout(this._scheduledDraw) - this._scheduledDraw = setTimeout(() => this.draw(), aggregateTime) + this._scheduledDraw = setTimeout(() => this.draw(why), aggregateTime) } getFont (modifiers = {}) { @@ -502,7 +502,7 @@ class TermScreen { this.drawnScreenAttrs = [] // draw immediately; the canvas shouldn't flash - this.draw() + this.draw('init') } } @@ -513,7 +513,7 @@ class TermScreen { this.cursor.blinkOn = this.cursor.blinking ? !this.cursor.blinkOn : true - this.scheduleDraw() + if (this.cursor.blinking) this.scheduleDraw('blink') }, 500) } @@ -682,7 +682,7 @@ class TermScreen { return cells.filter(cell => cell >= 0 && cell < screenLength) } - draw () { + draw (why) { const ctx = this.ctx const { width, @@ -704,6 +704,7 @@ class TermScreen { // differentiate static cells from updated cells ctx.fillStyle = 'rgba(255, 0, 255, 0.3)' ctx.fillRect(0, 0, screenWidth, screenHeight) + console.log(`draw: ${why}`) } ctx.font = this.getFont() @@ -1035,7 +1036,7 @@ class TermScreen { } } - this.scheduleDraw(16) + this.scheduleDraw('load', 16) this.emit('load') }