From 4383fdddcf12723440d90ae954b0c3b4ab9718fe Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Tue, 24 Nov 2015 16:24:50 +0200 Subject: [PATCH] WIP [android] Main loop integration --- .../com/mapbox/mapboxsdk/views/MapView.java | 12 +------ .../mapbox/mapboxsdk/views/NativeMapView.java | 18 ++--------- platform/android/jni.cpp | 32 +++---------------- platform/android/native_map_view.cpp | 25 --------------- 4 files changed, 8 insertions(+), 79 deletions(-) diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java index f062d35457a..8c2483ecd69 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java @@ -974,7 +974,6 @@ public void onPause() { mConnectivityReceiver = null; mUserLocationView.pause(); - mNativeMapView.pause(); } /** @@ -987,7 +986,6 @@ public void onResume() { getContext().registerReceiver(mConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); mUserLocationView.resume(); - mNativeMapView.resume(); mNativeMapView.update(); } @@ -2117,12 +2115,6 @@ private List getMarkersInBounds(@NonNull BoundingBox bbox) { } private int getTopOffsetPixelsForSprite(Sprite sprite) { - // This method will dead lock if map paused. Causes a freeze if you add a marker in an - // activity's onCreate() - if (mNativeMapView.isPaused()) { - return 0; - } - return (int) (mNativeMapView.getTopOffsetPixelsForAnnotationSymbol(sprite.getId()) * mScreenDensity); } @@ -2345,9 +2337,7 @@ public void onDraw(Canvas canvas) { return; } - if (!mNativeMapView.isPaused()) { - mNativeMapView.renderSync(); - } + mNativeMapView.render(); } @Override diff --git a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java index f09d0e90273..c9603a00307 100644 --- a/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java +++ b/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java @@ -100,24 +100,12 @@ public void destroySurface() { nativeDestroySurface(mNativeMapViewPtr); } - public void pause() { - nativePause(mNativeMapViewPtr); - } - - public boolean isPaused() { - return nativeIsPaused(mNativeMapViewPtr); - } - - public void resume() { - nativeResume(mNativeMapViewPtr); - } - public void update() { nativeUpdate(mNativeMapViewPtr); } - public void renderSync() { - nativeRenderSync(mNativeMapViewPtr); + public void render() { + nativeRender(mNativeMapViewPtr); } public void resizeView(int width, int height) { @@ -494,7 +482,7 @@ private native void nativeCreateSurface(long nativeMapViewPtr, private native void nativeUpdate(long nativeMapViewPtr); - private native void nativeRenderSync(long nativeMapViewPtr); + private native void nativeRender(long nativeMapViewPtr); private native void nativeViewResize(long nativeMapViewPtr, int width, int height); diff --git a/platform/android/jni.cpp b/platform/android/jni.cpp index acefc87f31b..dc16c6a003f 100644 --- a/platform/android/jni.cpp +++ b/platform/android/jni.cpp @@ -453,27 +453,6 @@ void JNICALL nativeDestroySurface(JNIEnv *env, jobject obj, jlong nativeMapViewP nativeMapView->destroySurface(); } -void JNICALL nativePause(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativePause"); - assert(nativeMapViewPtr != 0); - NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - nativeMapView->pause(); -} - -jboolean JNICALL nativeIsPaused(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativeIsPaused"); - assert(nativeMapViewPtr != 0); - NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - return nativeMapView->getMap().isPaused(); -} - -void JNICALL nativeResume(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativeResume"); - assert(nativeMapViewPtr != 0); - NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - nativeMapView->resume(); -} - void JNICALL nativeUpdate(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { mbgl::Log::Debug(mbgl::Event::JNI, "nativeUpdate"); assert(nativeMapViewPtr != 0); @@ -481,11 +460,11 @@ void JNICALL nativeUpdate(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { nativeMapView->getMap().update(mbgl::Update::Repaint); } -void JNICALL nativeRenderSync(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { - mbgl::Log::Debug(mbgl::Event::JNI, "nativeRenderSync"); +void JNICALL nativeRender(JNIEnv *env, jobject obj, jlong nativeMapViewPtr) { + mbgl::Log::Debug(mbgl::Event::JNI, "nativeRender"); assert(nativeMapViewPtr != 0); NativeMapView *nativeMapView = reinterpret_cast(nativeMapViewPtr); - nativeMapView->getMap().renderSync(); + nativeMapView->getMap().render(); } void JNICALL nativeViewResize(JNIEnv *env, jobject obj, jlong nativeMapViewPtr, jint width, jint height) { @@ -1859,11 +1838,8 @@ extern "C" JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) { {"nativeCreateSurface", "(JLandroid/view/Surface;)V", reinterpret_cast(&nativeCreateSurface)}, {"nativeDestroySurface", "(J)V", reinterpret_cast(&nativeDestroySurface)}, - {"nativePause", "(J)V", reinterpret_cast(&nativePause)}, - {"nativeIsPaused", "(J)Z", reinterpret_cast(&nativeIsPaused)}, - {"nativeResume", "(J)V", reinterpret_cast(&nativeResume)}, {"nativeUpdate", "(J)V", reinterpret_cast(&nativeUpdate)}, - {"nativeRenderSync", "(J)V", reinterpret_cast(&nativeRenderSync)}, + {"nativeRender", "(J)V", reinterpret_cast(&nativeRender)}, {"nativeViewResize", "(JII)V", reinterpret_cast(static_cast(&nativeViewResize))}, diff --git a/platform/android/native_map_view.cpp b/platform/android/native_map_view.cpp index d0c4cdab007..31a15f0df9c 100644 --- a/platform/android/native_map_view.cpp +++ b/platform/android/native_map_view.cpp @@ -87,8 +87,6 @@ NativeMapView::NativeMapView(JNIEnv *env, jobject obj_, float pixelRatio_, int a size_t cacheSize = zoomFactor * cpuFactor * memoryFactor * sizeFactor * 0.5f; map->setSourceTileCacheSize(cacheSize); - - map->pause(); } NativeMapView::~NativeMapView() { @@ -440,8 +438,6 @@ void NativeMapView::createSurface(ANativeWindow *window_) { void NativeMapView::destroySurface() { mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::destroySurface"); - pause(); - if (surface != EGL_NO_SURFACE) { if (!eglDestroySurface(display, surface)) { mbgl::Log::Error(mbgl::Event::OpenGL, "eglDestroySurface() returned error %d", @@ -658,27 +654,6 @@ EGLConfig NativeMapView::chooseConfig(const EGLConfig configs[], EGLint numConfi return configId; } -void NativeMapView::pause() { - mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::pause"); - - if ((display != EGL_NO_DISPLAY) && (context != EGL_NO_CONTEXT)) { - map->pause(); - } -} - -void NativeMapView::resume() { - mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::resume"); - - assert(display != EGL_NO_DISPLAY); - assert(context != EGL_NO_CONTEXT); - - if (surface != EGL_NO_SURFACE) { - map->resume(); - } else { - mbgl::Log::Debug(mbgl::Event::Android, "Not resuming because we are not ready"); - } -} - void NativeMapView::notifyMapChange(mbgl::MapChange change) { mbgl::Log::Debug(mbgl::Event::Android, "NativeMapView::notifyMapChange()");