Esempio n. 1
0
void ProcessForker::_launch(const QString& command, const QString& workingDir,
                            const QStringList& env)
{
    for (const auto& var : env)
    {
        // Know Qt bug: QProcess::setProcessEnvironment() does not work with
        // startDetached(). Calling qputenv() directly as a workaround.
        const auto kv = var.split("=");
        if (kv.length() == 2 &&
            !qputenv(kv[0].toLocal8Bit().constData(), kv[1].toLocal8Bit()))
        {
            print_log(LOG_ERROR, LOG_GENERAL, "Setting %s ENV variable failed.",
                      var.toLocal8Bit().constData());
        }
    }

    // forcefully disable touch point compression to ensure every touch point
    // update is received on the QML side (e.g. necessary for the whiteboard).
    // See undocumented QML_NO_TOUCH_COMPRESSION env variable in
    // <qt5-source>/qtdeclarative/src/quick/items/qquickwindow.cpp
    qputenv("QML_NO_TOUCH_COMPRESSION", "1");

    auto process = new QProcess();
    process->setWorkingDirectory(workingDir);
    process->startDetached(command);
}
Esempio n. 2
0
//virtual 
void COsProcess::Execute( bool detached )	//detached = false 
{
    if ( detached )
        startDetached( mCmdLine.c_str() );
    else
        start( mCmdLine.c_str() );
}
Esempio n. 3
0
// static
int KProcess::startDetached(const QStringList &argv)
{
    QStringList args = argv;
    QString prog = args.takeFirst();
    return startDetached(prog, args);
}
Esempio n. 4
0
bool Common::startDetached( const QString &program )
{ return startDetached( program, QStringList() ); }