diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/LoadDelayTask.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/LoadDelayTask.java index 64e36d23..e6df4507 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/LoadDelayTask.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/LoadDelayTask.java @@ -1,10 +1,20 @@ package org.oscim.layers.tile; import org.oscim.renderer.MapRenderer; +import org.oscim.tiling.ITileDataSink; import com.badlogic.gdx.Gdx; -public abstract class LoadDelayTask implements Runnable { +public abstract class LoadDelayTask implements Runnable { + protected final MapTile tile; + protected final ITileDataSink sink; + protected final T data; + + public LoadDelayTask(MapTile tile, ITileDataSink sink, T data) { + this.tile = tile; + this.sink = sink; + this.data = data; + } @Override public void run() { diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/TileLoader.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/TileLoader.java index a085b864..76deb326 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/TileLoader.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/layers/tile/TileLoader.java @@ -113,7 +113,7 @@ public abstract class TileLoader implements ITileDataSink { boolean success = (result == SUCCESS) && !isInterrupted; long now = MapRenderer.frametime; - log.debug("completed {} diff time:{}", mTile, (now - lastLoadTime)); + //log.debug("completed {} diff time:{}", mTile, (now - lastLoadTime)); lastLoadTime = now; mTileManager.jobCompleted(mTile, success); @@ -148,7 +148,7 @@ public abstract class TileLoader implements ITileDataSink { } - public static void postLoadDelay(LoadDelayTask task) { + public static void postLoadDelay(LoadDelayTask task) { Gdx.app.postRunnable(task); } diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/UrlTileDataSource.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/UrlTileDataSource.java index 0af7a4e4..f9afeb80 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/UrlTileDataSource.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/UrlTileDataSource.java @@ -20,6 +20,7 @@ import static org.oscim.tiling.ITileDataSink.QueryResult.SUCCESS; import java.io.IOException; import java.io.InputStream; +import org.oscim.layers.tile.LoadDelayTask; import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.TileLoader; import org.oscim.tiling.ITileDataSink; @@ -61,30 +62,32 @@ public class UrlTileDataSource implements ITileDataSource { } public void process(final InputStream is) { - TileLoader.postLoadDelay(new org.oscim.layers.tile.LoadDelayTask() { + TileLoader.postLoadDelay(new LoadDelayTask(mTile, mSink, is) { @Override public void continueLoading() { - if (!mTile.state(MapTile.State.LOADING)) { - mConn.requestCompleted(); - mSink.completed(FAILED); - mTile = null; - mSink = null; - } - boolean win = false; - if (is != null) { - try { - win = mTileDecoder.decode(mTile, mSink, is); - } catch (IOException e) { - e.printStackTrace(); + + if (tile.state(MapTile.State.LOADING)) { + boolean win = false; + if (is != null) { + try { + win = mTileDecoder.decode(tile, sink, data); + } catch (IOException e) { + e.printStackTrace(); + } } + if (!win) + log.debug("{} failed", tile); + + // FIXME + mConn.requestCompleted(); + + sink.completed(win ? SUCCESS : FAILED); + } else { + // FIXME + mConn.requestCompleted(); + sink.completed(FAILED); } - if (!win) - log.debug("{} failed", mTile); - - mConn.requestCompleted(); - - mSink.completed(win ? SUCCESS : FAILED); mTile = null; mSink = null; diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java index f7d0f7e5..87801f57 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java @@ -1,12 +1,11 @@ package org.oscim.tiling.source.bitmap; -import static org.oscim.tiling.ITileDataSink.QueryResult.FAILED; -import static org.oscim.tiling.ITileDataSink.QueryResult.SUCCESS; - import org.oscim.gdx.client.GwtBitmap; +import org.oscim.layers.tile.LoadDelayTask; import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.TileLoader; import org.oscim.tiling.ITileDataSink; +import org.oscim.tiling.ITileDataSink.QueryResult; import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.source.LwHttp; import org.oscim.tiling.source.UrlTileSource; @@ -76,16 +75,16 @@ public class BitmapTileSource extends UrlTileSource { img.addLoadHandler(new LoadHandler() { public void onLoad(LoadEvent event) { - TileLoader.postLoadDelay(new org.oscim.layers.tile.LoadDelayTask() { + TileLoader.postLoadDelay(new LoadDelayTask(tile, sink, img) { @Override public void continueLoading() { if (!tile.state(MapTile.State.LOADING)) { - sink.completed(FAILED); - RootPanel.get().remove(img); + sink.completed(QueryResult.FAILED); + RootPanel.get().remove(data); } else { - sink.setTileImage(new GwtBitmap(img)); - sink.completed(SUCCESS); + sink.setTileImage(new GwtBitmap(data)); + sink.completed(QueryResult.SUCCESS); } } }); @@ -96,7 +95,7 @@ public class BitmapTileSource extends UrlTileSource { @Override public void onError(ErrorEvent event) { - sink.completed(FAILED); + sink.completed(QueryResult.FAILED); RootPanel.get().remove(img); } });