42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using SRF.Service;
|
|||
|
|
|||
|
namespace SRDebugger.Internal
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Workaround for the debug panel not being initialized on startup.
|
|||
|
/// SROptions needs to register itself but not cause auto-initialization.
|
|||
|
/// This class buffers requests to register contains until there is a handler in place to deal with them.
|
|||
|
/// Once the handler is in place, all buffered requests are passed in and future requests invoke the handler directly.
|
|||
|
/// </summary>
|
|||
|
[Service(typeof(InternalOptionsRegistry))]
|
|||
|
public sealed class InternalOptionsRegistry
|
|||
|
{
|
|||
|
private List<object> _registeredContainers = new List<object>();
|
|||
|
private Action<object> _handler;
|
|||
|
|
|||
|
public void AddOptionContainer(object obj)
|
|||
|
{
|
|||
|
if (_handler != null)
|
|||
|
{
|
|||
|
_handler(obj);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
_registeredContainers.Add(obj);
|
|||
|
}
|
|||
|
|
|||
|
public void SetHandler(Action<object> action)
|
|||
|
{
|
|||
|
_handler = action;
|
|||
|
|
|||
|
foreach (object o in _registeredContainers)
|
|||
|
{
|
|||
|
_handler(o);
|
|||
|
}
|
|||
|
|
|||
|
_registeredContainers = null;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|