From 81dad81a08c8a2d7ff99c640a59f5fe678deb30f Mon Sep 17 00:00:00 2001 From: Ilya Pospelov Date: Fri, 24 Jul 2026 15:26:16 +0300 Subject: [PATCH] Fix DBusPlatformSettings NullReferenceException (#21831) --- .../DBusPlatformSettings.cs | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/Avalonia.FreeDesktop/DBusPlatformSettings.cs b/src/Avalonia.FreeDesktop/DBusPlatformSettings.cs index bf17b5522e..f6d620a534 100644 --- a/src/Avalonia.FreeDesktop/DBusPlatformSettings.cs +++ b/src/Avalonia.FreeDesktop/DBusPlatformSettings.cs @@ -30,11 +30,14 @@ namespace Avalonia.FreeDesktop private async Task TryGetInitialValuesAsync() { - _themeVariant = await TryGetThemeVariantAsync(); - _accentColor = await TryGetAccentColorAsync(); - _lastColorValues = BuildPlatformColorValues(); - if (_lastColorValues is not null) - Dispatcher.UIThread.Post(() => OnColorValuesChanged(_lastColorValues)); + if (_settings is { } settings) + { + _themeVariant = await TryGetThemeVariantAsync(settings); + _accentColor = await TryGetAccentColorAsync(settings); + _lastColorValues = BuildPlatformColorValues(); + if (_lastColorValues is not null) + Dispatcher.UIThread.Post(() => OnColorValuesChanged(_lastColorValues)); + } } internal void OnRequestDefaultThemeVariant() @@ -42,17 +45,17 @@ namespace Avalonia.FreeDesktop _ = TryGetInitialValuesAsync(); } - private async Task TryGetThemeVariantAsync() + private static async Task TryGetThemeVariantAsync(Settings settings) { try { - var version = await _settings!.GetVersionAsync(); + var version = await settings.GetVersionAsync(); VariantValue value; if (version >= 2) - value = await _settings!.ReadOneAsync("org.freedesktop.appearance", "color-scheme"); + value = await settings.ReadOneAsync("org.freedesktop.appearance", "color-scheme"); else // Unpack nested Variant - value = (await _settings!.ReadAsync("org.freedesktop.appearance", "color-scheme")).GetVariantValue(); + value = (await settings.ReadAsync("org.freedesktop.appearance", "color-scheme")).GetVariantValue(); return ToColorScheme(value.GetUInt32()); } catch (DBusExceptionBase) @@ -61,16 +64,16 @@ namespace Avalonia.FreeDesktop } } - private async Task TryGetAccentColorAsync() + private static async Task TryGetAccentColorAsync(Settings settings) { try { - var version = await _settings!.GetVersionAsync(); + var version = await settings.GetVersionAsync(); VariantValue value; if (version >= 2) - value = await _settings!.ReadOneAsync("org.freedesktop.appearance", "accent-color"); + value = await settings.ReadOneAsync("org.freedesktop.appearance", "accent-color"); else - value = await _settings!.ReadAsync("org.freedesktop.appearance", "accent-color"); + value = await settings.ReadAsync("org.freedesktop.appearance", "accent-color"); return ToAccentColor(value); } catch (DBusExceptionBase)