From e87ef3b22057ab391dc051c20667ba5d69888723 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Wed, 5 Oct 2016 07:12:23 -0400 Subject: Add a couple more fixes/bypasses to the start-lumina-desktop routine. 1) Make sure when re-calling with xinit, that the full path of the binary is used 2) When starting the desktop, try to detect/launch a temporary dbus session so that Qt can function properly without crashing. --- src-qt5/core/lumina-session/main.cpp | 6 ++++-- src-qt5/core/lumina-session/session.cpp | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src-qt5/core/lumina-session') diff --git a/src-qt5/core/lumina-session/main.cpp b/src-qt5/core/lumina-session/main.cpp index 464302a7..24d32c52 100644 --- a/src-qt5/core/lumina-session/main.cpp +++ b/src-qt5/core/lumina-session/main.cpp @@ -33,8 +33,10 @@ int main(int argc, char ** argv) QString disp = QString(getenv("DISPLAY")).simplified(); if(disp.isEmpty()){ //No X session found. Go ahead and re-init this binary within an xinit call - QStringList args; args << QCoreApplication::applicationFilePath(); - if(LUtils::isValidBinary("x11vnc")){ args << "--" << "-listen" << "tcp"; } //need to be able to VNC into this session + QString prog = QCoreApplication::applicationFilePath().section("/",-1); + LUtils::isValidBinary(prog); //will adjust the path to be absolute + QStringList args; args << prog; + //if(LUtils::isValidBinary("x11vnc")){ args << "--" << "-listen" << "tcp"; } //need to be able to VNC into this session return QProcess::execute("xinit", args); } //Setup any initialization values diff --git a/src-qt5/core/lumina-session/session.cpp b/src-qt5/core/lumina-session/session.cpp index 937f05d0..20c55ec4 100644 --- a/src-qt5/core/lumina-session/session.cpp +++ b/src-qt5/core/lumina-session/session.cpp @@ -11,6 +11,8 @@ #include #include #include +#include + #include #include @@ -56,6 +58,13 @@ void LSession::startProcess(QString ID, QString command, QStringList watchfiles) proc->setProcessChannelMode(QProcess::MergedChannels); proc->setProcessEnvironment( QProcessEnvironment::systemEnvironment() ); proc->setStandardOutputFile(logfile); + if(ID=="runtime"){ + //Bypass for a hidden dbus requirement for Qt itself (Qt 5.5.1) + QDir tmp = QDir::temp(); + if( tmp.entryList(QStringList() << "dbus-*").isEmpty() && LUtils::isValidBinary("dbus-launch")){ + command.prepend("dbus-launch --exit-with-session "); + } + } proc->start(command, QIODevice::ReadOnly); connect(proc, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(procFinished()) ); PROCS << proc; -- cgit