From 67edb98d12a0d4972eefad716d7712b7bd6c7b9b Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Mon, 27 Jan 2014 00:40:45 +0100 Subject: [PATCH] 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) --- vtm/src/org/oscim/renderer/MapRenderer.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/vtm/src/org/oscim/renderer/MapRenderer.java b/vtm/src/org/oscim/renderer/MapRenderer.java index 09a7647c..101235ed 100644 --- a/vtm/src/org/oscim/renderer/MapRenderer.java +++ b/vtm/src/org/oscim/renderer/MapRenderer.java @@ -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);