summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeith Bade <leith@mapbox.com>2015-09-22 16:23:39 +1000
committerLeith Bade <leith@mapbox.com>2015-09-22 16:23:39 +1000
commitfeae692dbaefa51b893528a31139fb8282b3e889 (patch)
treecb3626805be662de444f153b7912fff388507670
parent71cde640a99d351371179f48f78f8315f0fdd160 (diff)
downloadqtlocation-mapboxgl-feae692dbaefa51b893528a31139fb8282b3e889.tar.gz
Fix freezing on Android when rotating
Fixes #1941
-rw-r--r--android/cpp/native_map_view.cpp5
-rw-r--r--android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java9
-rw-r--r--android/java/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxgl/testapp/MainActivity.java3
-rw-r--r--include/mbgl/map/map.hpp1
-rw-r--r--src/mbgl/map/map.cpp4
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;