diff --git a/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/textureview/VulkanTextureViewRenderThread.java b/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/textureview/VulkanTextureViewRenderThread.java index 3b8a0715ba0..6b11c1569b4 100644 --- a/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/textureview/VulkanTextureViewRenderThread.java +++ b/platform/android/MapLibreAndroid/src/vulkan/java/org/maplibre/android/maps/renderer/textureview/VulkanTextureViewRenderThread.java @@ -15,6 +15,16 @@ public VulkanTextureViewRenderThread(@NonNull TextureView textureView, @NonNull super(textureView, mapRenderer); } + void cleanup() { + if (surface == null) { + return; + } + + mapRenderer.onSurfaceDestroyed(); + surface.release(); + surface = null; + } + // Thread implementation @Override @@ -121,6 +131,7 @@ public void run() { // Signal we're done synchronized (lock) { + cleanup(); this.exited = true; lock.notifyAll(); }