diff --git a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/tiling/TileLoader.java b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/tiling/TileLoader.java index e96826c7..b17f2a6e 100644 --- a/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/tiling/TileLoader.java +++ b/vtm-gdx-html/src/org/oscim/gdx/emu/org/oscim/tiling/TileLoader.java @@ -57,7 +57,7 @@ public abstract class TileLoader { mPausing = false; // FIXME mWorking = false; - if (!mTileManager.jobQueue.isEmpty()) + if (mTileManager.hasTileJobs()) go(); } @@ -76,7 +76,7 @@ public abstract class TileLoader { return; } - MapTile tile = mTileManager.jobQueue.poll(); + MapTile tile = mTileManager.getTileJob(); if (tile == null) return; @@ -96,16 +96,14 @@ public abstract class TileLoader { } public void jobCompleted(MapTile tile, boolean success) { - //if (success) { - if (!isInterrupted) { - // pass tile to main thread - mTileManager.passTile(tile, success); - } - //} + if (isInterrupted) + success = false; + + mTileManager.jobCompleted(tile, success); mWorking = false; - if (!mPausing && !mTileManager.jobQueue.isEmpty()) { + if (!mPausing && mTileManager.hasTileJobs()) { Gdx.app.postRunnable(new Runnable() { diff --git a/vtm/src/org/oscim/tiling/TileLoader.java b/vtm/src/org/oscim/tiling/TileLoader.java index 5797c182..059cb98a 100644 --- a/vtm/src/org/oscim/tiling/TileLoader.java +++ b/vtm/src/org/oscim/tiling/TileLoader.java @@ -40,7 +40,7 @@ public abstract class TileLoader extends PausableThread { @Override protected void doWork() { - MapTile tile = mTileManager.jobQueue.poll(); + MapTile tile = mTileManager.getTileJob(); if (tile == null) return; @@ -54,9 +54,10 @@ public abstract class TileLoader extends PausableThread { return; } - if (!isInterrupted()) { - mTileManager.passTile(tile, success); - } + if (isInterrupted()) + success = false; + + mTileManager.jobCompleted(tile, success); } public void jobCompleted(MapTile tile, boolean success) { @@ -75,6 +76,6 @@ public abstract class TileLoader extends PausableThread { @Override protected boolean hasWork() { - return !mTileManager.jobQueue.isEmpty(); + return mTileManager.hasTileJobs(); } } diff --git a/vtm/src/org/oscim/tiling/TileManager.java b/vtm/src/org/oscim/tiling/TileManager.java index 07dbf388..14111433 100644 --- a/vtm/src/org/oscim/tiling/TileManager.java +++ b/vtm/src/org/oscim/tiling/TileManager.java @@ -81,7 +81,7 @@ public class TileManager { /* package */TileSet mNewTiles; // job queue filled in TileManager and polled by TileLoaders - final JobQueue jobQueue; + private final JobQueue jobQueue; private final QuadTreeIndex mIndex = new QuadTreeIndex() { @@ -294,6 +294,14 @@ public class TileManager { jobQueue.clear(); } + public boolean hasTileJobs() { + return !jobQueue.isEmpty(); + } + + public MapTile getTileJob() { + return jobQueue.poll(); + } + /** * Retrive a TileSet of current tiles. Tiles remain locked in cache until * the set is unlocked by either passing it again to this function or to @@ -537,7 +545,7 @@ public class TileManager { * Tile ready for upload in TileRenderLayer * @return caller does not care */ - public void passTile(MapTile tile, boolean success) { + public void jobCompleted(MapTile tile, boolean success) { if (!success) { tile.clear(); @@ -547,7 +555,7 @@ public class TileManager { tile.state = STATE_NEW_DATA; // is volatile - mTilesForUpload++; + mTilesForUpload += 1; // locked means the tile is visible or referenced by // a tile that might be visible.