Skip to content

Commit 5c78a48

Browse files
committed
fixed concurrency issue
1 parent 6ad5fc3 commit 5c78a48

File tree

2 files changed

+15
-11
lines changed

2 files changed

+15
-11
lines changed

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/PreviewRoutesTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class PreviewRoutesTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.j
4646
@Test
4747
fun preview_routes() = sdkTest(timeout = Long.MAX_VALUE) {
4848
val routes = RoutesProvider.dc_short_with_alternative(activity).toNavigationRoutes()
49-
//mapboxNavigation.startTripSession() <- this breaks tests because of resetting the route
49+
mapboxNavigation.startTripSession()
5050
val previewedRouteDeffer = async {
5151
mapboxNavigation.waitForPreviewRoute()
5252
}

libnavigation-core/src/main/java/com/mapbox/navigation/core/MapboxNavigation.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -838,16 +838,20 @@ class MapboxNavigation @VisibleForTesting internal constructor(
838838
routes: List<NavigationRoute>,
839839
initialLegIndex: Int = 0,
840840
) {
841-
val alternatives = routes.drop(1)
842-
val routesData = RouteParser.createRoutesData(
843-
routes.first().nativeRoute(),
844-
alternatives.map { it.nativeRoute() }
845-
)
846-
routeAlternativesController.processAlternativesMetadata(
847-
routes,
848-
routesData.alternativeRoutes()
849-
)
850-
directionsSession.setRoutes(routes, BasicSetRoutesInfo(RoutesExtra.ROUTES_UPDATE_REASON_PREVIEW, initialLegIndex))
841+
threadController.getMainScopeAndRootJob().scope.launch(Dispatchers.Main.immediate) {
842+
routeUpdateMutex.withLock {
843+
val alternatives = routes.drop(1)
844+
val routesData = RouteParser.createRoutesData(
845+
routes.first().nativeRoute(),
846+
alternatives.map { it.nativeRoute() }
847+
)
848+
routeAlternativesController.processAlternativesMetadata(
849+
routes,
850+
routesData.alternativeRoutes()
851+
)
852+
directionsSession.setRoutes(routes, BasicSetRoutesInfo(RoutesExtra.ROUTES_UPDATE_REASON_PREVIEW, initialLegIndex))
853+
}
854+
}
851855
}
852856

853857
fun setPreviewedRoute() {

0 commit comments

Comments
 (0)