diff --git a/startkde/plasma-session/autostart.h b/startkde/plasma-session/autostart.h --- a/startkde/plasma-session/autostart.h +++ b/startkde/plasma-session/autostart.h @@ -23,15 +23,21 @@ #include #include -class AutoStartItem; +class AutoStartItem +{ +public: + QString name; + QString service; + QString startAfter; + int phase; +}; class AutoStart { public: AutoStart(); ~AutoStart(); - void loadAutoStartList(); QString startService(); void setPhase(int phase); void setPhaseDone(); @@ -45,6 +51,7 @@ } private: + void loadAutoStartList(); QVector m_startList; QStringList m_started; int m_phase; diff --git a/startkde/plasma-session/autostart.cpp b/startkde/plasma-session/autostart.cpp --- a/startkde/plasma-session/autostart.cpp +++ b/startkde/plasma-session/autostart.cpp @@ -23,19 +23,10 @@ #include #include -class AutoStartItem -{ -public: - QString name; - QString service; - QString startAfter; - int phase; -}; -Q_DECLARE_TYPEINFO(AutoStartItem, Q_MOVABLE_TYPE); - AutoStart::AutoStart() : m_phase(-1), m_phasedone(false) { + loadAutoStartList(); } AutoStart::~AutoStart() diff --git a/startkde/plasma-session/startup.h b/startkde/plasma-session/startup.h --- a/startkde/plasma-session/startup.h +++ b/startkde/plasma-session/startup.h @@ -77,7 +77,7 @@ { Q_OBJECT public: - AutoStartAppsJob(int phase); + AutoStartAppsJob(const AutoStart &autoStart, int phase); void start() override; private: AutoStart m_autoStart; diff --git a/startkde/plasma-session/startup.cpp b/startkde/plasma-session/startup.cpp --- a/startkde/plasma-session/startup.cpp +++ b/startkde/plasma-session/startup.cpp @@ -66,8 +66,9 @@ { Q_OBJECT public: - Phase(QObject *parent): - KCompositeJob(parent) + Phase(const AutoStart &autostart, QObject *parent) + : KCompositeJob(parent) + , m_autostart(autostart) {} bool addSubjob(KJob *job) override { @@ -82,17 +83,20 @@ emitResult(); } } + +protected: + const AutoStart m_autostart; }; class StartupPhase0: public Phase { Q_OBJECT public: - StartupPhase0(QObject *parent) : Phase(parent) + StartupPhase0(const AutoStart& autostart, QObject *parent) : Phase(autostart, parent) {} void start() override { qCDebug(PLASMA_SESSION) << "Phase 0"; - addSubjob(new AutoStartAppsJob(0)); + addSubjob(new AutoStartAppsJob(m_autostart, 0)); addSubjob(new KCMInitJob(1)); addSubjob(new SleepJob()); } @@ -102,26 +106,26 @@ { Q_OBJECT public: - StartupPhase1(QObject *parent) : Phase(parent) + StartupPhase1(const AutoStart& autostart, QObject *parent) : Phase(autostart, parent) {} void start() override { qCDebug(PLASMA_SESSION) << "Phase 1"; - addSubjob(new AutoStartAppsJob(1)); + addSubjob(new AutoStartAppsJob(m_autostart, 1)); } }; class StartupPhase2: public Phase { Q_OBJECT public: - StartupPhase2(QObject *parent) : Phase(parent) + StartupPhase2(const AutoStart& autostart, QObject *parent) : Phase(autostart, parent) {} void runUserAutostart(); bool migrateKDE4Autostart(const QString &folder); void start() override { qCDebug(PLASMA_SESSION) << "Phase 2"; - addSubjob(new AutoStartAppsJob(2)); + addSubjob(new AutoStartAppsJob(m_autostart, 2)); addSubjob(new KDEDInitJob()); addSubjob(new KCMInitJob(2)); runUserAutostart(); @@ -200,9 +204,11 @@ QDBusConnection::sessionBus().registerObject(QStringLiteral("/Startup"), QStringLiteral("org.kde.Startup"), this); QDBusConnection::sessionBus().registerService(QStringLiteral("org.kde.Startup")); - auto phase0 = new StartupPhase0(this); - auto phase1 = new StartupPhase1(this); - auto phase2 = new StartupPhase2(this); + const AutoStart autostart; + + auto phase0 = new StartupPhase0(autostart, this); + auto phase1 = new StartupPhase1(autostart, this); + auto phase2 = new StartupPhase2(autostart, this); auto restoreSession = new RestoreSessionJob(); // this includes starting kwin (currently) @@ -373,9 +379,9 @@ return true; } -AutoStartAppsJob::AutoStartAppsJob(int phase) +AutoStartAppsJob::AutoStartAppsJob(const AutoStart & autostart, int phase) + : m_autoStart(autostart) { - m_autoStart.loadAutoStartList(); //FIXME, share this between jobs m_autoStart.setPhase(phase); }