Update for frame resampling using TimelineView, but locks at 120FPS

This commit is contained in:
Hariharan Mudaliar 2026-01-23 12:20:17 +05:30
commit 5990fbac06
No known key found for this signature in database
GPG key ID: 025583EB0BE5640E
4 changed files with 25 additions and 9 deletions

View file

@ -44,7 +44,7 @@ public struct LiquidGlassBackground<Content: View>: NSViewRepresentable {
private let content: Content
private let cornerRadius: CGFloat
private let variant: LiquidGlassVariant
private let trigger: Double
/// Creates a new liquid‑glass container.
/// - Parameters:
/// - variant: Any ``LiquidGlassVariant`` (0–19). Defaults to `.v11`, which is visually super pleasing
@ -53,10 +53,12 @@ public struct LiquidGlassBackground<Content: View>: NSViewRepresentable {
public init(
variant: LiquidGlassVariant = .defaultVariant,
cornerRadius: CGFloat = 10,
trigger: Double = 0,
@ViewBuilder content: () -> Content
) {
self.variant = variant
self.cornerRadius = cornerRadius
self.trigger = trigger
self.content = content()
}
@ -130,5 +132,11 @@ public struct LiquidGlassBackground<Content: View>: NSViewRepresentable {
}
nsView.setValue(cornerRadius, forKey: "cornerRadius")
callPrivateVariantSetter(on: nsView, value: variant.rawValue)
// Micro-jitter: imperceptibly adjust opacity so WindowServer re-samples the wallpaper every frame.
let jitter = sin(trigger * 100) * 0.000001
nsView.alphaValue = 1.0 - CGFloat(abs(jitter))
nsView.needsDisplay = true
}
}