From c5efc4640ffa5d9b9b11a406b914af2d21788075 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 5 Oct 2024 23:27:25 +0100 Subject: [PATCH] return tuple from function 'startBuildTextLineGap' as function to move LineGap, used in 'startBuildTextLineGap' optimises nodes for better performance on subsequent operations --- fcore/buffer.sml | 2 +- shell/shell.sml | 2 +- shf | Bin 1042176 -> 1042176 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fcore/buffer.sml b/fcore/buffer.sml index 3e5469d..96f3bd0 100644 --- a/fcore/buffer.sml +++ b/fcore/buffer.sml @@ -205,6 +205,6 @@ buildTextString ( startIdx, rStrHd, [], 5, 5, 5 * else we can do. *) [] in - Vector.concat acc + (Vector.concat acc, lineGap) end end diff --git a/shell/shell.sml b/shell/shell.sml index 6765d45..2bc1e4e 100644 --- a/shell/shell.sml +++ b/shell/shell.sml @@ -23,7 +23,7 @@ struct val lineGap = ioToLineGap (io, LineGap.empty) val _ = TextIO.closeIn io - val textVec = Buffer.startBuildTextLineGap (0, lineGap, 1920, 1080) + val (textVec, _) = Buffer.startBuildTextLineGap (0, lineGap, 1920, 1080) val shellState = GlDraw.create window val shellState = GlDraw.uploadText (shellState, textVec) diff --git a/shf b/shf index cdb915b56b4c24c8418e8a7bfeb4517adf96d06b..a2f3311ae7bc12d7272722b0d1d8ef1b6bb963e5 100755 GIT binary patch delta 15790 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