Recreate output windows after use, since D3D12 breaks them

This commit is contained in:
baldurk
2016-07-31 13:07:39 +07:00
parent 842d75a27c
commit 9f9610ce6d
4 changed files with 111 additions and 59 deletions
+18 -18
View File
@@ -54,7 +54,7 @@
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.previewTable = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.renderTable = new System.Windows.Forms.TableLayoutPanel();
this.render = new renderdocui.Controls.NoScrollPanel();
this.configCamControls = new System.Windows.Forms.GroupBox();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
@@ -131,7 +131,7 @@
label3 = new System.Windows.Forms.Label();
label5 = new System.Windows.Forms.Label();
this.previewTable.SuspendLayout();
this.tableLayoutPanel3.SuspendLayout();
this.renderTable.SuspendLayout();
this.configCamControls.SuspendLayout();
this.tableLayoutPanel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.camSpeed)).BeginInit();
@@ -204,7 +204,7 @@
//
this.previewTable.ColumnCount = 1;
this.previewTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.previewTable.Controls.Add(this.tableLayoutPanel3, 0, 1);
this.previewTable.Controls.Add(this.renderTable, 0, 1);
this.previewTable.Controls.Add(this.toolStrip2, 0, 0);
this.previewTable.Dock = System.Windows.Forms.DockStyle.Fill;
this.previewTable.Location = new System.Drawing.Point(3, 3);
@@ -218,25 +218,25 @@
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 2;
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Controls.Add(this.render, 1, 0);
this.tableLayoutPanel3.Controls.Add(this.configCamControls, 0, 0);
this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel3.Location = new System.Drawing.Point(3, 28);
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 1;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(539, 250);
this.tableLayoutPanel3.TabIndex = 5;
this.renderTable.ColumnCount = 2;
this.renderTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.renderTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.renderTable.Controls.Add(this.render, 1, 0);
this.renderTable.Controls.Add(this.configCamControls, 0, 0);
this.renderTable.Dock = System.Windows.Forms.DockStyle.Fill;
this.renderTable.Location = new System.Drawing.Point(3, 28);
this.renderTable.Name = "tableLayoutPanel3";
this.renderTable.RowCount = 1;
this.renderTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.renderTable.Size = new System.Drawing.Size(539, 250);
this.renderTable.TabIndex = 5;
//
// render
//
this.render.BackColor = System.Drawing.Color.Black;
this.render.Dock = System.Windows.Forms.DockStyle.Fill;
this.render.Location = new System.Drawing.Point(203, 3);
this.render.Name = "render";
this.render.Name = "render_SETUP_AT_RUNTIME_SEE_CODE";
this.render.Size = new System.Drawing.Size(333, 244);
this.render.TabIndex = 2;
this.render.Paint += new System.Windows.Forms.PaintEventHandler(this.render_Paint);
@@ -1066,7 +1066,7 @@
this.Load += new System.EventHandler(this.BufferViewer_Load);
this.previewTable.ResumeLayout(false);
this.previewTable.PerformLayout();
this.tableLayoutPanel3.ResumeLayout(false);
this.renderTable.ResumeLayout(false);
this.configCamControls.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.tableLayoutPanel2.PerformLayout();
@@ -1127,7 +1127,7 @@
private System.Windows.Forms.ToolStripSeparator instSep;
private System.Windows.Forms.ToolStripLabel instLabel;
private System.Windows.Forms.ToolStripTextBox instanceIdxToolitem;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3;
private System.Windows.Forms.TableLayoutPanel renderTable;
private System.Windows.Forms.GroupBox configCamControls;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2;
private System.Windows.Forms.TextBox nearGuess;
+34 -9
View File
@@ -265,14 +265,8 @@ namespace renderdocui.Windows
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
RenderHandle = render.Handle;
RecreateRenderPanel();
render.Painting = true;
render.MouseWheel += render_MouseWheel;
render.MouseWheelHandler = render_MouseWheel;
(render as Control).KeyDown += new KeyEventHandler(BufferViewer_KeyDown);
(render as Control).KeyUp += new KeyEventHandler(BufferViewer_KeyUp);
ResetConfig();
MeshView = meshview;
@@ -490,10 +484,39 @@ namespace renderdocui.Windows
#region ILogViewerForm
void RecreateRenderPanel()
{
renderTable.Controls.Clear();
render.Dispose();
render = new Controls.NoScrollPanel();
render.Painting = true;
render.BackColor = Color.Black;
render.Dock = DockStyle.Fill;
render.Paint += new PaintEventHandler(render_Paint);
render.MouseClick += new MouseEventHandler(render_MouseClick);
render.MouseDown += new MouseEventHandler(render_MouseDown);
render.MouseMove += new MouseEventHandler(render_MouseMove);
render.MouseWheel += render_MouseWheel;
render.MouseWheelHandler = render_MouseWheel;
render.KeyDown += new KeyEventHandler(render_KeyDown);
render.KeyUp += new KeyEventHandler(render_KeyUp);
RenderHandle = render.Handle;
renderTable.Controls.Add(render, 1, 0);
renderTable.Controls.Add(configCamControls, 0, 0);
}
public void OnLogfileClosed()
{
if (IsDisposed) return;
RecreateRenderPanel();
m_Output = null;
ResetConfig();
@@ -507,6 +530,8 @@ namespace renderdocui.Windows
{
ClearStoredData();
RecreateRenderPanel();
exportToToolStripMenuItem.Enabled = exportToolItem.Enabled = true;
var draw = m_Core.CurDrawcall;
@@ -2375,12 +2400,12 @@ namespace renderdocui.Windows
});
}
void BufferViewer_KeyUp(object sender, KeyEventArgs e)
void render_KeyUp(object sender, KeyEventArgs e)
{
m_CurrentCamera.KeyUp(sender, e);
}
void BufferViewer_KeyDown(object sender, KeyEventArgs e)
void render_KeyDown(object sender, KeyEventArgs e)
{
m_CurrentCamera.KeyDown(sender, e);
}
+3 -23
View File
@@ -1156,7 +1156,7 @@
//
// renderContainer
//
this.renderContainer.BackColor = System.Drawing.Color.Maroon;
this.renderContainer.BackColor = System.Drawing.Color.Transparent;
this.renderContainer.Controls.Add(this.render);
this.renderContainer.Dock = System.Windows.Forms.DockStyle.Fill;
this.renderContainer.Location = new System.Drawing.Point(0, 0);
@@ -1167,19 +1167,7 @@
//
// render
//
this.render.BackColor = System.Drawing.Color.Black;
this.render.Dock = System.Windows.Forms.DockStyle.Fill;
this.render.Location = new System.Drawing.Point(0, 0);
this.render.Name = "render";
this.render.Size = new System.Drawing.Size(404, 230);
this.render.TabIndex = 0;
this.render.Paint += new System.Windows.Forms.PaintEventHandler(this.render_Paint);
this.render.Layout += new System.Windows.Forms.LayoutEventHandler(this.render_Layout);
this.render.MouseClick += new System.Windows.Forms.MouseEventHandler(this.render_MouseClick);
this.render.MouseDown += new System.Windows.Forms.MouseEventHandler(this.render_MouseClick);
this.render.MouseLeave += new System.EventHandler(this.render_MouseLeave);
this.render.MouseMove += new System.Windows.Forms.MouseEventHandler(this.render_MouseMove);
this.render.MouseUp += new System.Windows.Forms.MouseEventHandler(this.render_MouseUp);
this.render.Name = "render_SETUP_AT_RUNTIME_SEE_CODE";
//
// renderVScroll
//
@@ -1219,15 +1207,7 @@
//
// pixelContext
//
this.pixelContext.BackColor = System.Drawing.Color.Transparent;
this.pixelContextPanel.SetColumnSpan(this.pixelContext, 2);
this.pixelContext.Dock = System.Windows.Forms.DockStyle.Fill;
this.pixelContext.Location = new System.Drawing.Point(3, 3);
this.pixelContext.Name = "pixelContext";
this.pixelContext.Size = new System.Drawing.Size(209, 121);
this.pixelContext.TabIndex = 6;
this.pixelContext.Paint += new System.Windows.Forms.PaintEventHandler(this.pixelContext_Paint);
this.pixelContext.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pixelContext_MouseClick);
this.pixelContext.Name = "pixelContext_SETUP_AT_RUNTIME_SEE_CODE";
//
// debugPixelContext
//
+56 -9
View File
@@ -417,20 +417,16 @@ namespace renderdocui.Windows
mainLayout.Dock = DockStyle.Fill;
render.Painting = true;
pixelContext.Painting = true;
saveTex.Enabled = gotoLocationButton.Enabled = viewTexBuffer.Enabled = false;
DockHandler.GetPersistStringCallback = PersistString;
renderContainer.MouseWheelHandler = render_MouseWheel;
render.MouseWheel += render_MouseWheel;
renderContainer.MouseDown += render_MouseClick;
renderContainer.MouseMove += render_MouseMove;
render.KeyHandler = render_KeyDown;
pixelContext.KeyHandler = render_KeyDown;
RecreateRenderPanel();
RecreateContextPanel();
rangeHistogram.RangeUpdated += new EventHandler<RangeHistogramEventArgs>(rangeHistogram_RangeUpdated);
@@ -1044,6 +1040,54 @@ namespace renderdocui.Windows
#region ILogViewerForm
void RecreateRenderPanel()
{
renderContainer.Controls.Clear();
render.Dispose();
render = new NoScrollPanel();
render.Painting = true;
render.BackColor = Color.Black;
render.Dock = DockStyle.Fill;
render.Paint += new PaintEventHandler(this.render_Paint);
render.Layout += new LayoutEventHandler(this.render_Layout);
render.MouseClick += new MouseEventHandler(this.render_MouseClick);
render.MouseDown += new MouseEventHandler(this.render_MouseClick);
render.MouseLeave += new EventHandler(this.render_MouseLeave);
render.MouseMove += new MouseEventHandler(this.render_MouseMove);
render.MouseUp += new MouseEventHandler(this.render_MouseUp);
render.MouseWheel += render_MouseWheel;
render.KeyHandler = render_KeyDown;
renderContainer.Controls.Add(render);
}
void RecreateContextPanel()
{
pixelContextPanel.Controls.Clear();
pixelContext.Dispose();
pixelContext = new NoScrollPanel();
pixelContext.Painting = true;
pixelContext.BackColor = Color.Transparent;
pixelContext.Dock = DockStyle.Fill;
pixelContext.Paint += new PaintEventHandler(pixelContext_Paint);
pixelContext.MouseClick += new MouseEventHandler(pixelContext_MouseClick);
pixelContext.KeyHandler = render_KeyDown;
pixelContextPanel.Controls.Add(pixelContext, 0, 0);
pixelContextPanel.Controls.Add(debugPixelContext, 1, 1);
pixelContextPanel.Controls.Add(pixelHistory, 0, 1);
pixelContextPanel.SetColumnSpan(pixelContext, 2);
}
public void OnLogfileLoaded()
{
var outConfig = new OutputConfig();
@@ -1056,6 +1100,9 @@ namespace renderdocui.Windows
rwPanel.ClearThumbnails();
roPanel.ClearThumbnails();
RecreateRenderPanel();
RecreateContextPanel();
m_HighWaterStatusLength = 0;
IntPtr contextHandle = pixelContext.Handle;
@@ -1118,6 +1165,9 @@ namespace renderdocui.Windows
rwPanel.ClearThumbnails();
roPanel.ClearThumbnails();
RecreateRenderPanel();
RecreateContextPanel();
texturefilter.SelectedIndex = 0;
m_TexDisplay = new TextureDisplay();
@@ -1768,9 +1818,6 @@ namespace renderdocui.Windows
UI_UpdateFittedScale();
//render.Width = (int)(CurrentTexDisplayWidth * m_TexDisplay.scale);
//render.Height = (int)(CurrentTexDisplayHeight * m_TexDisplay.scale);
UI_UpdateTextureDetails();
UI_UpdateChannels();