mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-01-01 21:33:39 +01:00
Use EarlyLoadedService for anything that is not mandatory for kicking off plugin loader
This commit is contained in:
parent
532781308d
commit
7f5ef03917
43 changed files with 133 additions and 74 deletions
|
|
@ -39,22 +39,10 @@ namespace Dalamud.Plugin.Internal;
|
|||
|
||||
/// <summary>
|
||||
/// Class responsible for loading and unloading plugins.
|
||||
/// NOTE: ALL plugin exposed services are marked as dependencies for PluginManager in Service{T}.
|
||||
/// NOTE: ALL plugin exposed services are marked as dependencies for <see cref="PluginManager"/>
|
||||
/// from <see cref="ResolvePossiblePluginDependencyServices"/>.
|
||||
/// </summary>
|
||||
[ServiceManager.BlockingEarlyLoadedService]
|
||||
#pragma warning disable SA1015
|
||||
|
||||
// DalamudTextureWrap registers textures to dispose with IM
|
||||
[InherentDependency<InterfaceManager>]
|
||||
|
||||
// LocalPlugin uses ServiceContainer to create scopes
|
||||
[InherentDependency<ServiceContainer>]
|
||||
|
||||
// DalamudPluginInterface hands out a reference to this, so we have to keep it around
|
||||
// TODO api9: make it a service
|
||||
[InherentDependency<DataShare>]
|
||||
|
||||
#pragma warning restore SA1015
|
||||
[ServiceManager.BlockingEarlyLoadedService("Accomodation of plugins that blocks the game startup.")]
|
||||
internal partial class PluginManager : IInternalDisposableService
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -1257,6 +1245,16 @@ internal partial class PluginManager : IInternalDisposableService
|
|||
/// <returns>The dependency services.</returns>
|
||||
private static IEnumerable<Type> ResolvePossiblePluginDependencyServices()
|
||||
{
|
||||
// DalamudPluginInterface hands out a reference to this, so we have to keep it around.
|
||||
// TODO api9: make it a service
|
||||
yield return typeof(DataShare);
|
||||
|
||||
// DalamudTextureWrap registers textures to dispose with IM.
|
||||
yield return typeof(InterfaceManager);
|
||||
|
||||
// Note: LocalPlugin uses ServiceContainer to create scopes, but it is done outside PM ctor.
|
||||
// This is not required: yield return typeof(ServiceContainer);
|
||||
|
||||
foreach (var serviceType in ServiceManager.GetConcreteServiceTypes())
|
||||
{
|
||||
if (serviceType == typeof(PluginManager))
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ namespace Dalamud.Plugin.Internal.Profiles;
|
|||
/// <summary>
|
||||
/// Class responsible for managing plugin profiles.
|
||||
/// </summary>
|
||||
[ServiceManager.BlockingEarlyLoadedService]
|
||||
[ServiceManager.BlockingEarlyLoadedService($"Data provider for {nameof(PluginManager)}.")]
|
||||
internal class ProfileManager : IServiceType
|
||||
{
|
||||
private static readonly ModuleLog Log = new("PROFMAN");
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Dalamud.Plugin.Ipc.Internal;
|
|||
/// <summary>
|
||||
/// This class facilitates sharing data-references of standard types between plugins without using more expensive IPC.
|
||||
/// </summary>
|
||||
[ServiceManager.BlockingEarlyLoadedService]
|
||||
[ServiceManager.EarlyLoadedService]
|
||||
internal class DataShare : IServiceType
|
||||
{
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue