From fe08662e384638647f674564409f826bf98cae67 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 4 Aug 2016 16:11:06 +0200 Subject: [PATCH] Handle non-local logs, make sure they are properly owned and deleted --- renderdocui/Code/Core.cs | 4 ++++ renderdocui/Windows/MainWindow.cs | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/renderdocui/Code/Core.cs b/renderdocui/Code/Core.cs index 565431bb0..b2cd2539a 100644 --- a/renderdocui/Code/Core.cs +++ b/renderdocui/Code/Core.cs @@ -57,6 +57,7 @@ namespace renderdocui.Code private PersistantConfig m_Config = null; + private bool m_LogLocal = false; private bool m_LogLoaded = false; private FileSystemWatcher m_LogWatcher = null; @@ -116,6 +117,7 @@ namespace renderdocui.Code public bool LogLoaded { get { return m_LogLoaded; } } public bool LogLoading { get { return m_LogLoadingInProgress; } } public string LogFileName { get { return m_LogFile; } set { if (LogLoaded) m_LogFile = value; } } + public bool IsLogLocal { get { return m_LogLocal; } set { m_LogLocal = value; } } public FetchFrameInfo FrameInfo { get { return m_FrameInfo; } } @@ -455,6 +457,8 @@ namespace renderdocui.Code { m_LogFile = logFile; + m_LogLocal = local; + m_LogLoadingInProgress = true; if (File.Exists(Core.ConfigFilename)) diff --git a/renderdocui/Windows/MainWindow.cs b/renderdocui/Windows/MainWindow.cs index a1a9671a9..cab00a698 100644 --- a/renderdocui/Windows/MainWindow.cs +++ b/renderdocui/Windows/MainWindow.cs @@ -919,6 +919,19 @@ namespace renderdocui.Windows private void switchContext(object sender, EventArgs e) { + foreach (var live in m_LiveCaptures) + if (live.CheckAllowClose() == false) + return; + + if (!PromptCloseLog()) + return; + + foreach (var live in m_LiveCaptures.ToArray()) + { + live.CleanItems(); + live.Close(); + } + m_Core.Renderer.DisconnectFromRemoteServer(); if(sender == localContext) @@ -1249,10 +1262,12 @@ namespace renderdocui.Windows return true; string deletepath = ""; + bool loglocal = false; if (OwnTemporaryLog) { string temppath = m_Core.LogFileName; + loglocal = m_Core.IsLogLocal; DialogResult res = DialogResult.No; @@ -1286,7 +1301,7 @@ namespace renderdocui.Windows try { if (deletepath.Length > 0) - File.Delete(deletepath); + m_Core.Renderer.DeleteCapture(deletepath, loglocal); } catch (System.Exception) {