From 2f9a848251465a3a49005340a1e1d14131c85123 Mon Sep 17 00:00:00 2001 From: Fynn Godau Date: Wed, 3 May 2023 22:49:30 +0200 Subject: [PATCH 1/2] Call `onStart()` right before taking snapshot --- .../src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt index 9bffa18ea..6ee8c1474 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt @@ -460,6 +460,7 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG runOnMainLooper { callback.onBitmapWrappedReady(ObjectWrapper.wrap(null)) } } else { Log.d(TAG, "taking snapshot") + onStart() // else snapshot fails silently if client app, like Signal, forgot to call onStart() map.snapshot { runOnMainLooper { Log.d(TAG, "snapshot ready, providing to application") -- GitLab From 5f03df30f347ae089ae0950c46a3e6e4773c0017 Mon Sep 17 00:00:00 2001 From: Fynn Godau Date: Wed, 3 May 2023 22:53:03 +0200 Subject: [PATCH 2/2] Track started status --- .../org/microg/gms/maps/mapbox/GoogleMap.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt index 6ee8c1474..a35cf1c69 100644 --- a/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt +++ b/play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/GoogleMap.kt @@ -120,6 +120,8 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG val waitingCameraUpdates = mutableListOf() var locationEnabled: Boolean = false + var isStarted = false + init { BitmapDescriptorFactoryImpl.initialize(mapContext.resources, context.resources) LibraryLoader.setLibraryLoader(MultiArchLoader(mapContext, context)) @@ -459,8 +461,15 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG Log.e(TAG, "snapshot could not be taken because map is null") runOnMainLooper { callback.onBitmapWrappedReady(ObjectWrapper.wrap(null)) } } else { - Log.d(TAG, "taking snapshot") - onStart() // else snapshot fails silently if client app, like Signal, forgot to call onStart() + if (!isStarted) { + Log.w(TAG, "Caller did not call onStart() before taking snapshot. Calling onStart() now, for snapshot not to fail.") + // Snapshots fail silently if onStart had not been called. This is the case with Signal. + onStart() + isStarted = true + } + + Log.d(TAG, "taking snapshot now") + map.snapshot { runOnMainLooper { Log.d(TAG, "snapshot ready, providing to application") @@ -788,10 +797,12 @@ class GoogleMapImpl(context: Context, var options: GoogleMapOptions) : AbstractG } override fun onStart() { + isStarted = true mapView?.onStart() } override fun onStop() { + isStarted = false mapView?.onStop() } -- GitLab