Commit f87ddd71 authored by Igor Demin's avatar Igor Demin

Fix crash on dispose window (macOs)

parent ce06319c
...@@ -13,9 +13,12 @@ internal class MacOsRedrawer( ...@@ -13,9 +13,12 @@ internal class MacOsRedrawer(
private val layer: HardwareLayer private val layer: HardwareLayer
) : Redrawer { ) : Redrawer {
private val containerLayerPtr = initContainer(layer) private val containerLayerPtr = initContainer(layer)
private val drawLock = Any()
private val drawLayer = object : AWTGLLayer(containerLayerPtr, setNeedsDisplayOnBoundsChange = true) { private val drawLayer = object : AWTGLLayer(containerLayerPtr, setNeedsDisplayOnBoundsChange = true) {
override fun draw() = layer.draw() override fun draw() = synchronized(drawLock) {
layer.draw()
}
} }
// use a separate layer for vsync, because with single layer we cannot asynchronously update layer // use a separate layer for vsync, because with single layer we cannot asynchronously update layer
...@@ -73,7 +76,7 @@ internal class MacOsRedrawer( ...@@ -73,7 +76,7 @@ internal class MacOsRedrawer(
vsyncLayer.sync() vsyncLayer.sync()
} }
override fun dispose() { override fun dispose() = synchronized(drawLock) {
frameDispatcher.cancel() frameDispatcher.cancel()
vsyncLayer.dispose() vsyncLayer.dispose()
drawLayer.dispose() drawLayer.dispose()
......
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