fix possible concurrent modification

This commit is contained in:
Hannes Janetzek 2014-01-17 20:41:45 +01:00
parent 143e981ad1
commit dd681e390d

View File

@ -23,14 +23,13 @@ import android.widget.RelativeLayout.LayoutParams;
public class AndroidMap extends Map { public class AndroidMap extends Map {
private final MapView mMapView; private final MapView mMapView;
boolean mWaitRedraw; private boolean mWaitRedraw;
final GLView mGLView; final GLView mGLView;
boolean mPausing = false; boolean mPausing = false;
private final Runnable mRedrawRequest = new Runnable() { private final Runnable mRedrawRequest = new Runnable() {
@Override @Override
public void run() { public void run() {
mWaitRedraw = false;
redrawMapInternal(false); redrawMapInternal(false);
} }
}; };
@ -61,7 +60,7 @@ public class AndroidMap extends Map {
} }
@Override @Override
public void updateMap(boolean requestRender) { public synchronized void updateMap(boolean requestRender) {
if (requestRender && !mClearMap && !mPausing) // && mInitialized) if (requestRender && !mClearMap && !mPausing) // && mInitialized)
mGLView.requestRender(); mGLView.requestRender();
@ -72,15 +71,16 @@ public class AndroidMap extends Map {
} }
@Override @Override
public void render() { public synchronized void render() {
if (mClearMap) if (mClearMap)
updateMap(false); updateMap(false);
else else
mGLView.requestRender(); mGLView.requestRender();
} }
void redrawMapInternal(boolean forceRedraw) { synchronized void redrawMapInternal(boolean forceRedraw) {
boolean clear = mClearMap; boolean clear = mClearMap;
mWaitRedraw = false;
if (forceRedraw && !clear) if (forceRedraw && !clear)
mGLView.requestRender(); mGLView.requestRender();
@ -104,7 +104,7 @@ public class AndroidMap extends Map {
} }
public void pause(boolean pause) { public synchronized void pause(boolean pause) {
mPausing = pause; mPausing = pause;
} }