Merge pull request #30501 from neikeq/dispose-godotsharpexport
Mono: Fix null dereference in EditorExportPlatformAndroid
This commit is contained in:
commit
1700ab9bc6
1 changed files with 19 additions and 1 deletions
|
@ -26,6 +26,8 @@ namespace GodotTools
|
|||
private MonoDevelopInstance monoDevelopInstance;
|
||||
private MonoDevelopInstance visualStudioForMacInstance;
|
||||
|
||||
private WeakReference<GodotSharpExport> exportPluginWeak;
|
||||
|
||||
public MonoBottomPanel MonoBottomPanel { get; private set; }
|
||||
|
||||
private bool CreateProjectSolution()
|
||||
|
@ -513,11 +515,27 @@ namespace GodotTools
|
|||
});
|
||||
|
||||
// Export plugin
|
||||
AddExportPlugin(new GodotSharpExport());
|
||||
var exportPlugin = new GodotSharpExport();
|
||||
AddExportPlugin(exportPlugin);
|
||||
exportPluginWeak = new WeakReference<GodotSharpExport>(exportPlugin);
|
||||
|
||||
GodotSharpBuilds.Initialize();
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
|
||||
if (exportPluginWeak.TryGetTarget(out var exportPlugin))
|
||||
{
|
||||
// We need to dispose our export plugin before the editor destroys EditorSettings.
|
||||
// Otherwise, if the GC disposes it at a later time, EditorExportPlatformAndroid
|
||||
// will be freed after EditorSettings already was, and its device polling thread
|
||||
// will try to access the EditorSettings singleton, resulting in null dereferencing.
|
||||
exportPlugin.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnBeforeSerialize()
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue