Forcibly refresh UI state after editing a shader or removing an edit

This commit is contained in:
baldurk
2016-02-21 16:10:46 +01:00
parent c35531c65f
commit 1a05f4fc4a
8 changed files with 31 additions and 17 deletions
+13 -3
View File
@@ -616,7 +616,7 @@ namespace renderdocui.Code
m_Renderer.Invoke((ReplayRenderer r) =>
{
r.FileChanged();
r.SetFrameEvent(m_FrameID, m_EventID > 0 ? m_EventID-1 : 1);
r.SetFrameEvent(m_FrameID, m_EventID > 0 ? m_EventID-1 : 1, true);
});
SetEventID(null, CurFrame, CurEvent);
@@ -846,7 +846,7 @@ namespace renderdocui.Code
m_Renderer.Invoke((ReplayRenderer r) => { r.SetContextFilter(ctx, firstDeferred, lastDeferred); });
m_Renderer.Invoke((ReplayRenderer r) => {
r.SetFrameEvent(m_FrameID, m_EventID);
r.SetFrameEvent(m_FrameID, m_EventID, true);
m_D3D11PipelineState = r.GetD3D11PipelineState();
m_GLPipelineState = r.GetGLPipelineState();
m_VulkanPipelineState = r.GetVulkanPipelineState();
@@ -866,7 +866,17 @@ namespace renderdocui.Code
}
}
public void RefreshStatus()
{
SetEventID(null, m_FrameID, m_EventID, true);
}
public void SetEventID(ILogViewerForm exclude, UInt32 frameID, UInt32 eventID)
{
SetEventID(exclude, frameID, eventID, false);
}
private void SetEventID(ILogViewerForm exclude, UInt32 frameID, UInt32 eventID, bool force)
{
m_FrameID = frameID;
m_EventID = eventID;
@@ -876,7 +886,7 @@ namespace renderdocui.Code
m_Renderer.Invoke((ReplayRenderer r) => { r.SetContextFilter(ResourceId.Null, 0, 0); });
m_Renderer.Invoke((ReplayRenderer r) =>
{
r.SetFrameEvent(m_FrameID, m_EventID);
r.SetFrameEvent(m_FrameID, m_EventID, force);
m_D3D11PipelineState = r.GetD3D11PipelineState();
m_GLPipelineState = r.GetGLPipelineState();
m_VulkanPipelineState = r.GetVulkanPipelineState();
+3 -3
View File
@@ -209,7 +209,7 @@ namespace renderdoc
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_SetContextFilter(IntPtr real, ResourceId id, UInt32 firstDefEv, UInt32 lastDefEv);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_SetFrameEvent(IntPtr real, UInt32 frameID, UInt32 eventID);
private static extern bool ReplayRenderer_SetFrameEvent(IntPtr real, UInt32 frameID, UInt32 eventID, bool force);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
private static extern bool ReplayRenderer_GetD3D11PipelineState(IntPtr real, IntPtr mem);
[DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
@@ -328,8 +328,8 @@ namespace renderdoc
public bool SetContextFilter(ResourceId id, UInt32 firstDefEv, UInt32 lastDefEv)
{ return ReplayRenderer_SetContextFilter(m_Real, id, firstDefEv, lastDefEv); }
public bool SetFrameEvent(UInt32 frameID, UInt32 eventID)
{ return ReplayRenderer_SetFrameEvent(m_Real, frameID, eventID); }
public bool SetFrameEvent(UInt32 frameID, UInt32 eventID, bool force)
{ return ReplayRenderer_SetFrameEvent(m_Real, frameID, eventID, force); }
public GLPipelineState GetGLPipelineState()
{
@@ -2008,6 +2008,8 @@ namespace renderdocui.Windows.PipelineState
if (files.Count == 0)
return;
D3D11PipelineStateViewer pipeviewer = this;
ShaderViewer sv = new ShaderViewer(m_Core, false, entryFunc, files,
// Save Callback
@@ -2101,10 +2103,12 @@ namespace renderdocui.Windows.PipelineState
if (to == ResourceId.Null)
{
r.RemoveReplacement(from);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
}
else
{
r.ReplaceResource(from, to);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
}
});
},
@@ -2117,6 +2121,7 @@ namespace renderdocui.Windows.PipelineState
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
r.RemoveReplacement(stage.Shader);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
});
});
@@ -1884,6 +1884,8 @@ namespace renderdocui.Windows.PipelineState
if (files.Count == 0)
return;
GLPipelineStateViewer pipeviewer = this;
ShaderViewer sv = new ShaderViewer(m_Core, false, "main", files,
// Save Callback
@@ -1906,10 +1908,12 @@ namespace renderdocui.Windows.PipelineState
if (to == ResourceId.Null)
{
r.RemoveReplacement(from);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
}
else
{
r.ReplaceResource(from, to);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
}
});
},
@@ -1922,6 +1926,7 @@ namespace renderdocui.Windows.PipelineState
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
r.RemoveReplacement(stage.Shader);
pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); });
});
});