summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorŁukasz Paczos <lukas.paczos@gmail.com>2019-08-12 15:28:27 +0200
committerŁukasz Paczos <lukas.paczos@gmail.com>2019-08-12 15:28:27 +0200
commita87df75a4d64b06e18ce8fa62756c9d05b914302 (patch)
treed05cab9f2fd392ec3f87b830c3a045459992918f
parentbc09cdbf76ffa50ccdd8dc8df7997fdd3a0eb0d6 (diff)
downloadqtlocation-mapboxgl-upstream/lp-surface-lock-13601.tar.gz
[android] synchronize TextureView EGL context creationupstream/lp-surface-lock-13601
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java16
1 files changed, 10 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java
index 165b15a512..205e35641b 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/textureview/TextureViewRenderThread.java
@@ -5,9 +5,13 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.view.TextureView;
+
import com.mapbox.mapboxsdk.log.Logger;
import com.mapbox.mapboxsdk.maps.renderer.egl.EGLConfigChooser;
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGL11;
import javax.microedition.khronos.egl.EGLConfig;
@@ -15,8 +19,6 @@ import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
import javax.microedition.khronos.opengles.GL10;
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
/**
* The render thread is responsible for managing the communication between the
@@ -250,13 +252,13 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu
// Initialize EGL
if (initializeEGL) {
eglHolder.prepare();
- if (!eglHolder.createSurface()) {
- synchronized (lock) {
+ synchronized (lock) {
+ if (!eglHolder.createSurface()) {
// Cleanup the surface if one could not be created
// and wait for another to be ready.
destroySurface = true;
+ continue;
}
- continue;
}
mapRenderer.onSurfaceCreated(gl, eglHolder.eglConfig);
mapRenderer.onSurfaceChanged(gl, w, h);
@@ -265,7 +267,9 @@ class TextureViewRenderThread extends Thread implements TextureView.SurfaceTextu
// If the surface size has changed inform the map renderer.
if (recreateSurface) {
- eglHolder.createSurface();
+ synchronized (lock) {
+ eglHolder.createSurface();
+ }
mapRenderer.onSurfaceChanged(gl, w, h);
continue;
}