mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-11 07:14:04 +09:00
vastly improved zfm scrolling performance
This commit is contained in:
@@ -108,6 +108,7 @@ function refreshFilePanelCache(side) {
|
|||||||
let filesCount = dirFileList[side].length
|
let filesCount = dirFileList[side].length
|
||||||
|
|
||||||
for (let i = 0; i < filesCount; i++) {
|
for (let i = 0; i < filesCount; i++) {
|
||||||
|
let isDirectory = (i < ds.length)
|
||||||
let file = dirFileList[side][i]
|
let file = dirFileList[side][i]
|
||||||
let sizestr;
|
let sizestr;
|
||||||
if (!showDrives) {
|
if (!showDrives) {
|
||||||
@@ -136,6 +137,7 @@ function refreshFilePanelCache(side) {
|
|||||||
|
|
||||||
filePanelCache[side].push({
|
filePanelCache[side].push({
|
||||||
file: file,
|
file: file,
|
||||||
|
isDirectory: isDirectory,
|
||||||
sizestr: sizestr,
|
sizestr: sizestr,
|
||||||
filename: filename,
|
filename: filename,
|
||||||
fileext: fileext
|
fileext: fileext
|
||||||
@@ -190,6 +192,7 @@ let filesPanelDraw = (wo) => {
|
|||||||
let listObj = filePanelCache[windowMode][i+s]
|
let listObj = filePanelCache[windowMode][i+s]
|
||||||
if (listObj) {
|
if (listObj) {
|
||||||
let file = listObj.file
|
let file = listObj.file
|
||||||
|
let isDirectory = listObj.isDirectory
|
||||||
let sizestr = listObj.sizestr
|
let sizestr = listObj.sizestr
|
||||||
let filename = listObj.filename//(showDrives && file) ? file.fullPath : (file) ? file.name : ''
|
let filename = listObj.filename//(showDrives && file) ? file.fullPath : (file) ? file.name : ''
|
||||||
let fileext = listObj.fileext
|
let fileext = listObj.fileext
|
||||||
@@ -202,7 +205,7 @@ let filesPanelDraw = (wo) => {
|
|||||||
// print filename
|
// print filename
|
||||||
con.color_pair(foreCol, backCol)
|
con.color_pair(foreCol, backCol)
|
||||||
con.move(wo.y + 2+i, wo.x + 1)
|
con.move(wo.y + 2+i, wo.x + 1)
|
||||||
print(((file && file.isDirectory && !showDrives) ? '\\' : ' ') + filename)
|
print(((file && isDirectory && !showDrives) ? '\\' : ' ') + filename)
|
||||||
print(' '.repeat(FILELIST_WIDTH - 2 - filename.length))
|
print(' '.repeat(FILELIST_WIDTH - 2 - filename.length))
|
||||||
|
|
||||||
// print |
|
// print |
|
||||||
@@ -212,7 +215,7 @@ let filesPanelDraw = (wo) => {
|
|||||||
// print filesize
|
// print filesize
|
||||||
con.color_pair(foreCol, backCol)
|
con.color_pair(foreCol, backCol)
|
||||||
con.move(wo.y + 2+i, wo.x + FILELIST_WIDTH + 1)
|
con.move(wo.y + 2+i, wo.x + FILELIST_WIDTH + 1)
|
||||||
if (file && file.isDirectory && !showDrives) {
|
if (file && isDirectory && !showDrives) {
|
||||||
print(' '.repeat(FILESIZE_WIDTH - sizestr.length))
|
print(' '.repeat(FILESIZE_WIDTH - sizestr.length))
|
||||||
print(sizestr); con.prnch(0x7F)
|
print(sizestr); con.prnch(0x7F)
|
||||||
}
|
}
|
||||||
@@ -395,7 +398,8 @@ let filenavOninput = (window, event) => {
|
|||||||
drawFilePanel()
|
drawFilePanel()
|
||||||
}
|
}
|
||||||
else if (keyJustHit && keycode == 66) { // enter
|
else if (keyJustHit && keycode == 66) { // enter
|
||||||
let selectedFile = dirFileList[windowMode][cursor[windowMode]]
|
let selectedFileCache = filePanelCache[windowMode][cursor[windowMode]]
|
||||||
|
let selectedFile = selectedFileCache.file
|
||||||
|
|
||||||
// serial.println(`selectedFile = ${selectedFile.fullPath}`)
|
// serial.println(`selectedFile = ${selectedFile.fullPath}`)
|
||||||
|
|
||||||
@@ -405,15 +409,15 @@ let filenavOninput = (window, event) => {
|
|||||||
refreshFilePanelCache(windowMode)
|
refreshFilePanelCache(windowMode)
|
||||||
drawFilePanel()
|
drawFilePanel()
|
||||||
}
|
}
|
||||||
else if (selectedFile.isDirectory) {
|
else if (selectedFileCache.isDirectory) {
|
||||||
// serial.println(`selectedFile.name = ${selectedFile.name}`)
|
// serial.println(`selectedFile.name = ${selectedFile.name}`)
|
||||||
path[windowMode].push(selectedFile.name)
|
path[windowMode].push(selectedFileCache.filename)
|
||||||
cursor[windowMode] = 0; scroll[windowMode] = 0
|
cursor[windowMode] = 0; scroll[windowMode] = 0
|
||||||
refreshFilePanelCache(windowMode)
|
refreshFilePanelCache(windowMode)
|
||||||
drawFilePanel()
|
drawFilePanel()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let fileext = selectedFile.name.substring(selectedFile.name.lastIndexOf(".") + 1).toLowerCase()
|
let fileext = selectedFileCache.filename.substring(selectedFileCache.filename.lastIndexOf(".") + 1).toLowerCase()
|
||||||
let execfun = EXEC_FUNS[fileext] || ((f) => _G.shell.execute(f))
|
let execfun = EXEC_FUNS[fileext] || ((f) => _G.shell.execute(f))
|
||||||
let errorlevel = 0
|
let errorlevel = 0
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package net.torvald.tsvm.peripheral
|
package net.torvald.tsvm.peripheral
|
||||||
|
|
||||||
|
import net.torvald.tsvm.VM
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
import java.util.concurrent.atomic.AtomicInteger
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
|
||||||
@@ -67,6 +68,7 @@ abstract class BlockTransferInterface(val isMaster: Boolean, val isSlave: Boolea
|
|||||||
blockSize.setRelease(bytesReceived)
|
blockSize.setRelease(bytesReceived)
|
||||||
writeoutImpl(inputData)
|
writeoutImpl(inputData)
|
||||||
|
|
||||||
|
println("Contents: ${inputData.toString(VM.CHARSET)}")
|
||||||
applyBaudRateDelay(bytesReceived)
|
applyBaudRateDelay(bytesReceived)
|
||||||
|
|
||||||
busy.setRelease(false)
|
busy.setRelease(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user