patrykandpatrick / vico

A light and extensible chart library for Android.
https://patrykandpatrick.com/vico/wiki
Apache License 2.0
2.07k stars 125 forks source link

java.lang.IllegalArgumentException after upgrading from 2.0.0-alpha.21 to 2.0.0-alpha.27 #840

Closed chrismiller closed 1 month ago

chrismiller commented 1 month ago

How to reproduce

I don't have a small test case yet sorry. I have a chart with a single LineCartesianLayer, and I updated my codebase from alpha.21 to use alpha.27. After I made a few changes to my code so it works with the various API changes in alpha.27, my code compiles fine, but it now fails at runtime with the exception shown below. Let me know if there's anything else you want me to try to help debugging this.

Observed behavior

                     java.lang.IllegalArgumentException: x must be < bitmap.width()
                                                                                                    at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:2128)
                                                                                                    at android.graphics.Bitmap.getPixel(Bitmap.java:2036)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.updateMarkerTargets(LineCartesianLayer.kt:392)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.drawInternal$lambda$3$lambda$2$lambda$1(LineCartesianLayer.kt:361)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.$r8$lambda$8NKgdkPG9ensLPvcQbSTw-p-wH8(Unknown Source:0)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer$$ExternalSyntheticLambda1.invoke(D8$$SyntheticClass:0)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.forEachPointInBounds(LineCartesianLayer.kt:548)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.drawInternal(LineCartesianLayer.kt:360)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.LineCartesianLayer.drawInternal(LineCartesianLayer.kt:76)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.layer.BaseCartesianLayer.draw(BaseCartesianLayer.kt:59)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.CartesianChart$drawingModelAndLayerConsumer$1.invoke(CartesianChart.kt:96)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.CartesianChart.forEachWithLayer(CartesianChart.kt:420)
                                                                                                    at com.patrykandpatrick.vico.core.cartesian.CartesianChart.draw-43zNVmo(CartesianChart.kt:247)
                                                                                                    at com.patrykandpatrick.vico.compose.cartesian.CartesianChartHostKt.CartesianChartHostImpl$lambda$19(CartesianChartHost.kt:228)
                                                                                                    at com.patrykandpatrick.vico.compose.cartesian.CartesianChartHostKt.$r8$lambda$-dawOEQ8SDGJZi3SqLyNfpT3eUg(Unknown Source:0)
                                                                                                    at com.patrykandpatrick.vico.compose.cartesian.CartesianChartHostKt$$ExternalSyntheticLambda5.invoke(D8$$SyntheticClass:0)
                                                                                                    at androidx.compose.ui.draw.DrawBackgroundModifier.draw(DrawModifier.kt:127)
                                                                                                    at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:110)
                                                                                                    at androidx.compose.ui.node.LayoutNodeDrawScope.draw-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:89)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:450)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:999)
                                                                                                    at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:196)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439)
                                                                                                    at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280)
                                                                                                    at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447)

2024-08-09 23:30:40.546 31602-31602 AndroidRuntime net.redyeti.skisim E at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) (Ask Gemini) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280) at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:68) at androidx.compose.foundation.BackgroundNode.draw(Background.kt:163) at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:110) at androidx.compose.ui.node.LayoutNodeDrawScope.draw-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:89) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:450) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:999) at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:196) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:58) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:469) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:468) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:503) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:502) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:258) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:468) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:466) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer.android.kt:291) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer.android.kt:289) at androidx.compose.ui.graphics.layer.GraphicsLayerV29.record(GraphicsLayerV29.android.kt:245) at androidx.compose.ui.graphics.layer.GraphicsLayer.recordInternal(AndroidGraphicsLayer.android.kt:430) at androidx.compose.ui.graphics.layer.GraphicsLayer.record-mL-hObY(AndroidGraphicsLayer.android.kt:423) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer.updateDisplayList(GraphicsLayerOwnerLayer.android.kt:284) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer.drawLayer(GraphicsLayerOwnerLayer.android.kt:229) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:434) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280) at androidx.compose.ui.node.LayoutNodeDrawScope.drawContent(LayoutNodeDrawScope.kt:68) at androidx.compose.foundation.BackgroundNode.draw(Background.kt:163) at androidx.compose.ui.node.LayoutNodeDrawScope.drawDirect-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:110) at androidx.compose.ui.node.LayoutNodeDrawScope.draw-eZhPAX0$ui_release(LayoutNodeDrawScope.kt:89) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:450) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:999) at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:196) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) 2024-08-09 23:30:40.547 31602-31602 AndroidRuntime net.redyeti.skisim E at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280) (Ask Gemini) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.performDraw(LayoutModifierNodeCoordinator.kt:280) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.draw(NodeCoordinator.kt:439) at androidx.compose.ui.node.LayoutNode.draw$ui_release(LayoutNode.kt:999) at androidx.compose.ui.node.InnerNodeCoordinator.performDraw(InnerNodeCoordinator.kt:196) at androidx.compose.ui.node.NodeCoordinator.drawContainedDrawModifiers(NodeCoordinator.kt:447) at androidx.compose.ui.node.NodeCoordinator.access$drawContainedDrawModifiers(NodeCoordinator.kt:58) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:469) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1$1.invoke(NodeCoordinator.kt:468) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2441) at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe(SnapshotStateObserver.kt:502) at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:258) at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release(OwnerSnapshotObserver.kt:133) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:468) at androidx.compose.ui.node.NodeCoordinator$drawBlock$1.invoke(NodeCoordinator.kt:466) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer.android.kt:291) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer$recordLambda$1.invoke(GraphicsLayerOwnerLayer.android.kt:289) at androidx.compose.ui.graphics.layer.GraphicsLayerV29.record(GraphicsLayerV29.android.kt:245) at androidx.compose.ui.graphics.layer.GraphicsLayer.recordInternal(AndroidGraphicsLayer.android.kt:430) at androidx.compose.ui.graphics.layer.GraphicsLayer.record-mL-hObY(AndroidGraphicsLayer.android.kt:423) at androidx.compose.ui.platform.GraphicsLayerOwnerLayer.updateDisplayList(GraphicsLayerOwnerLayer.android.kt:284) at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(AndroidComposeView.android.kt:1572) at android.view.View.draw(View.java:24629) at android.view.View.updateDisplayListIfDirty(View.java:23492) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4560) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4533) at android.view.View.updateDisplayListIfDirty(View.java:23448) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4560) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4533) at android.view.View.updateDisplayListIfDirty(View.java:23448) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4560) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4533) at android.view.View.updateDisplayListIfDirty(View.java:23448) at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4560) at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4533) at android.view.View.updateDisplayListIfDirty(View.java:23448) at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:694) at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:700) at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:798) at android.view.ViewRootImpl.draw(ViewRootImpl.java:5313) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4975) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4093) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2718) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9937) 2024-08-09 23:30:40.548 31602-31602 AndroidRuntime net.redyeti.skisim E at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1406) (Ask Gemini) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415) at android.view.Choreographer.doCallbacks(Choreographer.java:1015) at android.view.Choreographer.doFrame(Choreographer.java:945) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389) at android.os.Handler.handleCallback(Handler.java:959) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:232) at android.os.Looper.loop(Looper.java:317) at android.app.ActivityThread.main(ActivityThread.java:8592) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:878)

Expected behavior

No exception, chart to be correctly rendered.

Vico version(s)

2.0.0-alpha.27

Android version(s)

14

Additional information

No response

Gowsky commented 1 month ago

Hello @chrismiller, this is a duplicate of #830.