fix deadlock: do not lock Viewport while calling MapAnimator

"GLThread 4500" prio=5 tid=11 MONITOR
at org.oscim.map.MapAnimator.updateAnimation(MapAnimator.java:~186)
  - waiting to lock <0x42105030> (a org.oscim.map.MapAnimator) held by tid=1 (main)

"main" prio=5 tid=1 MONITOR
    at org.oscim.map.Viewport.getMapPosition(Viewport.java:~111)
  - waiting to lock <0x42103368> (a org.oscim.map.Viewport) held by tid=11 (GLThread 4500)
  at org.oscim.map.MapAnimator.animateFling(MapAnimator.java:151)
This commit is contained in:
Hannes Janetzek 2014-01-27 00:40:45 +01:00
parent d85782b055
commit 67edb98d12

View File

@ -230,15 +230,13 @@ public class MapRenderer {
GLState.bindTex2D(-1);
GLState.useProgram(-1);
boolean changed = false;
mMap.getAnimator().updateAnimation();
MapPosition pos = mMapPosition;
Viewport viewport = mMap.getViewport();
boolean changed = false;
synchronized (viewport) {
mMap.getAnimator().updateAnimation();
// get current MapPosition
changed = viewport.getMapPosition(pos);