diff options
author | Leith Bade <leith@mapbox.com> | 2015-09-22 16:23:39 +1000 |
---|---|---|
committer | Leith Bade <leith@mapbox.com> | 2015-09-22 16:23:39 +1000 |
commit | feae692dbaefa51b893528a31139fb8282b3e889 (patch) | |
tree | cb3626805be662de444f153b7912fff388507670 | |
parent | 71cde640a99d351371179f48f78f8315f0fdd160 (diff) | |
download | qtlocation-mapboxgl-feae692dbaefa51b893528a31139fb8282b3e889.tar.gz |
Fix freezing on Android when rotating
Fixes #1941
5 files changed, 13 insertions, 9 deletions
diff --git a/android/cpp/native_map_view.cpp b/android/cpp/native_map_view.cpp index 9ffb083ec5..02228d85b6 100644 --- a/android/cpp/native_map_view.cpp +++ b/android/cpp/native_map_view.cpp @@ -699,6 +699,11 @@ void NativeMapView::updateFps() { void NativeMapView::onInvalidate() { mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::onInvalidate()"); + if (map.isPaused()) { + mbgl::Log::Debug(mbgl::Event::Android, "Not rendering as map is paused"); + return; + } + const bool dirty = !clean.test_and_set(); if (dirty) { float zoomFactor = map.getMaxZoom() - map.getMinZoom() + 1; diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index 6be20990a2..b4eece5ec8 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -1009,14 +1009,6 @@ public class MapView extends FrameLayout implements LocationListener { mNativeMapView.resizeFramebuffer(width, height); } - // Called when we need to redraw the view - // This is called before our view is first visible to prevent an initial - // flicker (see Android SDK documentation) - /*@Override - public void surfaceRedrawNeeded(SurfaceHolder holder) { - mNativeMapView.update(); - }*/ // TODO call update somewhere? - // Not used @Override public void onSurfaceTextureUpdated (SurfaceTexture surface) { @@ -1796,7 +1788,6 @@ public class MapView extends FrameLayout implements LocationListener { }); } - /** * Defines callback for events OnMapChange */ diff --git a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java index eb5d891cd5..2f9b374e24 100644 --- a/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java +++ b/android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java @@ -177,12 +177,14 @@ public class MainActivity extends AppCompatActivity { @Override protected void onStart() { super.onStart(); + mMapView.onStart(); } @Override protected void onStop() { super.onStop(); + mMapView.onStop(); } @@ -205,6 +207,7 @@ public class MainActivity extends AppCompatActivity { @Override protected void onDestroy() { super.onDestroy(); + mMapView.onDestroy(); } diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp index 4cd9293c9b..06695778eb 100644 --- a/include/mbgl/map/map.hpp +++ b/include/mbgl/map/map.hpp @@ -58,6 +58,7 @@ public: // Pauses the render thread. The render thread will stop running but will not be terminated and will not lose state until resumed. void pause(); + bool isPaused(); // Resumes a paused render thread void resume(); diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index 9195f6b583..3e7a61a4e8 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -39,6 +39,10 @@ void Map::pause() { } } +bool Map::isPaused() { + return paused; +} + void Map::resume() { data->condResume.notify_all(); paused = false; |