summaryrefslogtreecommitdiffstats
path: root/src/xsession.cpp
diff options
context:
space:
mode:
authorJohann Latocha2011-03-01 01:52:37 +0100
committerJohann Latocha2011-03-01 01:52:37 +0100
commitab473de90a2d884c517f48f5921b9a82b1270aad (patch)
tree80b65795681928ad985365a49a8c5176e7a05479 /src/xsession.cpp
parentFix for issue #781 (diff)
downloadvmchooser-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.cpp12
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);