From 3c250e84e5580136fef8421158685ed2d2290ba0 Mon Sep 17 00:00:00 2001 From: Alex Cristici Date: Tue, 24 Sep 2024 17:57:46 +0300 Subject: [PATCH] Android renderThreadManager changed to non static (#2872) --- .../maps/renderer/surfaceview/MapLibreSurfaceView.java | 6 ++++-- .../maps/renderer/surfaceview/MapLibreGLSurfaceView.java | 2 +- .../renderer/surfaceview/MapLibreVulkanSurfaceView.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreSurfaceView.java b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreSurfaceView.java index b30c0642b..2d99b3b7c 100644 --- a/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreSurfaceView.java +++ b/platform/android/MapLibreAndroid/src/main/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreSurfaceView.java @@ -14,7 +14,7 @@ import java.util.ArrayList; public abstract class MapLibreSurfaceView extends SurfaceView implements SurfaceHolder.Callback2 { protected static final String TAG = "MapLibreSurfaceView"; - protected static final RenderThreadManager renderThreadManager = new RenderThreadManager(); + protected final RenderThreadManager renderThreadManager = new RenderThreadManager(); protected SurfaceViewMapRenderer renderer; protected RenderThread renderThread; @@ -266,13 +266,14 @@ public abstract class MapLibreSurfaceView extends SurfaceView implements Surface * sRenderThreadManager object. This avoids multiple-lock ordering issues. */ abstract static class RenderThread extends Thread { - RenderThread() { + RenderThread(RenderThreadManager aRenderThreadManager) { super(); width = 0; height = 0; requestRender = true; renderMode = MapRenderer.RenderingRefreshMode.WHEN_DIRTY; wantRenderNotification = false; + renderThreadManager = aRenderThreadManager; } @Override @@ -489,6 +490,7 @@ public abstract class MapLibreSurfaceView extends SurfaceView implements Surface protected ArrayList eventQueue = new ArrayList<>(); protected boolean sizeChanged = true; protected Runnable finishDrawingRunnable = null; + protected RenderThreadManager renderThreadManager = null; // End of member variables protected by the sRenderThreadManager monitor. } diff --git a/platform/android/MapLibreAndroid/src/opengl/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreGLSurfaceView.java b/platform/android/MapLibreAndroid/src/opengl/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreGLSurfaceView.java index a14d203fd..e446e1351 100644 --- a/platform/android/MapLibreAndroid/src/opengl/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreGLSurfaceView.java +++ b/platform/android/MapLibreAndroid/src/opengl/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreGLSurfaceView.java @@ -324,7 +324,7 @@ public class MapLibreGLSurfaceView extends MapLibreSurfaceView { */ static class GLThread extends MapLibreSurfaceView.RenderThread { GLThread(WeakReference surfaceViewWeakRef) { - super(); + super(surfaceViewWeakRef.get().renderThreadManager); mSurfaceViewWeakRef = surfaceViewWeakRef; } diff --git a/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreVulkanSurfaceView.java b/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreVulkanSurfaceView.java index 06c780bdc..7d38575ef 100644 --- a/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreVulkanSurfaceView.java +++ b/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/surfaceview/MapLibreVulkanSurfaceView.java @@ -25,7 +25,7 @@ public class MapLibreVulkanSurfaceView extends MapLibreSurfaceView { static class VulkanThread extends MapLibreSurfaceView.RenderThread { VulkanThread(WeakReference surfaceViewWeakRef) { - super(); + super(surfaceViewWeakRef.get().renderThreadManager); mSurfaceViewWeakRef = surfaceViewWeakRef; }