Add lock for input proxy.

This commit is contained in:
2022-11-06 00:55:56 +08:00
parent 8f98cb63cb
commit 57fd2c0c0d

View File

@@ -102,10 +102,13 @@ namespace Cryville.Crtr {
#region Handling #region Handling
public void Activate() { foreach (var src in _sproxies.Keys) src.Handler.Activate(); } public void Activate() { foreach (var src in _sproxies.Keys) src.Handler.Activate(); }
public void Deactivate() { foreach (var src in _sproxies.Keys) src.Handler.Deactivate(); } public void Deactivate() { foreach (var src in _sproxies.Keys) src.Handler.Deactivate(); }
readonly object _lock = new object();
void OnInput(InputIdentifier id, InputVector vec) { void OnInput(InputIdentifier id, InputVector vec) {
InputProxyEntry proxy; lock (_lock) {
if (_sproxies.TryGetValue(id.Source, out proxy)) { InputProxyEntry proxy;
OnInput(id, vec, proxy.Target); if (_sproxies.TryGetValue(id.Source, out proxy)) {
OnInput(id, vec, proxy.Target);
}
} }
} }
static readonly int _var_value = IdentifierManager.SharedInstance.Request("value"); static readonly int _var_value = IdentifierManager.SharedInstance.Request("value");