diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java index 859e1046..4802d332 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java @@ -19,6 +19,7 @@ import com.github.xpenatan.gdx.backends.teavm.dom.EventListenerWrapper; import com.github.xpenatan.gdx.backends.teavm.dom.EventWrapper; import com.github.xpenatan.gdx.backends.teavm.dom.impl.TeaWindow; +import com.github.xpenatan.gdx.backends.teavm.filesystem.FileDB; import com.github.xpenatan.gdx.backends.teavm.preloader.AssetDownloadImpl; import com.github.xpenatan.gdx.backends.teavm.preloader.AssetDownloader; import com.github.xpenatan.gdx.backends.teavm.preloader.AssetDownloader.AssetDownload; @@ -37,6 +38,8 @@ public class TeaApplication implements Application, Runnable { private static TeaAgentInfo agentInfo; + public int delayInitCount; + public static TeaAgentInfo getAgentInfo() { return agentInfo; } @@ -56,7 +59,7 @@ public static TeaApplication get() { private final Array lifecycleListeners = new Array(4); private TeaWindow window; - private AppState initState = AppState.LOAD_ASSETS; + private AppState initState = AppState.INIT; private int lastWidth = -1; private int lastHeight = 1; @@ -162,8 +165,6 @@ public void handleEvent(EventWrapper evt) { } }); - window.requestAnimationFrame(this); - if(config.isAutoSizeApplication()) { window.addEventListener("resize", new EventListenerWrapper() { @Override @@ -188,6 +189,10 @@ public void handleEvent(EventWrapper evt) { } }); } + + // Init database + FileDB.getInstance(); + window.requestAnimationFrame(this); } @Override @@ -195,6 +200,10 @@ public void run() { AppState state = initState; try { switch(state) { + case INIT: + if(delayInitCount == 0) { + initState = AppState.LOAD_ASSETS; + } case LOAD_ASSETS: int queue = AssetDownloader.getInstance().getQueue(); if(queue == 0) { @@ -448,6 +457,7 @@ public static boolean isMobileDevice () { } public enum AppState { + INIT, LOAD_ASSETS, APP_CREATE, APP_LOOP diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/IndexedDBStorage.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/IndexedDBStorage.java index 4d337861..cfe5088f 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/IndexedDBStorage.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/IndexedDBStorage.java @@ -1,5 +1,7 @@ package com.github.xpenatan.gdx.backends.teavm.filesystem; +import com.badlogic.gdx.Gdx; +import com.github.xpenatan.gdx.backends.teavm.TeaApplication; import com.github.xpenatan.gdx.backends.teavm.TeaFileHandle; import java.io.InputStream; import org.teavm.jso.indexeddb.IDBDatabase; @@ -8,65 +10,75 @@ public class IndexedDBStorage extends FileDB { - private IDBDatabase result = null; + private IDBDatabase dataBase = null; public IndexedDBStorage() { - + TeaApplication teaApplication = (TeaApplication)Gdx.app; + teaApplication.delayInitCount++; IDBFactory instance = IDBFactory.getInstance(); - IDBOpenDBRequest request = instance.open("TeaVM", 1); request.setOnSuccess(() -> { - result = request.getResult(); + dataBase = request.getResult(); System.out.println("SUCCESS"); + teaApplication.delayInitCount--; }); request.setOnError(() -> { System.out.println("ERROR"); + teaApplication.delayInitCount--; }); } @Override public InputStream read(TeaFileHandle file) { + + System.out.println("1111"); return null; } @Override protected void writeInternal(TeaFileHandle file, byte[] data, boolean append, int expectedLength) { - + System.out.println("2222"); } @Override protected String[] paths(TeaFileHandle file) { + + System.out.println("3333"); return new String[0]; } @Override public boolean isDirectory(TeaFileHandle file) { + System.out.println("4444"); return false; } @Override public void mkdirs(TeaFileHandle file) { - + System.out.println("5555"); } @Override public boolean exists(TeaFileHandle file) { + System.out.println("6666"); return false; } @Override public boolean delete(TeaFileHandle file) { + System.out.println("7777"); return false; } @Override public long length(TeaFileHandle file) { + System.out.println("8888"); return 0; } @Override public void rename(TeaFileHandle source, TeaFileHandle target) { - + System.out.println("9999"); } }