From 0b880e0f0c40404edf46bcf7dc163bd54999b141 Mon Sep 17 00:00:00 2001
From: Hannes Janetzek <hannes.janetzek@gmail.com>
Date: Sat, 26 Oct 2013 22:53:21 +0200
Subject: [PATCH] fix: clear labels should not always trigger relabeling

---
 .../tile/vector/labeling/LabelLayer.java      |  3 +++
 .../tile/vector/labeling/TextRenderer.java    | 20 ++++++++-----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java
index 2056123e..cd153dca 100644
--- a/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java
+++ b/vtm/src/org/oscim/layers/tile/vector/labeling/LabelLayer.java
@@ -45,6 +45,9 @@ public class LabelLayer extends Layer implements EventListener, Map.UpdateListen
 		mMap.removeListener(MotionEvent.TYPE, this);
 
 		// TODO stop and clear labeling thread
+		log.debug("DETACH");
+		mTextRenderer.clearLabels();
+
 		super.onDetach();
 	}
 
diff --git a/vtm/src/org/oscim/layers/tile/vector/labeling/TextRenderer.java b/vtm/src/org/oscim/layers/tile/vector/labeling/TextRenderer.java
index 6fb092f3..6845c367 100644
--- a/vtm/src/org/oscim/layers/tile/vector/labeling/TextRenderer.java
+++ b/vtm/src/org/oscim/layers/tile/vector/labeling/TextRenderer.java
@@ -627,7 +627,7 @@ class TextRenderer extends ElementRenderer {
 	/* private */boolean mRelabel;
 
 	class LabelTask implements Runnable {
-		boolean isCancelled;
+		private boolean isCancelled;
 
 		@Override
 		public void run() {
@@ -646,12 +646,17 @@ class TextRenderer extends ElementRenderer {
 
 			mLabelTask = null;
 			mRequestRun = false;
+			isCancelled = false;
 
 			if (mRelabel) {
 				mRelabel = false;
 				postLabelTask();
 			}
 		}
+
+		public void cancel() {
+			isCancelled = true;
+		}
 	}
 
 	/* private */void cleanup() {
@@ -725,19 +730,10 @@ class TextRenderer extends ElementRenderer {
 	public synchronized void clearLabels() {
 		if (mRequestRun) {
 			mRequestClear = true;
-			mRelabel = true;
+			//mRelabel = true;
 		} else {
 			cleanup();
-			postLabelTask();
+			//postLabelTask();
 		}
-
-		//		if (mLabelHandler != null)
-		//			mLabelHandler.removeCallbacks(mLabelUpdate);
-		//
-		//		if (mLabelTask == null) {
-		//			cleanup();
-		//		} else {
-		//			mLabelTask.cancel(false);
-		//		}
 	}
 }