78630d8a2d
The ultra-wide preview is a bare Camera2 surface: it never goes through Skia, so the software EV gain that carries exposure on the 1x preview had nothing to act on and quick EV / the LIGHT-EV slider did nothing at 0.5x. The lens itself now takes the bias, as CONTROL_AE_EXPOSURE_COMPENSATION on every preview request (session builder, metering rebuilds, and a setEv call the viewfinder pushes whenever the value changes). The still is left alone: capture() pins the compensation back to 0 and waits on an AE precapture trigger, so the file stays unbiased and the export applies its software gain exactly once, as it does for the 1x path. The hardware range clamps the bias where the lens offers less than the app's +/-3 EV.