Can setTitle() cause memleak (right before test commit)

This commit is contained in:
minjaesong
2018-11-08 22:42:27 +09:00
parent 84d102a3fb
commit 83bd81853f
5 changed files with 21 additions and 18 deletions

View File

@@ -25,7 +25,7 @@ uniform ivec2 tilesInAtlas = ivec2(256, 256);
uniform ivec2 atlasTexSize = ivec2(4096, 4096); uniform ivec2 atlasTexSize = ivec2(4096, 4096);
ivec2 tileSizeInPx = atlasTexSize / tilesInAtlas; ivec2 tileSizeInPx = atlasTexSize / tilesInAtlas;
uniform vec4 colourFilter = vec4(1, 1, 1, 1); uniform vec4 colourFilter = vec4(1, 1, 1, 1); // used by WALL to darken it
uniform ivec2 cameraTranslation = ivec2(0, 0); uniform ivec2 cameraTranslation = ivec2(0, 0);

View File

@@ -694,7 +694,14 @@ object Terrarum : Screen {
get() = Gdx.input.x get() = Gdx.input.x
inline val mouseScreenY: Int inline val mouseScreenY: Int
get() = Gdx.input.y get() = Gdx.input.y
/** Bigger than 1.0 */
inline val updateRate: Double
get() = 1.0 / Gdx.graphics.deltaTime
val updateRateStr: String
get() = String.format("%.2f", updateRate)
/** Smaller than 1.0 */
val renderRate = 1.0 / TARGET_INTERNAL_FPS
val renderRateStr = TARGET_INTERNAL_FPS.toString()
/** /**
* Usage: * Usage:

View File

@@ -14,7 +14,6 @@ import net.torvald.terrarum.blockproperties.BlockCodex
import net.torvald.terrarum.gameactors.AVKey import net.torvald.terrarum.gameactors.AVKey
import net.torvald.terrarum.gameactors.Actor import net.torvald.terrarum.gameactors.Actor
import net.torvald.terrarum.gameactors.ai.ActorAI import net.torvald.terrarum.gameactors.ai.ActorAI
import net.torvald.terrarum.gameworld.GameWorld
import net.torvald.terrarum.gameworld.fmod import net.torvald.terrarum.gameworld.fmod
import net.torvald.terrarum.langpack.Lang import net.torvald.terrarum.langpack.Lang
import net.torvald.terrarum.modulebasegame.Ingame import net.torvald.terrarum.modulebasegame.Ingame
@@ -191,7 +190,7 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
private val introUncoverTime: Second = 0.3f private val introUncoverTime: Second = 0.3f
private var introUncoverDeltaCounter = 0f private var introUncoverDeltaCounter = 0f
private var updateDeltaCounter = 0.0 private var updateDeltaCounter = 0.0
protected val updateRate = 1.0 / Terrarum.TARGET_INTERNAL_FPS protected val renderRate = Terrarum.renderRate
override fun render(delta: Float) { override fun render(delta: Float) {
if (!loadDone) { if (!loadDone) {
@@ -201,9 +200,9 @@ class TitleScreen(val batch: SpriteBatch) : Screen {
// async update // async update
updateDeltaCounter += delta updateDeltaCounter += delta
var updateTries = 0 var updateTries = 0
while (updateDeltaCounter >= updateRate) { while (updateDeltaCounter >= renderRate) {
updateScreen(delta) updateScreen(delta)
updateDeltaCounter -= updateRate updateDeltaCounter -= renderRate
updateTries++ updateTries++
if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) {

View File

@@ -8,7 +8,6 @@ import net.torvald.dataclass.CircularArray
import net.torvald.terrarum.blockproperties.BlockPropUtil import net.torvald.terrarum.blockproperties.BlockPropUtil
import net.torvald.terrarum.blockstats.BlockStats import net.torvald.terrarum.blockstats.BlockStats
import net.torvald.terrarum.concurrent.ThreadParallel import net.torvald.terrarum.concurrent.ThreadParallel
import net.torvald.terrarum.console.*
import net.torvald.terrarum.gameactors.* import net.torvald.terrarum.gameactors.*
import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver import net.torvald.terrarum.modulebasegame.gameactors.physicssolver.CollisionSolver
import net.torvald.terrarum.gamecontroller.IngameController import net.torvald.terrarum.gamecontroller.IngameController
@@ -28,7 +27,6 @@ import net.torvald.terrarum.AppLoader.printdbg
import net.torvald.terrarum.modulebasegame.console.AVTracker import net.torvald.terrarum.modulebasegame.console.AVTracker
import net.torvald.terrarum.modulebasegame.console.ActorsList import net.torvald.terrarum.modulebasegame.console.ActorsList
import net.torvald.terrarum.console.Authenticator import net.torvald.terrarum.console.Authenticator
import net.torvald.terrarum.console.SetGlobalLightOverride
import net.torvald.terrarum.itemproperties.GameItem import net.torvald.terrarum.itemproperties.GameItem
import net.torvald.terrarum.modulebasegame.gameactors.* import net.torvald.terrarum.modulebasegame.gameactors.*
import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension import net.torvald.terrarum.modulebasegame.gameworld.GameWorldExtension
@@ -81,8 +79,8 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) {
} }
fun getCanonicalTitle() = AppLoader.GAME_NAME + fun getCanonicalTitle() = AppLoader.GAME_NAME +
" — F: ${Gdx.graphics.framesPerSecond} (${Terrarum.TARGET_INTERNAL_FPS})" + " — F: ${Gdx.graphics.framesPerSecond} (Δt${Terrarum.updateRateStr} / RT${Terrarum.renderRateStr})" +
" — M: J${Terrarum.memJavaHeap}M / N${Terrarum.memNativeHeap}M / X${Terrarum.memXmx}M" " — M: J${Terrarum.memJavaHeap}M / N${Terrarum.memNativeHeap}M / X${Terrarum.memXmx}M"
} }
@@ -420,7 +418,7 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) {
} }
protected var updateDeltaCounter = 0.0 protected var updateDeltaCounter = 0.0
protected val updateRate = 1.0 / Terrarum.TARGET_INTERNAL_FPS protected val renderRate = Terrarum.renderRate
private var firstTimeRun = true private var firstTimeRun = true
@@ -430,9 +428,9 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) {
private class ThreadIngameUpdate(val ingame: Ingame): Runnable { private class ThreadIngameUpdate(val ingame: Ingame): Runnable {
override fun run() { override fun run() {
var updateTries = 0 var updateTries = 0
while (ingame.updateDeltaCounter >= ingame.updateRate) { while (ingame.updateDeltaCounter >= ingame.renderRate) {
ingame.updateGame(Terrarum.deltaTime) ingame.updateGame(Terrarum.deltaTime)
ingame.updateDeltaCounter -= ingame.updateRate ingame.updateDeltaCounter -= ingame.renderRate
updateTries++ updateTries++
if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) {
@@ -486,12 +484,12 @@ open class Ingame(batch: SpriteBatch) : IngameInstance(batch) {
} }
else { else {
var updateTries = 0 var updateTries = 0
while (updateDeltaCounter >= updateRate) { while (updateDeltaCounter >= renderRate) {
//updateGame(delta) //updateGame(delta)
Terrarum.debugTimers["Ingame.update"] = measureNanoTime { updateGame(delta) } Terrarum.debugTimers["Ingame.update"] = measureNanoTime { updateGame(delta) }
updateDeltaCounter -= updateRate updateDeltaCounter -= renderRate
updateTries++ updateTries++
if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) { if (updateTries >= Terrarum.UPDATE_CATCHUP_MAX_TRIES) {

View File

@@ -733,9 +733,8 @@ internal object BlocksDrawer {
shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height) shader.setUniformi("tilemapDimension", tilesBuffer.width, tilesBuffer.height)
shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat()) shader.setUniformf("tilesInAxes", tilesInHorizontal.toFloat(), tilesInVertical.toFloat())
shader.setUniformi("cameraTranslation", WorldCamera.x fmod TILE_SIZE, WorldCamera.y fmod TILE_SIZE) shader.setUniformi("cameraTranslation", WorldCamera.x fmod TILE_SIZE, WorldCamera.y fmod TILE_SIZE)
shader.setUniformi("tileSizeInPx", TILE_SIZE) /*shader hard-code*/shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas
shader.setUniformi("tilesInAtlas", tileAtlas.horizontalCount, tileAtlas.verticalCount) //depends on the tile atlas /*shader hard-code*/shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas
shader.setUniformi("atlasTexSize", tileAtlas.texture.width, tileAtlas.texture.height) //depends on the tile atlas
tilesQuad.render(shader, GL20.GL_TRIANGLES) tilesQuad.render(shader, GL20.GL_TRIANGLES)
shader.end() shader.end()