From 1ecd2b1e6e9affd6d7c4416ba86fb6355c91a32b Mon Sep 17 00:00:00 2001 From: payonel Date: Mon, 18 May 2020 02:36:58 -0700 Subject: [PATCH 1/2] bitblt fix for same device, and better markDirty code --- src/main/scala/li/cil/oc/common/component/TextBuffer.scala | 4 ++-- src/main/scala/li/cil/oc/server/component/GraphicsCard.scala | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala index 755aa3563..5383ddf53 100644 --- a/src/main/scala/li/cil/oc/common/component/TextBuffer.scala +++ b/src/main/scala/li/cil/oc/common/component/TextBuffer.scala @@ -648,12 +648,12 @@ object TextBuffer { override def onBufferSet(col: Int, row: Int, s: String, vertical: Boolean) { super.onBufferSet(col, row, s, vertical) - dirty = true + markDirty() } override def onBufferBitBlt(col: Int, row: Int, w: Int, h: Int, id: Int, fromCol: Int, fromRow: Int): Unit = { super.onBufferBitBlt(col, row, w, h, id, fromCol, fromRow) - dirty = true + markDirty() } override def onBufferRamInit(id: Int, buffer: TextBufferProxy): Unit = { diff --git a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala index 28f43e5bc..2b0909594 100644 --- a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala +++ b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala @@ -232,7 +232,7 @@ class GraphicsCard(val tier: Int) extends prefab.ManagedEnvironment with DeviceI if (dstIdx == srcIdx) { val tx = col - fromCol val ty = row - fromRow - dst.copy(col, row, w, h, tx, ty) + dst.copy(fromCol - 1, fromRow - 1, w, h, tx, ty) result(true) } else { // at least one of the two buffers is a gpu buffer @@ -454,8 +454,6 @@ class GraphicsCard(val tier: Int) extends prefab.ManagedEnvironment with DeviceI val vertical = args.optBoolean(3, false) screen(s => { - val x2 = if (vertical) x else x + value.length - 1 - val y2 = if (!vertical) y else y + value.length - 1 if (consumeViewportPower(s, context, setCosts(tier), value.length, Settings.get.gpuSetCost)) { s.set(x, y, value, vertical) result(true) From 33170fadbc8426d6c96b433017d92d504f8ea238 Mon Sep 17 00:00:00 2001 From: payonel Date: Mon, 18 May 2020 02:40:59 -0700 Subject: [PATCH 2/2] api rename for get/set buffer, it is now {get/set}ActiveBuffer this breaks previous build, but this is dev stuff, so it's okay :) no release is broken here --- src/main/scala/li/cil/oc/server/component/GraphicsCard.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala index 2b0909594..e9ba824ad 100644 --- a/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala +++ b/src/main/scala/li/cil/oc/server/component/GraphicsCard.scala @@ -105,12 +105,12 @@ class GraphicsCard(val tier: Int) extends prefab.ManagedEnvironment with DeviceI } @Callback(direct = true, doc = """function(): number -- returns the index of the currently selected buffer. 0 is reserved for the screen. Can return 0 even when there is no screen""") - def getBuffer(context: Context, args: Arguments): Array[AnyRef] = { + def getActiveBuffer(context: Context, args: Arguments): Array[AnyRef] = { result(bufferIndex) } @Callback(direct = true, doc = """function(index: number): number -- Sets the active buffer to `index`. 1 is the first vram buffer and 0 is reserved for the screen. returns nil for invalid index (0 is always valid)""") - def setBuffer(context: Context, args: Arguments): Array[AnyRef] = { + def setActiveBuffer(context: Context, args: Arguments): Array[AnyRef] = { val previousIndex: Int = bufferIndex val newIndex: Int = args.checkInteger(0) if (newIndex != RESERVED_SCREEN_INDEX && getBuffer(newIndex).isEmpty) {