Commit 989076e7 authored by Igor Demin's avatar Igor Demin

Add assert messages

parent ec28b0d0
......@@ -4,7 +4,7 @@ import java.awt.Canvas
import java.awt.Component
private val awt = getAWT().also {
check(it != 0L)
check(it != 0L) { "Can't get AWT" }
}
internal fun <T> Canvas.useDrawingSurfacePlatformInfo(
......@@ -28,11 +28,11 @@ internal class DrawingSurface(
) : AutoCloseable {
var ptr =
getDrawingSurface(awt, component).also {
check(it != 0L)
check(it != 0L) { "Can't get DrawingSurface" }
}
private set
fun lock() = lockDrawingSurface(ptr).also { check(it == 0) }
fun lock() = lockDrawingSurface(ptr).also { check(it == 0) { "Can't lock DrawingSurface" } }
fun unlock() = unlockDrawingSurface(ptr)
......@@ -58,7 +58,7 @@ internal class DrawingSurfaceInfo(
) : AutoCloseable {
var ptr =
getDrawingSurfaceInfo(drawingSurface).also {
check(it != 0L)
check(it != 0L) { "Can't get DrawingSurfaceInfo" }
}
private set
......
......@@ -155,8 +155,8 @@ open class SkiaLayer(
}
open fun dispose() {
check(!isDisposed)
check(isEventDispatchThread())
check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(!isDisposed) { "SkiaLayer is disposed" }
if (isInited) {
redrawer?.dispose() // we should dispose redrawer first (to cancel `draw` in rendering thread)
......@@ -276,8 +276,8 @@ open class SkiaLayer(
* Redraw on the next animation Frame (on vsync signal if vsync is enabled).
*/
fun needRedraw() {
check(!isDisposed)
check(isEventDispatchThread())
check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(!isDisposed) { "SkiaLayer is disposed" }
redrawer?.needRedraw()
}
......@@ -289,7 +289,7 @@ open class SkiaLayer(
*/
suspend fun awaitRedraw(): Boolean {
return withContext(Dispatchers.Swing) {
check(!isDisposed)
check(!isDisposed) { "SkiaLayer is disposed" }
onInit.await()
redrawer?.awaitRedraw() != false
}
......@@ -299,8 +299,8 @@ open class SkiaLayer(
private val fpsCounter = defaultFPSCounter(this)
internal fun update(nanoTime: Long) {
check(!isDisposed)
check(isEventDispatchThread())
check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(!isDisposed) { "SkiaLayer is disposed" }
fpsCounter?.tick()
......@@ -333,7 +333,7 @@ open class SkiaLayer(
}
internal fun prepareDrawContext(): Boolean {
check(!isDisposed)
check(!isDisposed) { "SkiaLayer is disposed" }
contextHandler?.apply {
if (!initContext()) {
findNextWorkingRenderApi(true)
......@@ -345,7 +345,7 @@ open class SkiaLayer(
}
internal fun draw() {
check(!isDisposed)
check(!isDisposed) { "SkiaLayer is disposed" }
contextHandler?.apply {
clearCanvas()
synchronized(pictureLock) {
......
......@@ -28,7 +28,7 @@ internal class AngleRedrawer(
}
override fun needRedraw() {
check(!isDisposed)
check(!isDisposed) { "AngleRedrawer is disposed" }
frameDispatcher.scheduleFrame()
}
......@@ -37,7 +37,7 @@ internal class AngleRedrawer(
}
override fun redrawImmediately() {
check(!isDisposed)
check(!isDisposed) { "AngleRedrawer is disposed" }
update(System.nanoTime())
draw()
}
......
......@@ -29,7 +29,7 @@ internal class Direct3DRedrawer(
}
override fun needRedraw() {
check(!isDisposed)
check(!isDisposed) { "Direct3DRedrawer is disposed" }
frameDispatcher.scheduleFrame()
}
......@@ -38,7 +38,7 @@ internal class Direct3DRedrawer(
}
override fun redrawImmediately() {
check(!isDisposed)
check(!isDisposed) { "Direct3DRedrawer is disposed" }
// TODO now we wait until previous layer.draw is finished. it ends only on the next vsync.
// because of that we lose one frame on resize and can theoretically see very small white bars on the sides of the window
// to avoid this we should be able to draw in two modes: with vsync and without.
......
......@@ -27,7 +27,7 @@ internal class LinuxOpenGLRedrawer(
private var isDisposed = false
override fun dispose() {
check(!isDisposed)
check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
layer.backedLayer.lockDrawingSurface {
it.destroyContext(context)
}
......@@ -35,7 +35,7 @@ internal class LinuxOpenGLRedrawer(
}
override fun needRedraw() {
check(!isDisposed)
check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
toRedraw.add(this)
frameDispatcher.scheduleFrame()
}
......@@ -45,7 +45,7 @@ internal class LinuxOpenGLRedrawer(
}
override fun redrawImmediately() = layer.backedLayer.lockDrawingSurface {
check(!isDisposed)
check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
update(System.nanoTime())
it.makeCurrent(context)
draw()
......
......@@ -39,7 +39,7 @@ internal class MetalRedrawer(
}
override fun needRedraw() {
check(!isDisposed)
check(!isDisposed) { "MetalRedrawer is disposed" }
frameDispatcher.scheduleFrame()
}
......@@ -48,7 +48,7 @@ internal class MetalRedrawer(
}
override fun redrawImmediately() {
check(!isDisposed)
check(!isDisposed) { "MetalRedrawer is disposed" }
// TODO: now we wait until previous `layer.draw` is finished. it ends only on the next vsync.
// Because of that we lose one frame on resize and can theoretically see very small white bars on the sides
// of the window to avoid this we should be able to draw in two modes: with vsync and without.
......
......@@ -34,13 +34,13 @@ internal class WindowsOpenGLRedrawer(
}
override fun dispose() {
check(!isDisposed)
check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
deleteContext(context)
isDisposed = true
}
override fun needRedraw() {
check(!isDisposed)
check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
toRedraw.add(this)
frameDispatcher.scheduleFrame()
}
......@@ -50,7 +50,7 @@ internal class WindowsOpenGLRedrawer(
}
override fun redrawImmediately() {
check(!isDisposed)
check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
update(System.nanoTime())
makeCurrent()
draw()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment