Optimize GC while prehandling.
This commit is contained in:
@@ -37,7 +37,10 @@ namespace Cryville.Crtr.Event {
|
||||
private set {
|
||||
if (m_active == value) return;
|
||||
m_active = value;
|
||||
if (!m_active && CloneType == 1) Dispose();
|
||||
if (!m_active) {
|
||||
if (CloneType == 1) Dispose();
|
||||
else if (CloneType >= 16) ReleasePools();
|
||||
}
|
||||
if (Parent != null) {
|
||||
if (m_active) Parent.ActiveChildren.Add(Container);
|
||||
else Parent.ActiveChildren.Remove(Container);
|
||||
@@ -191,10 +194,7 @@ namespace Cryville.Crtr.Event {
|
||||
if (Disposed) return;
|
||||
Disposed = true;
|
||||
if (CloneType == 1) Handler.Dispose();
|
||||
if (CloneType == 1 || CloneType == 17) {
|
||||
_rmvpa.ReturnAll();
|
||||
_mcpa.ReturnAll();
|
||||
}
|
||||
ReleasePools();
|
||||
foreach (var s in Children)
|
||||
s.Value.Dispose();
|
||||
}
|
||||
@@ -203,6 +203,10 @@ namespace Cryville.Crtr.Event {
|
||||
s.Value.DisposeAll();
|
||||
Handler.DisposeAll();
|
||||
}
|
||||
public void ReleasePools() {
|
||||
_rmvpa.ReturnAll();
|
||||
_mcpa.ReturnAll();
|
||||
}
|
||||
|
||||
public void AttachHandler(ContainerHandler h) {
|
||||
if (Handler != null)
|
||||
|
Reference in New Issue
Block a user