Fixed
Status Update
Comments
st...@google.com <st...@google.com>
ap...@google.com <ap...@google.com> #2
Thanks for filing the issue.
This is a particularly hard device to come by - do you happen to have access to the device? If so could you provide us with the output of: adb shell dumpsys media.camera > info.txt
Thanks!
This is a particularly hard device to come by - do you happen to have access to the device? If so could you provide us with the output of: adb shell dumpsys media.camera > info.txt
Thanks!
Description
implementation("androidx.wear.compose:compose-navigation:1.4.0-alpha07")
SwipeDismissableNavHost
Version used: 1.4.0-alpha07
Device: Samsung SM-890, Android 13, Wear OS 4.0
The following exception is thrown randomly when changing screens on a Wear OS app using the latest compose navigation library:
FATAL EXCEPTION: main
java.lang.IllegalArgumentException: red = 1.0, green = 1.0, blue = 1.0, alpha = -8.34465E-9 outside the range for sRGB IEC61966-2.1 (id=0, model=Rgb)
at androidx.compose.ui.graphics.InlineClassHelperKt.throwIllegalArgumentException(InlineClassHelper.kt:26)
at androidx.compose.ui.graphics.ColorKt.Color(Color.kt:722)
at androidx.compose.ui.graphics.Color.copy-wmQWz5c(Color.kt:259)
at androidx.compose.ui.graphics.Color.copy-wmQWz5c$default(Color.kt:254)
at androidx.wear.compose.navigation.SwipeDismissableNavHostKt$BoxedStackEntryContent$2$2$1.invoke(SwipeDismissableNavHost.kt:499)
at androidx.wear.compose.navigation.SwipeDismissableNavHostKt$BoxedStackEntryContent$2$2$1.invoke(SwipeDismissableNavHost.kt:492)
at androidx.compose.ui.draw.DrawBackgroundModifier.draw(DrawModifier.kt:127)
It looks like the error is in this code inside SwipeDismissableNavHost, that calculates the alpha using lerp. The value is not 0f as expected, but -8.34465E-9 which is not accepted by sRGB IEC61966-2.1
if (layerColor != Color.Unspecified) {
Canvas(Modifier.fillMaxSize()) {
val absoluteProgression =
((animatable.value - 0.25f).coerceAtLeast(0f) / 0.75f).coerceAtMost(1f)
val easedProgression = NAV_HOST_ENTER_TRANSITION_EASING_STANDARD
.transform(absoluteProgression)
val alpha = lerp(0.07f, 0f, easedProgression)
if (isRoundDevice) {
drawCircle(color = layerColor.copy(alpha))
} else {
drawRect(color = layerColor.copy(alpha))
}
}
}