Skip to content

Commit

Permalink
Fix crash when toggling GUIs too quickly
Browse files Browse the repository at this point in the history
  • Loading branch information
Twometer committed Oct 12, 2021
1 parent 2cab3cc commit 263196b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
2 changes: 1 addition & 1 deletion neko-engine/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ plugins {
}

group 'de.twometer'
version '2.3.3'
version '2.3.4'

/* Version configuration */
project.ext.lwjglVersion = "3.2.3"
Expand Down
2 changes: 1 addition & 1 deletion neko-engine/src/main/kotlin/de/twometer/neko/Neko.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ package de.twometer.neko

object Neko {

const val VERSION = "2.3.3"
const val VERSION = "2.3.4"

}
17 changes: 14 additions & 3 deletions neko-engine/src/main/kotlin/de/twometer/neko/gui/GuiManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,17 @@ class GuiManager : UltralightLoadListener {
private lateinit var view: UltralightView
private lateinit var contextProvider: PageContextProvider

private val loadLock = Object()
var finishedLoading: Boolean = false
private set

var page: Page? = null
set(newVal) {
synchronized(loadLock) {
if (!finishedLoading && field != null)
loadLock.wait()
}

field?.onUnloaded()
field = newVal
finishedLoading = false
Expand Down Expand Up @@ -169,21 +175,26 @@ class GuiManager : UltralightLoadListener {
}

override fun onFinishLoading(frameId: Long, isMainFrame: Boolean, url: String?) {
finishedLoading = true

page?.run {
contextProvider.syncWithJavascript {
contextProvider.registerObject(it.context, "_remote", this)
for (global in globalObjects)
contextProvider.registerObject(it.context, global.key, global.value)
this.onLoaded()
runScript("if (typeof OnLoad !== 'undefined') { OnLoad(); }")

synchronized(loadLock) {
finishedLoading = true
loadLock.notifyAll()
}
}
}
}

override fun onBeginLoading(frameId: Long, isMainFrame: Boolean, url: String?) {
finishedLoading = false
synchronized(loadLock) {
finishedLoading = false
}
}

override fun onUpdateHistory() = Unit
Expand Down

0 comments on commit 263196b

Please sign in to comment.