TextRenderer: handle 'clear' on update to remove all previous labels

This commit is contained in:
Hannes Janetzek 2013-10-06 21:12:06 +02:00
parent af4df27d42
commit 3b92134b2a

View File

@ -613,6 +613,9 @@ class TextRenderer extends ElementRenderer {
compile(); compile();
} }
if (mRequestClear)
cleanup();
//if (!mHolding) //if (!mHolding)
postLabelTask(); postLabelTask();
} }
@ -620,6 +623,7 @@ class TextRenderer extends ElementRenderer {
/* private */LabelTask mLabelTask; /* private */LabelTask mLabelTask;
/* private */long mLastRun; /* private */long mLastRun;
/* private */boolean mRequestRun; /* private */boolean mRequestRun;
/* private */boolean mRequestClear;
/* private */boolean mRelabel; /* private */boolean mRelabel;
class LabelTask implements Runnable { class LabelTask implements Runnable {
@ -654,6 +658,7 @@ class TextRenderer extends ElementRenderer {
mLabels = (Label) mPool.releaseAll(mLabels); mLabels = (Label) mPool.releaseAll(mLabels);
mTileSet.releaseTiles(); mTileSet.releaseTiles();
mLabelTask = null; mLabelTask = null;
mRequestClear = false;
} }
private final Runnable mLabelUpdate = new Runnable() { private final Runnable mLabelUpdate = new Runnable() {
@ -718,6 +723,14 @@ class TextRenderer extends ElementRenderer {
} }
public synchronized void clearLabels() { public synchronized void clearLabels() {
if (mRequestRun) {
mRequestClear = true;
mRelabel = true;
} else {
cleanup();
postLabelTask();
}
// if (mLabelHandler != null) // if (mLabelHandler != null)
// mLabelHandler.removeCallbacks(mLabelUpdate); // mLabelHandler.removeCallbacks(mLabelUpdate);
// //