ProcessInterface: Get rid of ProcessInterface::Ptr

Keep the setup data on stack instead on heap.

Task-number: QTCREATORBUG-27358
Change-Id: I0fffd525e2bd4f46533804e3b88fe5b330d02a91
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Jarek Kobus
2022-04-12 08:50:46 +02:00
parent bdbfa4ba0d
commit bc30523293
5 changed files with 58 additions and 60 deletions

View File

@@ -245,7 +245,7 @@ void DefaultImpl::start()
<< "Process " << currentNumber << " starting ("
<< qPrintable(blockingMessage(property(QTC_PROCESS_BLOCKING_TYPE)))
<< "): "
<< m_setup->m_commandLine.toUserOutput();
<< m_setup.m_commandLine.toUserOutput();
setProperty(QTC_PROCESS_NUMBER, currentNumber);
}
@@ -260,26 +260,26 @@ void DefaultImpl::start()
bool DefaultImpl::dissolveCommand(QString *program, QStringList *arguments)
{
const CommandLine &commandLine = m_setup->m_commandLine;
const CommandLine &commandLine = m_setup.m_commandLine;
QString commandString;
ProcessArgs processArgs;
const bool success = ProcessArgs::prepareCommand(commandLine, &commandString, &processArgs,
&m_setup->m_environment,
&m_setup->m_workingDirectory);
&m_setup.m_environment,
&m_setup.m_workingDirectory);
if (commandLine.executable().osType() == OsTypeWindows) {
QString args;
if (m_setup->m_useCtrlCStub) {
if (m_setup->m_lowPriority)
if (m_setup.m_useCtrlCStub) {
if (m_setup.m_lowPriority)
ProcessArgs::addArg(&args, "-nice");
ProcessArgs::addArg(&args, QDir::toNativeSeparators(commandString));
commandString = QCoreApplication::applicationDirPath()
+ QLatin1String("/qtcreator_ctrlc_stub.exe");
} else if (m_setup->m_lowPriority) {
m_setup->m_belowNormalPriority = true;
} else if (m_setup.m_lowPriority) {
m_setup.m_belowNormalPriority = true;
}
ProcessArgs::addArgs(&args, processArgs.toWindowsArgs());
m_setup->m_nativeArguments = args;
m_setup.m_nativeArguments = args;
// Note: Arguments set with setNativeArgs will be appended to the ones
// passed with start() below.
*arguments = QStringList();
@@ -309,7 +309,7 @@ static FilePath resolve(const FilePath &workingDir, const FilePath &filePath)
bool DefaultImpl::ensureProgramExists(const QString &program)
{
const FilePath programFilePath = resolve(m_setup->m_workingDirectory,
const FilePath programFilePath = resolve(m_setup.m_workingDirectory,
FilePath::fromString(program));
if (programFilePath.exists() && programFilePath.isExecutableFile())
return true;
@@ -370,19 +370,19 @@ private:
void doDefaultStart(const QString &program, const QStringList &arguments) final
{
ProcessStartHandler *handler = m_process->processStartHandler();
handler->setProcessMode(m_setup->m_processMode);
handler->setWriteData(m_setup->m_writeData);
if (m_setup->m_belowNormalPriority)
handler->setProcessMode(m_setup.m_processMode);
handler->setWriteData(m_setup.m_writeData);
if (m_setup.m_belowNormalPriority)
handler->setBelowNormalPriority();
handler->setNativeArguments(m_setup->m_nativeArguments);
m_process->setProcessEnvironment(m_setup->m_environment.toProcessEnvironment());
m_process->setWorkingDirectory(m_setup->m_workingDirectory.path());
m_process->setStandardInputFile(m_setup->m_standardInputFile);
if (m_setup->m_lowPriority)
handler->setNativeArguments(m_setup.m_nativeArguments);
m_process->setProcessEnvironment(m_setup.m_environment.toProcessEnvironment());
m_process->setWorkingDirectory(m_setup.m_workingDirectory.path());
m_process->setStandardInputFile(m_setup.m_standardInputFile);
if (m_setup.m_lowPriority)
m_process->setLowPriority();
if (m_setup->m_unixTerminalDisabled)
if (m_setup.m_unixTerminalDisabled)
m_process->setUnixTerminalDisabled();
m_process->setUseCtrlCStub(m_setup->m_useCtrlCStub);
m_process->setUseCtrlCStub(m_setup.m_useCtrlCStub);
m_process->start(program, arguments, handler->openMode());
handler->handleProcessStart();
}
@@ -425,7 +425,7 @@ public:
ProcessLauncherImpl() : m_token(uniqueToken())
{
m_handle = LauncherInterface::registerHandle(this, token());
m_handle->setProcessSetupData(m_setup);
m_handle->setProcessSetupData(&m_setup);
connect(m_handle, &CallerHandle::started,
this, &ProcessInterface::started);
connect(m_handle, &CallerHandle::readyRead,
@@ -451,7 +451,7 @@ private:
m_handle->kill();
break;
case ControlSignal::Interrupt:
if (m_setup->m_useCtrlCStub) // bypass launcher and interrupt directly
if (m_setup.m_useCtrlCStub) // bypass launcher and interrupt directly
ProcessHelper::interruptPid(m_handle->processId());
break;
case ControlSignal::KickOff:
@@ -799,9 +799,9 @@ void QtcProcess::start()
QTC_ASSERT(processImpl, return);
d->clearForRun();
d->setProcessInterface(processImpl);
*d->m_process->m_setup = d->m_setup;
d->m_process->m_setup->m_commandLine = d->fullCommandLine();
d->m_process->m_setup->m_environment = d->fullEnvironment();
d->m_process->m_setup = d->m_setup;
d->m_process->m_setup.m_commandLine = d->fullCommandLine();
d->m_process->m_setup.m_environment = d->fullEnvironment();
if (processLog().isDebugEnabled()) {
// Pass a dynamic property with info about blocking type
d->m_process->setProperty(QTC_PROCESS_BLOCKING_TYPE, property(QTC_PROCESS_BLOCKING_TYPE));