From d6a30863940cbefa69e3975cbde8b237db439850 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 9 Nov 2016 19:27:18 +0100 Subject: [PATCH] Pass in environment modification list when capturing --- qrenderdoc/Code/RenderManager.cpp | 18 ++++++++++++++---- qrenderdoc/Windows/MainWindow.cpp | 13 ++++++++++--- qrenderdoc/Windows/MainWindow.h | 3 +++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/qrenderdoc/Code/RenderManager.cpp b/qrenderdoc/Code/RenderManager.cpp index 70a6ca542..0e6e7b583 100644 --- a/qrenderdoc/Code/RenderManager.cpp +++ b/qrenderdoc/Code/RenderManager.cpp @@ -129,10 +129,20 @@ uint32_t RenderManager::ExecuteAndInject(const QString &exe, const QString &work { // if (m_Remote == null) { - // TODO env - return RENDERDOC_ExecuteAndInject(exe.toUtf8().data(), workingDir.toUtf8().data(), - cmdLine.toUtf8().data(), NULL, logfile.toUtf8().data(), &opts, - false); + void *envList = RENDERDOC_MakeEnvironmentModificationList(env.size()); + + for(int i = 0; i < env.size(); i++) + RENDERDOC_SetEnvironmentModification(envList, i, env[i].variable.toUtf8().data(), + env[i].value.toUtf8().data(), env[i].type, + env[i].separator); + + uint32_t ret = RENDERDOC_ExecuteAndInject(exe.toUtf8().data(), workingDir.toUtf8().data(), + cmdLine.toUtf8().data(), envList, + logfile.toUtf8().data(), &opts, false); + + RENDERDOC_FreeEnvironmentModificationList(envList); + + return ret; } /* else diff --git a/qrenderdoc/Windows/MainWindow.cpp b/qrenderdoc/Windows/MainWindow.cpp index 3c0376eb8..a205f1d25 100644 --- a/qrenderdoc/Windows/MainWindow.cpp +++ b/qrenderdoc/Windows/MainWindow.cpp @@ -239,8 +239,15 @@ void MainWindow::OnInjectTrigger(uint32_t PID, const QListTempLogFilename(name); - // TODO - env - uint32_t ret = RENDERDOC_InjectIntoProcess(PID, NULL, logfile.toUtf8().data(), &opts, false); + void *envList = RENDERDOC_MakeEnvironmentModificationList(env.size()); + + for(int i = 0; i < env.size(); i++) + RENDERDOC_SetEnvironmentModification(envList, i, env[i].variable.toUtf8().data(), + env[i].value.toUtf8().data(), env[i].type, env[i].separator); + + uint32_t ret = RENDERDOC_InjectIntoProcess(PID, envList, logfile.toUtf8().data(), &opts, false); + + RENDERDOC_FreeEnvironmentModificationList(envList); if(ret == 0) { @@ -838,7 +845,7 @@ void MainWindow::closeEvent(QCloseEvent *event) SaveLayout(0); } -QString dragFilename(const QMimeData *mimeData) +QString MainWindow::dragFilename(const QMimeData *mimeData) { if(mimeData->hasUrls()) { diff --git a/qrenderdoc/Windows/MainWindow.h b/qrenderdoc/Windows/MainWindow.h index f83a36226..8872f8404 100644 --- a/qrenderdoc/Windows/MainWindow.h +++ b/qrenderdoc/Windows/MainWindow.h @@ -34,6 +34,7 @@ class MainWindow; } class QLabel; +class QMimeData; class QProgressBar; class CaptureDialog; @@ -81,6 +82,8 @@ private: void dragEnterEvent(QDragEnterEvent *event) override; void dropEvent(QDropEvent *event) override; + QString dragFilename(const QMimeData *mimeData); + Ui::MainWindow *ui; CaptureContext *m_Ctx;