From af6bdc875abe4653e4266bba383882f93efb8d55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Costa?= Date: Sun, 3 Jan 2021 16:56:12 +0000 Subject: [PATCH 1/2] Wrap rendering operations inside a try-catch --- .../scala/eu/joaocosta/minart/backend/HtmlCanvas.scala | 3 ++- .../main/scala/eu/joaocosta/minart/backend/AwtCanvas.scala | 7 ++++--- .../main/scala/eu/joaocosta/minart/backend/SdlCanvas.scala | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala b/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala index 0114bece..8fff5c12 100644 --- a/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala +++ b/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala @@ -90,9 +90,10 @@ class HtmlCanvas(val settings: Canvas.Settings) extends LowLevelCanvas { buffer.data(baseAddr + 2) = c.b } - def putPixel(x: Int, y: Int, color: Color): Unit = + def putPixel(x: Int, y: Int, color: Color): Unit = try { if (settings.scale == 1) putPixelUnscaled(x, y, color) else putPixelScaled(x, y, color) + } catch { case _: Throwable => () } def getBackbufferPixel(x: Int, y: Int): Color = { val baseAddr = 4 * (y * settings.scale * settings.scaledWidth + (x * settings.scale)) diff --git a/core/jvm/src/main/scala/eu/joaocosta/minart/backend/AwtCanvas.scala b/core/jvm/src/main/scala/eu/joaocosta/minart/backend/AwtCanvas.scala index 95af723f..169cad3f 100644 --- a/core/jvm/src/main/scala/eu/joaocosta/minart/backend/AwtCanvas.scala +++ b/core/jvm/src/main/scala/eu/joaocosta/minart/backend/AwtCanvas.scala @@ -61,9 +61,10 @@ class AwtCanvas(val settings: Canvas.Settings) extends LowLevelCanvas { y * settings.scaledWidth + x % settings.scaledWidth, c.argb) - def putPixel(x: Int, y: Int, color: Color): Unit = + def putPixel(x: Int, y: Int, color: Color): Unit = try { if (settings.scale == 1) putPixelUnscaled(x, y, color) else putPixelScaled(x, y, color) + } catch { case _: Throwable => () } def getBackbufferPixel(x: Int, y: Int): Color = { Color.fromRGB(javaCanvas.imagePixels.getElem(y * settings.scale * settings.scaledWidth + (x * settings.scale))) @@ -92,12 +93,12 @@ class AwtCanvas(val settings: Canvas.Settings) extends LowLevelCanvas { } } - def redraw(): Unit = { + def redraw(): Unit = try { val g = javaCanvas.buffStrategy.getDrawGraphics() g.drawImage(javaCanvas.image, 0, 0, settings.scaledWidth, settings.scaledHeight, javaCanvas) g.dispose() javaCanvas.buffStrategy.show() - } + } catch { case _: Throwable => () } def getKeyboardInput(): KeyboardInput = keyListener.getKeyboardInput() def getPointerInput(): PointerInput = mouseListener.getPointerInput() diff --git a/core/native/src/main/scala/eu/joaocosta/minart/backend/SdlCanvas.scala b/core/native/src/main/scala/eu/joaocosta/minart/backend/SdlCanvas.scala index cd341166..cb325f13 100644 --- a/core/native/src/main/scala/eu/joaocosta/minart/backend/SdlCanvas.scala +++ b/core/native/src/main/scala/eu/joaocosta/minart/backend/SdlCanvas.scala @@ -66,9 +66,10 @@ class SdlCanvas(val settings: Canvas.Settings) extends LowLevelCanvas { surface.pixels(baseAddr + 2) = c.r.toByte } - def putPixel(x: Int, y: Int, color: Color): Unit = + def putPixel(x: Int, y: Int, color: Color): Unit = try { if (settings.scale == 1) putPixelUnscaled(x, y, color) else putPixelScaled(x, y, color) + } catch { case _: Throwable => () } def getBackbufferPixel(x: Int, y: Int): Color = { // Assuming a BGRA surface From d71efd93eb6942f874479b228df1d2b92d075ac2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joa=CC=83o=20Costa?= Date: Sun, 3 Jan 2021 16:56:23 +0000 Subject: [PATCH 2/2] Minor style fixes --- .../main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala | 4 ++-- .../src/main/scala/eu/joaocosta/minart/pure/CanvasIO.scala | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala b/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala index 8fff5c12..efe6f9de 100644 --- a/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala +++ b/core/js/src/main/scala/eu/joaocosta/minart/backend/HtmlCanvas.scala @@ -124,10 +124,10 @@ class HtmlCanvas(val settings: Canvas.Settings) extends LowLevelCanvas { } } if (resources.contains(Canvas.Resource.Keyboard)) { - keyboardInput = keyboardInput.clearPressRelease + keyboardInput = keyboardInput.clearPressRelease() } if (resources.contains(Canvas.Resource.Pointer)) { - pointerInput = pointerInput.clearPressRelease + pointerInput = pointerInput.clearPressRelease() } } diff --git a/pure/shared/src/main/scala/eu/joaocosta/minart/pure/CanvasIO.scala b/pure/shared/src/main/scala/eu/joaocosta/minart/pure/CanvasIO.scala index 6b9851bb..5d6e110d 100644 --- a/pure/shared/src/main/scala/eu/joaocosta/minart/pure/CanvasIO.scala +++ b/pure/shared/src/main/scala/eu/joaocosta/minart/pure/CanvasIO.scala @@ -53,7 +53,7 @@ object CanvasIO { * This operation can be perfomance intensive, so it might be worthwile * to implement this operation on the application code. */ - val getBackbuffer: CanvasIO[Vector[Vector[Color]]] = accessCanvas(_.getBackbuffer) + val getBackbuffer: CanvasIO[Vector[Vector[Color]]] = accessCanvas(_.getBackbuffer()) /** Gets the current keyboard input. */ val getKeyboardInput: CanvasIO[KeyboardInput] = accessCanvas(_.getKeyboardInput())