diff options
author | Jesse Smith <jsmith@resonatingmedia.com> | 2015-10-28 11:30:26 -0300 |
---|---|---|
committer | Jesse Smith <jsmith@resonatingmedia.com> | 2015-10-28 11:30:26 -0300 |
commit | 502e261c1c5f2a98665a88b6b9a5a70ce0f122ad (patch) | |
tree | 0b35e3655bf29fc2e87594544cb6afc6f8a38e1f /libLumina | |
parent | Updated Linux dependencies (diff) | |
parent | Forcible remove the "tabBarAutoHide" property from the MainUI.ui file (5.4+ v... (diff) | |
download | lumina-502e261c1c5f2a98665a88b6b9a5a70ce0f122ad.tar.gz lumina-502e261c1c5f2a98665a88b6b9a5a70ce0f122ad.tar.bz2 lumina-502e261c1c5f2a98665a88b6b9a5a70ce0f122ad.zip |
Merge branch 'master' of https://github.com/pcbsd/lumina
Diffstat (limited to 'libLumina')
-rw-r--r-- | libLumina/LuminaUtils.cpp | 48 | ||||
-rw-r--r-- | libLumina/libLumina.pro | 2 |
2 files changed, 39 insertions, 11 deletions
diff --git a/libLumina/LuminaUtils.cpp b/libLumina/LuminaUtils.cpp index 7b13adb9..4bcc548a 100644 --- a/libLumina/LuminaUtils.cpp +++ b/libLumina/LuminaUtils.cpp @@ -15,39 +15,65 @@ #include <QDesktopWidget> #include <QImageReader> #include <QRegExp> +#include <QFuture> +#include <QtConcurrent> #include <LuminaOS.h> #include <LuminaThemes.h> #include <LuminaXDG.h> static QStringList fav; + +inline QStringList ProcessRun(QString cmd, QStringList args){ + //Assemble outputs + QStringList out; out << "1" << ""; //error code, string output + QProcess proc; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + env.insert("LANG", "C"); + env.insert("LC_MESSAGES", "C"); + proc.setProcessEnvironment(env); + proc.setProcessChannelMode(QProcess::MergedChannels); + if(args.isEmpty()){ + proc.start(cmd); + }else{ + proc.start(cmd,args); + } + while(!proc.waitForFinished(500)){ + if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal + } + out[0] = QString::number(proc.exitCode()); + out[1] = QString(proc.readAllStandardOutput()); + return out; +} //============= // LUtils Functions //============= QString LUtils::LuminaDesktopVersion(){ - return "0.8.7-Release"; + return "0.8.8-devel"; } int LUtils::runCmd(QString cmd, QStringList args){ - QProcess proc; + /*QProcess proc; proc.setProcessChannelMode(QProcess::MergedChannels); if(args.isEmpty()){ proc.start(cmd); }else{ proc.start(cmd, args); } - if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds + //if(!proc.waitForStarted(30000)){ return 1; } //process never started - max wait of 30 seconds while(!proc.waitForFinished(300)){ - if(proc.state() != QProcess::Running){ break; } //somehow missed the finished signal + if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal QCoreApplication::processEvents(); } int ret = proc.exitCode(); - return ret; + return ret;*/ + QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args); + return future.result()[0].toInt(); //turn it back into an integer return code } QStringList LUtils::getCmdOutput(QString cmd, QStringList args){ - QProcess proc; + /*QProcess proc; QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); env.insert("LANG", "C"); env.insert("LC_MESSAGES", "C"); @@ -58,13 +84,15 @@ QStringList LUtils::getCmdOutput(QString cmd, QStringList args){ }else{ proc.start(cmd,args); } - if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds - while(!proc.waitForFinished(500)){ - if(proc.state() != QProcess::Running){ break; } //somehow missed the finished signal + //if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds + while(!proc.waitForFinished(300)){ + if(proc.state() == QProcess::NotRunning){ break; } //somehow missed the finished signal QCoreApplication::processEvents(); } QStringList out = QString(proc.readAllStandardOutput()).split("\n"); - return out; + return out;*/ + QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args); + return future.result()[1].split("\n"); //Split the return message into lines } QStringList LUtils::readFile(QString filepath){ diff --git a/libLumina/libLumina.pro b/libLumina/libLumina.pro index 6fe81676..0a29325e 100644 --- a/libLumina/libLumina.pro +++ b/libLumina/libLumina.pro @@ -1,6 +1,6 @@ QT += core network -greaterThan(QT_MAJOR_VERSION, 4): QT += widgets x11extras multimedia +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets x11extras multimedia concurrent TARGET=LuminaUtils |