From 4844f579689f8ba2076684efc385336bedd2fae8 Mon Sep 17 00:00:00 2001 From: agra Date: Tue, 19 May 2026 19:33:52 +0300 Subject: [PATCH] ffi 1.27: uikit_read_screen_scale via #objc_call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Third Phase 1D cluster. `UIScreen.mainScreen.nativeScale` chain reads through `#objc_call(*void)` + `#objc_call(f64)`. First standalone `#objc_call(f64)` exercise — `f64` returns had only been covered indirectly by the 4×f64 UIEdgeInsets HFA path. Net -4 lines. iOS-sim chess regression smoke: sharp text rendering + accurate touch hit-testing both confirm `plat.dpi_scale` is being populated correctly through the new path. --- library/modules/platform/uikit.sx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/library/modules/platform/uikit.sx b/library/modules/platform/uikit.sx index 07d5bcf..aa2c13d 100644 --- a/library/modules/platform/uikit.sx +++ b/library/modules/platform/uikit.sx @@ -343,13 +343,9 @@ uikit_register_classes :: () { // (that's where the gles path picks the scale up). uikit_read_screen_scale :: (plat: *UIKitPlatform) { inline if OS != .ios { return; } - UIScreen := objc_getClass("UIScreen".ptr); - sel_main_screen := sel_registerName("mainScreen".ptr); - sel_native_scale := sel_registerName("nativeScale".ptr); - msg_o : (*void, *void) -> *void = xx objc_msgSend; - msg_d : (*void, *void) -> f64 = xx objc_msgSend; - screen := msg_o(UIScreen, sel_main_screen); - scale_d : f64 = msg_d(screen, sel_native_scale); + UIScreen := objc_getClass("UIScreen".ptr); + screen := #objc_call(*void)(UIScreen, "mainScreen"); + scale_d := #objc_call(f64)(screen, "nativeScale"); plat.dpi_scale = xx scale_d; }