Safely call events in DalamudPluginInterface (#2063)

This commit is contained in:
Haselnussbomber 2024-11-05 21:15:09 +01:00 committed by GitHub
parent fcbad5000a
commit fea5b3b563
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -526,13 +526,40 @@ internal sealed class DalamudPluginInterface : IDalamudPluginInterface, IDisposa
/// <param name="affectedThisPlugin">If this plugin was affected by the change.</param>
internal void NotifyActivePluginsChanged(PluginListInvalidationKind kind, bool affectedThisPlugin)
{
this.ActivePluginsChanged?.Invoke(kind, affectedThisPlugin);
if (this.ActivePluginsChanged is { } callback)
{
foreach (var action in callback.GetInvocationList().Cast<IDalamudPluginInterface.ActivePluginsChangedDelegate>())
{
try
{
action(kind, affectedThisPlugin);
}
catch (Exception ex)
{
Log.Error(ex, "Exception during raise of {handler}", action.Method);
}
}
}
}
private void OnLocalizationChanged(string langCode)
{
this.UiLanguage = langCode;
this.LanguageChanged?.Invoke(langCode);
if (this.LanguageChanged is { } callback)
{
foreach (var action in callback.GetInvocationList().Cast<IDalamudPluginInterface.LanguageChangedDelegate>())
{
try
{
action(langCode);
}
catch (Exception ex)
{
Log.Error(ex, "Exception during raise of {handler}", action.Method);
}
}
}
}
private void OnDalamudConfigurationSaved(DalamudConfiguration dalamudConfiguration)