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

Add assert messages

parent ec28b0d0
...@@ -4,7 +4,7 @@ import java.awt.Canvas ...@@ -4,7 +4,7 @@ import java.awt.Canvas
import java.awt.Component import java.awt.Component
private val awt = getAWT().also { private val awt = getAWT().also {
check(it != 0L) check(it != 0L) { "Can't get AWT" }
} }
internal fun <T> Canvas.useDrawingSurfacePlatformInfo( internal fun <T> Canvas.useDrawingSurfacePlatformInfo(
...@@ -28,11 +28,11 @@ internal class DrawingSurface( ...@@ -28,11 +28,11 @@ internal class DrawingSurface(
) : AutoCloseable { ) : AutoCloseable {
var ptr = var ptr =
getDrawingSurface(awt, component).also { getDrawingSurface(awt, component).also {
check(it != 0L) check(it != 0L) { "Can't get DrawingSurface" }
} }
private set 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) fun unlock() = unlockDrawingSurface(ptr)
...@@ -58,7 +58,7 @@ internal class DrawingSurfaceInfo( ...@@ -58,7 +58,7 @@ internal class DrawingSurfaceInfo(
) : AutoCloseable { ) : AutoCloseable {
var ptr = var ptr =
getDrawingSurfaceInfo(drawingSurface).also { getDrawingSurfaceInfo(drawingSurface).also {
check(it != 0L) check(it != 0L) { "Can't get DrawingSurfaceInfo" }
} }
private set private set
......
...@@ -155,8 +155,8 @@ open class SkiaLayer( ...@@ -155,8 +155,8 @@ open class SkiaLayer(
} }
open fun dispose() { open fun dispose() {
check(!isDisposed) check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(isEventDispatchThread()) check(!isDisposed) { "SkiaLayer is disposed" }
if (isInited) { if (isInited) {
redrawer?.dispose() // we should dispose redrawer first (to cancel `draw` in rendering thread) redrawer?.dispose() // we should dispose redrawer first (to cancel `draw` in rendering thread)
...@@ -276,8 +276,8 @@ open class SkiaLayer( ...@@ -276,8 +276,8 @@ open class SkiaLayer(
* Redraw on the next animation Frame (on vsync signal if vsync is enabled). * Redraw on the next animation Frame (on vsync signal if vsync is enabled).
*/ */
fun needRedraw() { fun needRedraw() {
check(!isDisposed) check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(isEventDispatchThread()) check(!isDisposed) { "SkiaLayer is disposed" }
redrawer?.needRedraw() redrawer?.needRedraw()
} }
...@@ -289,7 +289,7 @@ open class SkiaLayer( ...@@ -289,7 +289,7 @@ open class SkiaLayer(
*/ */
suspend fun awaitRedraw(): Boolean { suspend fun awaitRedraw(): Boolean {
return withContext(Dispatchers.Swing) { return withContext(Dispatchers.Swing) {
check(!isDisposed) check(!isDisposed) { "SkiaLayer is disposed" }
onInit.await() onInit.await()
redrawer?.awaitRedraw() != false redrawer?.awaitRedraw() != false
} }
...@@ -299,8 +299,8 @@ open class SkiaLayer( ...@@ -299,8 +299,8 @@ open class SkiaLayer(
private val fpsCounter = defaultFPSCounter(this) private val fpsCounter = defaultFPSCounter(this)
internal fun update(nanoTime: Long) { internal fun update(nanoTime: Long) {
check(!isDisposed) check(isEventDispatchThread()) { "Method should be called from AWT event dispatch thread" }
check(isEventDispatchThread()) check(!isDisposed) { "SkiaLayer is disposed" }
fpsCounter?.tick() fpsCounter?.tick()
...@@ -333,7 +333,7 @@ open class SkiaLayer( ...@@ -333,7 +333,7 @@ open class SkiaLayer(
} }
internal fun prepareDrawContext(): Boolean { internal fun prepareDrawContext(): Boolean {
check(!isDisposed) check(!isDisposed) { "SkiaLayer is disposed" }
contextHandler?.apply { contextHandler?.apply {
if (!initContext()) { if (!initContext()) {
findNextWorkingRenderApi(true) findNextWorkingRenderApi(true)
...@@ -345,7 +345,7 @@ open class SkiaLayer( ...@@ -345,7 +345,7 @@ open class SkiaLayer(
} }
internal fun draw() { internal fun draw() {
check(!isDisposed) check(!isDisposed) { "SkiaLayer is disposed" }
contextHandler?.apply { contextHandler?.apply {
clearCanvas() clearCanvas()
synchronized(pictureLock) { synchronized(pictureLock) {
......
...@@ -28,7 +28,7 @@ internal class AngleRedrawer( ...@@ -28,7 +28,7 @@ internal class AngleRedrawer(
} }
override fun needRedraw() { override fun needRedraw() {
check(!isDisposed) check(!isDisposed) { "AngleRedrawer is disposed" }
frameDispatcher.scheduleFrame() frameDispatcher.scheduleFrame()
} }
...@@ -37,7 +37,7 @@ internal class AngleRedrawer( ...@@ -37,7 +37,7 @@ internal class AngleRedrawer(
} }
override fun redrawImmediately() { override fun redrawImmediately() {
check(!isDisposed) check(!isDisposed) { "AngleRedrawer is disposed" }
update(System.nanoTime()) update(System.nanoTime())
draw() draw()
} }
......
...@@ -29,7 +29,7 @@ internal class Direct3DRedrawer( ...@@ -29,7 +29,7 @@ internal class Direct3DRedrawer(
} }
override fun needRedraw() { override fun needRedraw() {
check(!isDisposed) check(!isDisposed) { "Direct3DRedrawer is disposed" }
frameDispatcher.scheduleFrame() frameDispatcher.scheduleFrame()
} }
...@@ -38,7 +38,7 @@ internal class Direct3DRedrawer( ...@@ -38,7 +38,7 @@ internal class Direct3DRedrawer(
} }
override fun redrawImmediately() { 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. // 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 // 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. // to avoid this we should be able to draw in two modes: with vsync and without.
......
...@@ -27,7 +27,7 @@ internal class LinuxOpenGLRedrawer( ...@@ -27,7 +27,7 @@ internal class LinuxOpenGLRedrawer(
private var isDisposed = false private var isDisposed = false
override fun dispose() { override fun dispose() {
check(!isDisposed) check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
layer.backedLayer.lockDrawingSurface { layer.backedLayer.lockDrawingSurface {
it.destroyContext(context) it.destroyContext(context)
} }
...@@ -35,7 +35,7 @@ internal class LinuxOpenGLRedrawer( ...@@ -35,7 +35,7 @@ internal class LinuxOpenGLRedrawer(
} }
override fun needRedraw() { override fun needRedraw() {
check(!isDisposed) check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
toRedraw.add(this) toRedraw.add(this)
frameDispatcher.scheduleFrame() frameDispatcher.scheduleFrame()
} }
...@@ -45,7 +45,7 @@ internal class LinuxOpenGLRedrawer( ...@@ -45,7 +45,7 @@ internal class LinuxOpenGLRedrawer(
} }
override fun redrawImmediately() = layer.backedLayer.lockDrawingSurface { override fun redrawImmediately() = layer.backedLayer.lockDrawingSurface {
check(!isDisposed) check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
update(System.nanoTime()) update(System.nanoTime())
it.makeCurrent(context) it.makeCurrent(context)
draw() draw()
......
...@@ -39,7 +39,7 @@ internal class MetalRedrawer( ...@@ -39,7 +39,7 @@ internal class MetalRedrawer(
} }
override fun needRedraw() { override fun needRedraw() {
check(!isDisposed) check(!isDisposed) { "MetalRedrawer is disposed" }
frameDispatcher.scheduleFrame() frameDispatcher.scheduleFrame()
} }
...@@ -48,7 +48,7 @@ internal class MetalRedrawer( ...@@ -48,7 +48,7 @@ internal class MetalRedrawer(
} }
override fun redrawImmediately() { 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. // 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 // 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. // 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( ...@@ -34,13 +34,13 @@ internal class WindowsOpenGLRedrawer(
} }
override fun dispose() { override fun dispose() {
check(!isDisposed) check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
deleteContext(context) deleteContext(context)
isDisposed = true isDisposed = true
} }
override fun needRedraw() { override fun needRedraw() {
check(!isDisposed) check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
toRedraw.add(this) toRedraw.add(this)
frameDispatcher.scheduleFrame() frameDispatcher.scheduleFrame()
} }
...@@ -50,7 +50,7 @@ internal class WindowsOpenGLRedrawer( ...@@ -50,7 +50,7 @@ internal class WindowsOpenGLRedrawer(
} }
override fun redrawImmediately() { override fun redrawImmediately() {
check(!isDisposed) check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
update(System.nanoTime()) update(System.nanoTime())
makeCurrent() makeCurrent()
draw() 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