Skip to content

Commit d97a887

Browse files
pos777MrJul
authored andcommitted
Fix DBusPlatformSettings NullReferenceException (#21831)
1 parent 1a522bf commit d97a887

1 file changed

Lines changed: 16 additions & 13 deletions

File tree

src/Avalonia.FreeDesktop/DBusPlatformSettings.cs

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,32 @@ public DBusPlatformSettings()
3030

3131
private async Task TryGetInitialValuesAsync()
3232
{
33-
_themeVariant = await TryGetThemeVariantAsync();
34-
_accentColor = await TryGetAccentColorAsync();
35-
_lastColorValues = BuildPlatformColorValues();
36-
if (_lastColorValues is not null)
37-
Dispatcher.UIThread.Post(() => OnColorValuesChanged(_lastColorValues));
33+
if (_settings is { } settings)
34+
{
35+
_themeVariant = await TryGetThemeVariantAsync(settings);
36+
_accentColor = await TryGetAccentColorAsync(settings);
37+
_lastColorValues = BuildPlatformColorValues();
38+
if (_lastColorValues is not null)
39+
Dispatcher.UIThread.Post(() => OnColorValuesChanged(_lastColorValues));
40+
}
3841
}
3942

4043
internal void OnRequestDefaultThemeVariant()
4144
{
4245
_ = TryGetInitialValuesAsync();
4346
}
4447

45-
private async Task<PlatformThemeVariant?> TryGetThemeVariantAsync()
48+
private static async Task<PlatformThemeVariant?> TryGetThemeVariantAsync(Settings settings)
4649
{
4750
try
4851
{
49-
var version = await _settings!.GetVersionAsync();
52+
var version = await settings.GetVersionAsync();
5053
VariantValue value;
5154
if (version >= 2)
52-
value = await _settings!.ReadOneAsync("org.freedesktop.appearance", "color-scheme");
55+
value = await settings.ReadOneAsync("org.freedesktop.appearance", "color-scheme");
5356
else
5457
// Unpack nested Variant
55-
value = (await _settings!.ReadAsync("org.freedesktop.appearance", "color-scheme")).GetVariantValue();
58+
value = (await settings.ReadAsync("org.freedesktop.appearance", "color-scheme")).GetVariantValue();
5659
return ToColorScheme(value.GetUInt32());
5760
}
5861
catch (DBusExceptionBase)
@@ -61,16 +64,16 @@ internal void OnRequestDefaultThemeVariant()
6164
}
6265
}
6366

64-
private async Task<Color?> TryGetAccentColorAsync()
67+
private static async Task<Color?> TryGetAccentColorAsync(Settings settings)
6568
{
6669
try
6770
{
68-
var version = await _settings!.GetVersionAsync();
71+
var version = await settings.GetVersionAsync();
6972
VariantValue value;
7073
if (version >= 2)
71-
value = await _settings!.ReadOneAsync("org.freedesktop.appearance", "accent-color");
74+
value = await settings.ReadOneAsync("org.freedesktop.appearance", "accent-color");
7275
else
73-
value = await _settings!.ReadAsync("org.freedesktop.appearance", "accent-color");
76+
value = await settings.ReadAsync("org.freedesktop.appearance", "accent-color");
7477
return ToAccentColor(value);
7578
}
7679
catch (DBusExceptionBase)

0 commit comments

Comments
 (0)