Unverified Commit c8bdf96a authored by Roman Sedaikin's avatar Roman Sedaikin Committed by GitHub

Fixed crash when [redrawImmediately] invoked while fallback proccess. (#447)

parent 2021a5a8
......@@ -71,14 +71,16 @@ internal class LinuxOpenGLRedrawer(
override fun redrawImmediately() = layer.backedLayer.lockLinuxDrawingSurface {
check(!isDisposed) { "LinuxOpenGLRedrawer is disposed" }
layer.inDrawScope {
update(System.nanoTime())
it.makeCurrent(context)
draw()
contextHandler.draw()
it.setSwapInterval(0)
it.swapBuffers()
OpenGLApi.instance.glFinish()
it.setSwapInterval(swapInterval)
}
}
private fun update(nanoTime: Long) {
layer.update(nanoTime)
......
......@@ -55,11 +55,13 @@ internal class MetalRedrawer(
override fun redrawImmediately() {
check(!isDisposed) { "MetalRedrawer is disposed" }
layer.inDrawScope {
setVSyncEnabled(device, enabled = false)
update(System.nanoTime())
layer.inDrawScope(::performDraw)
performDraw()
setVSyncEnabled(device, properties.isVsyncEnabled)
}
}
private fun update(nanoTime: Long) {
layer.update(nanoTime)
......
......@@ -51,12 +51,14 @@ internal class WindowsOpenGLRedrawer(
override fun redrawImmediately() {
check(!isDisposed) { "WindowsOpenGLRedrawer is disposed" }
layer.inDrawScope {
update(System.nanoTime())
makeCurrent()
draw()
contextHandler.draw()
swapBuffers()
OpenGLApi.instance.glFinish()
}
}
private fun update(nanoTime: Long) {
layer.update(nanoTime)
......
......@@ -46,8 +46,8 @@ internal class Direct3DRedrawer(
override fun redrawImmediately() {
check(!isDisposed) { "Direct3DRedrawer is disposed" }
layer.update(System.nanoTime())
layer.inDrawScope {
layer.update(System.nanoTime())
drawAndSwap(withVsync = false)
}
}
......
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