Changeset View
Changeset View
Standalone View
Standalone View
src/kpackage/private/packagejob.cpp
Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Line(s) | |||||
79 | 79 | | |||
80 | void PackageJob::start() | 80 | void PackageJob::start() | ||
81 | { | 81 | { | ||
82 | d->thread->start(); | 82 | d->thread->start(); | ||
83 | } | 83 | } | ||
84 | 84 | | |||
85 | void PackageJob::install(const QString &src, const QString &dest) | 85 | void PackageJob::install(const QString &src, const QString &dest) | ||
86 | { | 86 | { | ||
87 | | ||||
88 | connect(d->thread, &PackageJobThread::finished, this, [=](bool ok, const QString &error) { | | |||
89 | if (ok) { | | |||
90 | const QString pluginId = d->package->metadata().pluginId(); | 87 | const QString pluginId = d->package->metadata().pluginId(); | ||
91 | const QStringList serviceTypes = d->package->metadata().serviceTypes(); | 88 | const QStringList serviceTypes = d->package->metadata().serviceTypes(); | ||
89 | //d-package can become dangling during the job if deleted externally | ||||
90 | connect(d->thread, &PackageJobThread::finished, this, [=](bool ok, const QString &error) { | ||||
91 | if (ok) { | ||||
92 | for (auto& packageType: serviceTypes) { | 92 | for (auto& packageType: serviceTypes) { | ||
93 | auto msg = QDBusMessage::createSignal(QStringLiteral("/KPackage/") + packageType, QStringLiteral("org.kde.plasma.kpackage"), QStringLiteral("packageInstalled")); | 93 | auto msg = QDBusMessage::createSignal(QStringLiteral("/KPackage/") + packageType, QStringLiteral("org.kde.plasma.kpackage"), QStringLiteral("packageInstalled")); | ||
94 | msg.setArguments({pluginId}); | 94 | msg.setArguments({pluginId}); | ||
95 | QDBusConnection::sessionBus().send(msg); | 95 | QDBusConnection::sessionBus().send(msg); | ||
96 | } | 96 | } | ||
97 | } | 97 | } | ||
98 | slotFinished(ok, error); | 98 | slotFinished(ok, error); | ||
99 | }, Qt::QueuedConnection); | 99 | }, Qt::QueuedConnection); | ||
Show All 32 Lines |