mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-15 05:04:15 +01:00
don't access nullptr addon when shutting down early
This commit is contained in:
parent
f98da094f4
commit
f3d7c6f2ea
1 changed files with 11 additions and 5 deletions
|
|
@ -47,9 +47,9 @@ internal sealed unsafe class ContextMenu : IInternalDisposableService, IContextM
|
||||||
}
|
}
|
||||||
|
|
||||||
private delegate ushort AtkModuleVf22OpenAddonByAgentDelegate(AtkModule* module, byte* addonName, int valueCount, AtkValue* values, AgentInterface* agent, nint a7, bool a8);
|
private delegate ushort AtkModuleVf22OpenAddonByAgentDelegate(AtkModule* module, byte* addonName, int valueCount, AtkValue* values, AgentInterface* agent, nint a7, bool a8);
|
||||||
|
|
||||||
private delegate bool AddonContextMenuOnMenuSelectedDelegate(AddonContextMenu* addon, int selectedIdx, byte a3);
|
private delegate bool AddonContextMenuOnMenuSelectedDelegate(AddonContextMenu* addon, int selectedIdx, byte a3);
|
||||||
|
|
||||||
private delegate ushort RaptureAtkModuleOpenAddonDelegate(RaptureAtkModule* a1, uint addonNameId, uint valueCount, AtkValue* values, AgentInterface* parentAgent, ulong unk, ushort parentAddonId, int unk2);
|
private delegate ushort RaptureAtkModuleOpenAddonDelegate(RaptureAtkModule* a1, uint addonNameId, uint valueCount, AtkValue* values, AgentInterface* parentAgent, ulong unk, ushort parentAddonId, int unk2);
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|
@ -92,16 +92,22 @@ internal sealed unsafe class ContextMenu : IInternalDisposableService, IContextM
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
void IInternalDisposableService.DisposeService()
|
void IInternalDisposableService.DisposeService()
|
||||||
{
|
{
|
||||||
|
this.atkModuleVf22OpenAddonByAgentHook.Dispose();
|
||||||
|
this.addonContextMenuOnMenuSelectedHook.Dispose();
|
||||||
|
|
||||||
var manager = RaptureAtkUnitManager.Instance();
|
var manager = RaptureAtkUnitManager.Instance();
|
||||||
|
if (manager == null)
|
||||||
|
return;
|
||||||
|
|
||||||
var menu = manager->GetAddonByName("ContextMenu");
|
var menu = manager->GetAddonByName("ContextMenu");
|
||||||
var submenu = manager->GetAddonByName("AddonContextSub");
|
var submenu = manager->GetAddonByName("AddonContextSub");
|
||||||
|
if (menu == null || submenu == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (menu->IsVisible)
|
if (menu->IsVisible)
|
||||||
menu->FireCallbackInt(-1);
|
menu->FireCallbackInt(-1);
|
||||||
if (submenu->IsVisible)
|
if (submenu->IsVisible)
|
||||||
submenu->FireCallbackInt(-1);
|
submenu->FireCallbackInt(-1);
|
||||||
|
|
||||||
this.atkModuleVf22OpenAddonByAgentHook.Dispose();
|
|
||||||
this.addonContextMenuOnMenuSelectedHook.Dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue