diff options
author | Johann Latocha | 2011-03-01 01:52:37 +0100 |
---|---|---|
committer | Johann Latocha | 2011-03-01 01:52:37 +0100 |
commit | ab473de90a2d884c517f48f5921b9a82b1270aad (patch) | |
tree | 80b65795681928ad985365a49a8c5176e7a05479 /src/xsession.cpp | |
parent | Fix for issue #781 (diff) | |
download | vmchooser-ab473de90a2d884c517f48f5921b9a82b1270aad.tar.gz vmchooser-ab473de90a2d884c517f48f5921b9a82b1270aad.tar.xz vmchooser-ab473de90a2d884c517f48f5921b9a82b1270aad.zip |
[Fix] Startup problems with xsession (Quick&Dirty)
Diffstat (limited to 'src/xsession.cpp')
-rw-r--r-- | src/xsession.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/xsession.cpp b/src/xsession.cpp index a888e91..37fad17 100644 --- a/src/xsession.cpp +++ b/src/xsession.cpp @@ -65,6 +65,8 @@ bool XSession::init(const QString& filename) { this->comment_ = comment; this->icon_ = icon; + _process = new QProcess(); + return true; } @@ -99,16 +101,20 @@ QString XSession::icon() const { } bool XSession::run() const { - return QProcess::startDetached(this->exec_); + _process->start(this->exec_); + QObject::connect(_process, SIGNAL(finished(int, QProcess::ExitStatus)), QApplication::instance(), SLOT(quit())); + if (_process->state() == QProcess::Starting || QProcess::Running) + return true; + else + return false; } QList<Session*> XSession::readSessions(const QString& path) { QList<Session*> retval; foreach (QFileInfo fi, QDir(path).entryInfoList(QStringList("*.desktop"))) { - if (fi.baseName().compare("default.desktop") == 0) { + if (fi.baseName().compare("default") == 0) { continue; } - XSession* session = new XSession; if (session->init(fi.absoluteFilePath())) { retval.append(session); |