From 19d5c09b45cd457c1d266cc3175e2d591649c797 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Tue, 15 Nov 2016 08:58:13 +0100 Subject: [PATCH 1/2] musredit_qt5: adopted call of musrview such that it works under macOS 10.12 --- src/musredit_qt5/PTextEdit.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/musredit_qt5/PTextEdit.cpp b/src/musredit_qt5/PTextEdit.cpp index 6fe92bdc..42cea383 100644 --- a/src/musredit_qt5/PTextEdit.cpp +++ b/src/musredit_qt5/PTextEdit.cpp @@ -2205,9 +2205,22 @@ void PTextEdit::musrView() if (fAdmin->getMusrviewShowFourierFlag()) arg << "-f"; - QProcess proc(this); - if (!proc.startDetached(cmd, arg, workDir)) { - QMessageBox::critical(this, "ERROR", "**ERROR** musrview process couldn't be launched properly, sorry."); + QProcess *proc = new QProcess(this); + + // make sure that the system environment variables are properly set + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH")); + proc->setProcessEnvironment(env); + proc->setWorkingDirectory(workDir); + proc->start(cmd, arg); + if (!proc->waitForStarted()) { + // error handling + QString msg(tr("Could not execute the output command: ")+cmd[0]); + QMessageBox::critical( 0, + tr("Fatal error"), + msg, + tr("Quit") ); + return; } } From 87c8860ef7a3484b872ea88bd32cb2cc297f10a7 Mon Sep 17 00:00:00 2001 From: Andreas Suter Date: Tue, 15 Nov 2016 14:46:11 +0100 Subject: [PATCH 2/2] musredit_qt5: replaced QProcess::startDetached by QProcess::start for musrT0 and musrFT due to issues with macOS 10.12. I will need to investigate the ownership issue a bit more careful since this fix might lead to a memory leak. --- src/musredit_qt5/PTextEdit.cpp | 39 ++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/musredit_qt5/PTextEdit.cpp b/src/musredit_qt5/PTextEdit.cpp index 42cea383..abf34026 100644 --- a/src/musredit_qt5/PTextEdit.cpp +++ b/src/musredit_qt5/PTextEdit.cpp @@ -2259,9 +2259,22 @@ void PTextEdit::musrT0() str.setNum(fAdmin->getTimeout()); arg << "--timeout" << str; - QProcess proc(this); - if (!proc.startDetached(cmd, arg, workDir)) { - QMessageBox::critical(this, "ERROR", "**ERROR** musrt0 process couldn't be launched properly, sorry."); + QProcess *proc = new QProcess(this); + + // make sure that the system environment variables are properly set + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH")); + proc->setProcessEnvironment(env); + proc->setWorkingDirectory(workDir); + proc->start(cmd, arg); + if (!proc->waitForStarted()) { + // error handling + QString msg(tr("Could not execute the output command: ")+cmd[0]); + QMessageBox::critical( 0, + tr("Fatal error"), + msg, + tr("Quit") ); + return; } } @@ -2282,11 +2295,23 @@ void PTextEdit::musrFT() if (dlg->exec() == QDialog::Accepted) { fMusrFTPrevCmd = dlg->getMusrFTOptions(); - QProcess proc(this); - proc.setStandardOutputFile("musrFT.log"); - proc.setStandardErrorFile("musrFT.log"); + QProcess *proc = new QProcess(this); + proc->setStandardOutputFile("musrFT.log"); + proc->setStandardErrorFile("musrFT.log"); QString cmd = fAdmin->getExecPath() + "/musrFT"; - proc.startDetached(cmd, fMusrFTPrevCmd); + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert("LD_LIBRARY_PATH", env.value("ROOTSYS") + "/lib:" + env.value("LD_LIBRARY_PATH")); + proc->setProcessEnvironment(env); + proc->start(cmd, fMusrFTPrevCmd); + if (!proc->waitForStarted()) { + // error handling + QString msg(tr("Could not execute the output command: ")+cmd[0]); + QMessageBox::critical( 0, + tr("Fatal error"), + msg, + tr("Quit") ); + return; + } } delete dlg;