From 8e7a51dc04d3ea8f1f8d399a7e13bd9c4fd3da4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Laban?= Date: Mon, 3 Jun 2024 10:22:23 -0400 Subject: [PATCH] fix: XamlRoot may be null when the SKXamlCanvas is unloaded (#2854) * fix: XamlRoot may be null when the SKXamlCanvas is unloaded * chore: Adjust more xamlroot uses --------- Co-authored-by: Matthew Leibowitz --- .../SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs index e6e4330aa1..e11e71577a 100644 --- a/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs +++ b/source/SkiaSharp.Views/SkiaSharp.Views.WinUI/SKXamlCanvas.cs @@ -101,7 +101,7 @@ private static void OnVisibilityChanged(DependencyObject d, DependencyPropertyCh private void OnXamlRootChanged(XamlRoot xamlRoot = null, XamlRootChangedEventArgs e = null) { var root = xamlRoot ?? XamlRoot; - Dpi = root.RasterizationScale; + Dpi = root?.RasterizationScale ?? 1.0; Invalidate(); } #else @@ -141,7 +141,10 @@ private void OnUnloaded(object sender, RoutedEventArgs e) return; #if WINDOWS - XamlRoot.Changed -= OnXamlRootChanged; + if(XamlRoot != null) + { + XamlRoot.Changed -= OnXamlRootChanged; + } #else var display = DisplayInformation.GetForCurrentView(); display.DpiChanged -= OnDpiChanged;