mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-28 04:41:07 +00:00
Merge pull request #101 from valeriog-crytek/master
GL fixes and Python improvements
This commit is contained in:
@@ -122,6 +122,7 @@ enum GLChunkType
|
||||
BINDATTRIB_LOCATION,
|
||||
UNIFORM_BLOCKBIND,
|
||||
PROGRAMUNIFORM_VECTOR,
|
||||
PROGRAMUNIFORM_MATRIX,
|
||||
LINKPROGRAM,
|
||||
|
||||
GEN_PROGRAMPIPE,
|
||||
|
||||
@@ -71,6 +71,7 @@ const char *GLChunkNames[] =
|
||||
"glProgramParameter",
|
||||
"glBindAttribLocation",
|
||||
"glUniformBlockBinding",
|
||||
"glProgramUniformMatrix*",
|
||||
"glProgramUniformVector*",
|
||||
"glLinkProgram",
|
||||
|
||||
@@ -290,6 +291,7 @@ WrappedOpenGL::WrappedOpenGL(const wchar_t *logfile, const GLHookSet &funcs)
|
||||
m_DrawFramebufferRecord = NULL;
|
||||
m_ReadFramebufferRecord = NULL;
|
||||
m_TextureUnit = 0;
|
||||
m_Program = 0;
|
||||
|
||||
m_LastIndexSize = eGL_NONE;
|
||||
m_LastIndexOffset = 0;
|
||||
|
||||
@@ -113,6 +113,7 @@ class WrappedOpenGL
|
||||
GLResourceRecord *m_DrawFramebufferRecord;
|
||||
GLResourceRecord *m_ReadFramebufferRecord;
|
||||
GLint m_TextureUnit;
|
||||
GLuint m_Program;
|
||||
|
||||
// internals
|
||||
Serialiser *m_pSerialiser;
|
||||
@@ -531,6 +532,7 @@ class WrappedOpenGL
|
||||
bool Serialise_glUniformMatrix(GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type);
|
||||
bool Serialise_glUniformVector(GLint location, GLsizei count, const void *value, UniformType type);
|
||||
|
||||
bool Serialise_glProgramUniformMatrix(GLuint program, GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type);
|
||||
bool Serialise_glProgramUniformVector(GLuint program, GLint location, GLsizei count, const void *value, UniformType type);
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
@@ -544,6 +546,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform3fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glUniform4fv(GLint location, GLsizei count, const GLfloat *value));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1i(GLuint program, GLint location, GLint v0));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1fv(GLuint program, GLint location, GLsizei count, const GLfloat *value));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glProgramUniform1iv(GLuint program, GLint location, GLsizei count, const GLint *value));
|
||||
|
||||
@@ -139,6 +139,7 @@ struct GLHookSet
|
||||
PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
|
||||
PFNGLLINKPROGRAMPROC glLinkProgram;
|
||||
PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
|
||||
PFNGLPROGRAMUNIFORMMATRIX4FVPROC glProgramUniformMatrix4fv;
|
||||
PFNGLPROGRAMUNIFORM1IPROC glProgramUniform1i;
|
||||
PFNGLPROGRAMUNIFORM1FVPROC glProgramUniform1fv;
|
||||
PFNGLPROGRAMUNIFORM1IVPROC glProgramUniform1iv;
|
||||
|
||||
@@ -152,6 +152,7 @@
|
||||
HookExtension(PFNGLRELEASESHADERCOMPILERPROC, glReleaseShaderCompiler); \
|
||||
HookExtension(PFNGLLINKPROGRAMPROC, glLinkProgram); \
|
||||
HookExtension(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORMMATRIX4FVPROC, glProgramUniformMatrix4fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IPROC, glProgramUniform1i); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1FVPROC, glProgramUniform1fv); \
|
||||
HookExtension(PFNGLPROGRAMUNIFORM1IVPROC, glProgramUniform1iv); \
|
||||
@@ -502,6 +503,7 @@
|
||||
HookWrapper0(void, glReleaseShaderCompiler); \
|
||||
HookWrapper1(void, glLinkProgram, GLuint, program); \
|
||||
HookWrapper3(void, glProgramParameteri, GLuint, program, GLenum, pname, GLint, value); \
|
||||
HookWrapper5(void, glProgramUniformMatrix4fv, GLuint, program, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
|
||||
HookWrapper3(void, glProgramUniform1i, GLuint, program, GLint, location, GLint, v0); \
|
||||
HookWrapper4(void, glProgramUniform1fv, GLuint, program, GLint, location, GLsizei, count, const GLfloat *, value); \
|
||||
HookWrapper4(void, glProgramUniform1iv, GLuint, program, GLint, location, GLsizei, count, const GLint *, value); \
|
||||
|
||||
@@ -593,6 +593,8 @@ void WrappedOpenGL::glUseProgram(GLuint program)
|
||||
{
|
||||
m_Real.glUseProgram(program);
|
||||
|
||||
m_Program = program;
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(USEPROGRAM);
|
||||
|
||||
@@ -100,6 +100,16 @@ void WrappedOpenGL::glUniformMatrix4fv(GLint location, GLsizei count, GLboolean
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_MATRIX);
|
||||
Serialise_glProgramUniformMatrix(m_Program, location, count, transpose, value, MAT4FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glUniformVector(GLint location, GLsizei count, const void *value, UniformType type)
|
||||
@@ -202,6 +212,16 @@ void WrappedOpenGL::glUniform1f(GLint location, GLfloat value)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1i(GLint location, GLint value)
|
||||
@@ -215,6 +235,16 @@ void WrappedOpenGL::glUniform1i(GLint location, GLint value)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1IV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1ui(GLint location, GLuint value)
|
||||
@@ -228,6 +258,16 @@ void WrappedOpenGL::glUniform1ui(GLint location, GLuint value)
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, 1, &value, VEC1UIV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
@@ -241,6 +281,16 @@ void WrappedOpenGL::glUniform1fv(GLint location, GLsizei count, const GLfloat *v
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC1FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1iv(GLint location, GLsizei count, const GLint *value)
|
||||
@@ -254,6 +304,16 @@ void WrappedOpenGL::glUniform1iv(GLint location, GLsizei count, const GLint *val
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC1IV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform1uiv(GLint location, GLsizei count, const GLuint *value)
|
||||
@@ -267,6 +327,16 @@ void WrappedOpenGL::glUniform1uiv(GLint location, GLsizei count, const GLuint *v
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC1UIV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform2fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
@@ -280,6 +350,16 @@ void WrappedOpenGL::glUniform2fv(GLint location, GLsizei count, const GLfloat *v
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC2FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform3fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
@@ -293,6 +373,16 @@ void WrappedOpenGL::glUniform3fv(GLint location, GLsizei count, const GLfloat *v
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC3FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glUniform4fv(GLint location, GLsizei count, const GLfloat *value)
|
||||
@@ -306,6 +396,16 @@ void WrappedOpenGL::glUniform4fv(GLint location, GLsizei count, const GLfloat *v
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else if(m_State == WRITING_IDLE)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_VECTOR);
|
||||
Serialise_glProgramUniformVector(m_Program, location, count, &value, VEC4FV);
|
||||
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), m_Program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glProgramUniformVector(GLuint program, GLint location, GLsizei count, const void *value, UniformType type)
|
||||
@@ -560,3 +660,92 @@ void WrappedOpenGL::glProgramUniform4fv(GLuint program, GLint location, GLsizei
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glProgramUniformMatrix(GLuint program, GLint location, GLsizei count, GLboolean transpose, const void *value, UniformType type)
|
||||
{
|
||||
SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(ProgramRes(GetCtx(), program)));
|
||||
SERIALISE_ELEMENT(UniformType, Type, type);
|
||||
SERIALISE_ELEMENT(int32_t, Loc, location);
|
||||
SERIALISE_ELEMENT(uint32_t, Count, count);
|
||||
SERIALISE_ELEMENT(uint8_t, Transpose, transpose);
|
||||
|
||||
size_t elemsPerMat = 0;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case MAT4FV: elemsPerMat = 16; break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
}
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
m_pSerialiser->RawWriteBytes(value, sizeof(float)*elemsPerMat*Count);
|
||||
}
|
||||
else if(m_State <= EXECUTING)
|
||||
{
|
||||
value = m_pSerialiser->RawReadBytes(sizeof(float)*elemsPerMat*Count);
|
||||
|
||||
GLuint live = GetResourceManager()->GetLiveResource(id).name;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case MAT4FV: m_Real.glProgramUniformMatrix4fv(live, Loc, Count, Transpose, (const GLfloat *)value); break;
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
}
|
||||
}
|
||||
|
||||
if(m_pSerialiser->GetDebugText())
|
||||
{
|
||||
switch(Type)
|
||||
{
|
||||
case MAT4FV:
|
||||
{
|
||||
float *f = (float *)value;
|
||||
if(Transpose)
|
||||
{
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[0], f[4], f[8], f[12]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[1], f[5], f[9], f[13]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[2], f[6], f[10], f[14]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[3], f[7], f[11], f[15]);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[0], f[1], f[2], f[3]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[4], f[5], f[6], f[7]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[8], f[9], f[10], f[11]);
|
||||
m_pSerialiser->DebugPrint("value: {%f %f %f %f}\n", f[12], f[13], f[14], f[15]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
RDCERR("Unexpected uniform type to Serialise_glProgramUniformMatrix: %d", Type);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
|
||||
{
|
||||
m_Real.glProgramUniformMatrix4fv(program, location, count, transpose, value);
|
||||
|
||||
if(m_State > WRITING)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(PROGRAMUNIFORM_MATRIX);
|
||||
Serialise_glProgramUniformMatrix(program, location, count, transpose, value, MAT4FV);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO grab this at capture time as initial state for program resources
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(ProgramRes(GetCtx(), program));
|
||||
RDCASSERT(record);
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.Windows.Forms.ToolStripContainer toolStripContainer1;
|
||||
System.Windows.Forms.ToolStrip toolStrip1;
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PythonShell));
|
||||
@@ -50,6 +51,7 @@
|
||||
this.saveDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.openDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this.newScript = new System.Windows.Forms.ToolStripButton();
|
||||
this.linenumTimer = new System.Windows.Forms.Timer(this.components);
|
||||
toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
|
||||
toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
toolStripContainer1.ContentPanel.SuspendLayout();
|
||||
@@ -301,6 +303,11 @@
|
||||
this.newScript.Text = "New";
|
||||
this.newScript.Click += new System.EventHandler(this.newScript_Click);
|
||||
//
|
||||
// linenumTimer
|
||||
//
|
||||
this.linenumTimer.Interval = 500;
|
||||
this.linenumTimer.Tick += new System.EventHandler(this.linenumTimer_Tick);
|
||||
//
|
||||
// PythonShell
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
@@ -356,6 +363,7 @@
|
||||
private System.Windows.Forms.SaveFileDialog saveDialog;
|
||||
private System.Windows.Forms.OpenFileDialog openDialog;
|
||||
private System.Windows.Forms.ToolStripButton newScript;
|
||||
private System.Windows.Forms.Timer linenumTimer;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -116,6 +116,7 @@ namespace renderdocui.Windows.Dialogs
|
||||
private MemoryStream stdout = null;
|
||||
private StreamWriter stdoutwriter = null;
|
||||
private StreamReader stdoutreader = null;
|
||||
private int linenum = -1;
|
||||
|
||||
private string Execute(ScriptEngine engine, ScriptScope scope, string script)
|
||||
{
|
||||
@@ -284,11 +285,11 @@ namespace renderdocui.Windows.Dialogs
|
||||
|
||||
private void TraceCallback(TraceBackFrame frame, string result, object payload)
|
||||
{
|
||||
System.Diagnostics.Trace.WriteLine("On line " + frame.f_lineno.ToString());
|
||||
|
||||
int lineNum = (int)frame.f_lineno - 1;
|
||||
|
||||
BeginInvoke(new Action(() => { SetLineNumber(lineNum); }));
|
||||
if (result == "exception")
|
||||
{
|
||||
System.Diagnostics.Trace.WriteLine("On line " + frame.f_lineno.ToString());
|
||||
}
|
||||
linenum = (int)frame.f_lineno - 1;
|
||||
|
||||
stdoutwriter.Flush();
|
||||
stdout.Seek(0, SeekOrigin.Begin);
|
||||
@@ -296,11 +297,14 @@ namespace renderdocui.Windows.Dialogs
|
||||
stdout.Seek(0, SeekOrigin.Begin);
|
||||
stdout.SetLength(0);
|
||||
|
||||
if (output.Length > 0)
|
||||
{
|
||||
this.BeginInvoke(new Action(() =>
|
||||
{
|
||||
scriptOutput.Text += output;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
private void SetLineNumber(int lineNum)
|
||||
{
|
||||
@@ -331,9 +335,13 @@ namespace renderdocui.Windows.Dialogs
|
||||
var script = scriptEditor.Text;
|
||||
|
||||
scriptOutput.Text = "";
|
||||
linenum = -1;
|
||||
|
||||
EnableButtons(false);
|
||||
|
||||
linenumTimer.Enabled = true;
|
||||
linenumTimer.Start();
|
||||
|
||||
Thread th = Helpers.NewThread(new ThreadStart(() =>
|
||||
{
|
||||
pythonengine.SetTrace(PythonTrace);
|
||||
@@ -341,13 +349,14 @@ namespace renderdocui.Windows.Dialogs
|
||||
// ignore output, the trace handler above will print output
|
||||
string output = Execute(pythonengine, scriptscope, script);
|
||||
|
||||
linenumTimer.Stop();
|
||||
pythonengine.SetTrace(null);
|
||||
|
||||
this.BeginInvoke(new Action(() =>
|
||||
{
|
||||
scriptOutput.Text += output;
|
||||
|
||||
SetLineNumber(-1);
|
||||
SetLineNumber(linenum);
|
||||
|
||||
EnableButtons(true);
|
||||
}));
|
||||
@@ -434,5 +443,10 @@ namespace renderdocui.Windows.Dialogs
|
||||
|
||||
scriptEditor.Text = scriptEditor.Text.Replace("\n", Environment.NewLine);
|
||||
}
|
||||
|
||||
private void linenumTimer_Tick(object sender, EventArgs e)
|
||||
{
|
||||
SetLineNumber(linenum);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -166,4 +166,7 @@
|
||||
<metadata name="openDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>318, 16</value>
|
||||
</metadata>
|
||||
<metadata name="linenumTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>433, 16</value>
|
||||
</metadata>
|
||||
</root>
|
||||
Reference in New Issue
Block a user