Index: src/kuiserverjobtracker.cpp =================================================================== --- src/kuiserverjobtracker.cpp +++ src/kuiserverjobtracker.cpp @@ -72,6 +72,8 @@ << d->progressJobView.size() << "stalled jobs"; } + qDeleteAll(d->progressJobView); + delete d; } @@ -91,7 +93,7 @@ } QPointer jobWatch = job; - QDBusReply reply = serverProxy()->uiserver().requestView(appName, + QDBusReply reply = serverProxy()->uiserver()->requestView(appName, programIconName, job->capabilities()); @@ -303,7 +305,9 @@ } KSharedUiServerProxy::KSharedUiServerProxy() - : m_uiserver(QStringLiteral("org.kde.JobViewServer"), QStringLiteral("/JobViewServer"), QDBusConnection::sessionBus()) + : m_uiserver(new org::kde::JobViewServer(QStringLiteral("org.kde.JobViewServer"), + QStringLiteral("/JobViewServer"), + QDBusConnection::sessionBus())) { QDBusConnectionInterface *bus = QDBusConnection::sessionBus().interface(); if (!bus->isServiceRegistered(QStringLiteral("org.kde.JobViewServer"))) { @@ -318,13 +322,18 @@ } else { qCDebug(KJOBWIDGETS) << "kuiserver found"; } + + qAddPostRoutine([]() { + delete serverProxy->m_uiserver; + serverProxy->m_uiserver = nullptr; + }); } KSharedUiServerProxy::~KSharedUiServerProxy() { } -org::kde::JobViewServer &KSharedUiServerProxy::uiserver() +org::kde::JobViewServer *KSharedUiServerProxy::uiserver() { return m_uiserver; } Index: src/kuiserverjobtracker_p.h =================================================================== --- src/kuiserverjobtracker_p.h +++ src/kuiserverjobtracker_p.h @@ -36,10 +36,10 @@ KSharedUiServerProxy(); ~KSharedUiServerProxy(); - org::kde::JobViewServer &uiserver(); + org::kde::JobViewServer *uiserver(); private: - org::kde::JobViewServer m_uiserver; + org::kde::JobViewServer *m_uiserver; }; #endif