Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Pending code changes (auto-populated)
View issue level access limits(Press Alt + Right arrow for more information)
Unintended behavior
View staffing
Attachment actions
Description
Component used:
CanvasFrontBufferedRenderer
Version used:
androidx.graphics:graphics-core:1.0.2
Devices/Android versions reproduced on:
We tested and made the recording with Samsung Galaxy Tab S9 FE.
Meanwhile, we notice that the issue predominantly occurs on low-end devices. Our users have also reported experiencing this problem on devices such as the Samsung Galaxy Tab S9 FE+, Samsung Galaxy Tab S6 Lite and Samsung Galaxy Tab A9.
Sample project:
This project is modified based on the Android official input samples demo project here .
Issue description:
In the attached recording, you can observe that when the navigation bar is hidden, the strokes created by each touch are not rendered on the screen in real-time. Initially, only the first few strokes are visible, and subsequent strokes do not appear until the pen is lifted. Interestingly, this issue does not occur when the navigation bar is displayed or when screen recording is enabled.
The navigation bar's visibility is controlled by these code lines .
The file is responsible for creating and drawing the lines. The function is directly associated with the canvas drawing logic during motion.
CanvasLowLatencyRenderer.kt
onDrawFrontBufferedLayer
In Android's original example ,
onDrawFrontBufferedLayer
allocated a bitmap and triggered software rendering while drawing the front buffer in the render thread to clear prediction lines. In our implementation, this has been optimized withcanvas.drawRect
, yet the stroke rendering issue persists.Furthermore, even when we completely bypass the logic for clearing prediction lines by commenting out the relevant code ( these lines ) related to scissor box clearing and damaged area re-drawing, the issue remains unresolved.
Screen recording explanation: