diff --git a/renderdocui/Code/Cameras.cs b/renderdocui/Code/Cameras.cs index ba9f487cc..35e89a125 100644 --- a/renderdocui/Code/Cameras.cs +++ b/renderdocui/Code/Cameras.cs @@ -41,7 +41,7 @@ namespace renderdocui.Code { m_Rate = msCount; m_Update = up; - m_CameraTick = new System.Threading.Timer(TickCB, this as object, m_Rate, System.Threading.Timeout.Infinite); + Start(); } private int m_Rate; @@ -59,6 +59,17 @@ namespace renderdocui.Code if (me.m_Update != null) me.m_Update(); if (me.m_CameraTick != null) me.m_CameraTick.Change(me.m_Rate, System.Threading.Timeout.Infinite); } + + public void Start() + { + m_CameraTick = new System.Threading.Timer(TickCB, this as object, m_Rate, System.Threading.Timeout.Infinite); + } + + public void Stop() + { + m_CameraTick.Dispose(); + m_CameraTick = null; + } } abstract class CameraControls diff --git a/renderdocui/Windows/BufferViewer.cs b/renderdocui/Windows/BufferViewer.cs index 5124fa009..455724804 100644 --- a/renderdocui/Windows/BufferViewer.cs +++ b/renderdocui/Windows/BufferViewer.cs @@ -1859,6 +1859,9 @@ namespace renderdocui.Windows { m_Core.RemoveLogViewer(this); + m_Updater.Stop(); + m_Updater = null; + m_ReqID++; }