3b80a88f3bf0b79a0ccfa56da72d4bc3e99eec84
Threads DisplayMetrics.density (read once in new_peer, via the Context android-view already hands the JNI entry point) through AndroidUiState as content_scale, and divides by it everywhere a raw device-pixel number used to reach layout unscaled: AndroidRenderer::size()/resize()/new() now report logical (physical / density) dimensions to UiRenderNode and to UiRenderState's own root-layout size, and on_touch_event divides the incoming MotionEvent coordinates the same way, so touch and layout agree on units again. This is the fix for RUST.md's P0 box, "text is far too small" -- a font_size: 16.0 was 16 raw device pixels on a ~3x-density phone, identical to the desktop fix in the previous commit. Installs Device::on_uncaptured_error on the Android device (wgpu's default handler is an unconditional panic outside UiRenderNode::new's own error scopes) into a new iris_core::WgpuErrorLog, and adds AndroidRenderer::diagnostics_report() combining adapter identity, font resolution, atlas view count and the error log into one string for a future Diagnostics screen. render() now logs a one-line diagnostic (masks/moves resized, atlas pages grown, image bind-group creates, wgpu error count) for the first 10 frames after each surface_changed -- the window RUST.md's P0 box says the glyph-wipe-on-first-touch happens in. Adds AndroidAppState::on_insets_changed(rsc, LogicalInsets), called from render() exactly when AndroidUiState::insets() changes (once at startup for the status bar, again on rotation/IME) -- nothing previously read insets().top at all, which is why RUST.md's P0 box found the bench screen's top buttons sitting under the status bar. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Languages
Rust
53%
Kotlin
44.4%
Shell
2.6%