fix: clear labels should not always trigger relabeling

This commit is contained in:
Hannes Janetzek 2013-10-26 22:53:21 +02:00
parent 5cb3eb9dd1
commit 0b880e0f0c
2 changed files with 11 additions and 12 deletions

View File

@ -45,6 +45,9 @@ public class LabelLayer extends Layer implements EventListener, Map.UpdateListen
mMap.removeListener(MotionEvent.TYPE, this); mMap.removeListener(MotionEvent.TYPE, this);
// TODO stop and clear labeling thread // TODO stop and clear labeling thread
log.debug("DETACH");
mTextRenderer.clearLabels();
super.onDetach(); super.onDetach();
} }

View File

@ -627,7 +627,7 @@ class TextRenderer extends ElementRenderer {
/* private */boolean mRelabel; /* private */boolean mRelabel;
class LabelTask implements Runnable { class LabelTask implements Runnable {
boolean isCancelled; private boolean isCancelled;
@Override @Override
public void run() { public void run() {
@ -646,12 +646,17 @@ class TextRenderer extends ElementRenderer {
mLabelTask = null; mLabelTask = null;
mRequestRun = false; mRequestRun = false;
isCancelled = false;
if (mRelabel) { if (mRelabel) {
mRelabel = false; mRelabel = false;
postLabelTask(); postLabelTask();
} }
} }
public void cancel() {
isCancelled = true;
}
} }
/* private */void cleanup() { /* private */void cleanup() {
@ -725,19 +730,10 @@ class TextRenderer extends ElementRenderer {
public synchronized void clearLabels() { public synchronized void clearLabels() {
if (mRequestRun) { if (mRequestRun) {
mRequestClear = true; mRequestClear = true;
mRelabel = true; //mRelabel = true;
} else { } else {
cleanup(); cleanup();
postLabelTask(); //postLabelTask();
} }
// if (mLabelHandler != null)
// mLabelHandler.removeCallbacks(mLabelUpdate);
//
// if (mLabelTask == null) {
// cleanup();
// } else {
// mLabelTask.cancel(false);
// }
} }
} }