From 5ad631f1ea8400755e7847da88ea9604cae2896a Mon Sep 17 00:00:00 2001
From: Hannes Janetzek <hannes.janetzek@gmail.com>
Date: Fri, 21 Mar 2014 01:50:21 +0100
Subject: [PATCH] skip rendering TileSet when zoom-level is not renderable

---
 vtm/src/org/oscim/layers/tile/TileManager.java  | 11 ++++++++++-
 vtm/src/org/oscim/layers/tile/TileRenderer.java |  5 +++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/vtm/src/org/oscim/layers/tile/TileManager.java b/vtm/src/org/oscim/layers/tile/TileManager.java
index c5e833b0..d6036fe3 100644
--- a/vtm/src/org/oscim/layers/tile/TileManager.java
+++ b/vtm/src/org/oscim/layers/tile/TileManager.java
@@ -196,6 +196,15 @@ public class TileManager {
 		 * jobs come in. */
 		jobQueue.clear();
 
+		if (pos.zoomLevel < mMinZoom) {
+			if (mCurrentTiles.cnt > 0 && pos.zoomLevel < mMinZoom - 4) {
+				synchronized (mTilelock) {
+					mCurrentTiles.releaseTiles();
+				}
+			}
+			return false;
+		}
+
 		int tileZoom = FastMath.clamp(pos.zoomLevel, mMinZoom, mMaxZoom);
 
 		if (mZoomTable != null) {
@@ -349,7 +358,7 @@ public class TileManager {
 			mJobs.add(tile);
 		}
 
-		if ((zoomLevel > 2) && (mZoomTable == null)) {
+		if ((zoomLevel > mMinZoom) && (mZoomTable == null)) {
 			/* prefetch parent */
 			MapTile p = tile.node.parent.item;
 			if (p == null) {
diff --git a/vtm/src/org/oscim/layers/tile/TileRenderer.java b/vtm/src/org/oscim/layers/tile/TileRenderer.java
index defb2634..8ac03a5f 100644
--- a/vtm/src/org/oscim/layers/tile/TileRenderer.java
+++ b/vtm/src/org/oscim/layers/tile/TileRenderer.java
@@ -226,6 +226,10 @@ public abstract class TileRenderer extends LayerRenderer {
 			for (int i = 0; i < mDrawTiles.cnt; i++)
 				tiles[i].isVisible = false;
 
+			if (tileZoom > pos.zoomLevel + 2 || tileZoom < pos.zoomLevel - 4) {
+				//log.debug("skip: zoomlevel diff " + (tileZoom - pos.zoomLevel));
+				return;
+			}
 			/* count placeholder tiles */
 			mProxyTileCnt = 0;
 
@@ -287,6 +291,7 @@ public abstract class TileRenderer extends LayerRenderer {
 	private final ScanBox mScanBox = new ScanBox() {
 		@Override
 		protected void setVisible(int y, int x1, int x2) {
+
 			MapTile[] tiles = mDrawTiles.tiles;
 			int cnt = mDrawTiles.cnt;