diff --git a/plugins/notifications/notification.h b/plugins/notifications/notification.h --- a/plugins/notifications/notification.h +++ b/plugins/notifications/notification.h @@ -25,6 +25,7 @@ #include #include #include +#include #include @@ -89,6 +90,7 @@ bool m_closed; QString m_payloadHash; bool m_ready; + QPointer m_job; void parseNetworkPacket(const NetworkPacket& np); void loadIcon(const NetworkPacket& np); diff --git a/plugins/notifications/notification.cpp b/plugins/notifications/notification.cpp --- a/plugins/notifications/notification.cpp +++ b/plugins/notifications/notification.cpp @@ -134,14 +134,17 @@ void Notification::loadIcon(const NetworkPacket& np) { + if (m_job) + return; + m_ready = false; - FileTransferJob* job = np.createPayloadTransferJob(QUrl::fromLocalFile(m_iconPath)); - job->start(); + m_job = np.createPayloadTransferJob(QUrl::fromLocalFile(m_iconPath)); + m_job->start(); - connect(job, &FileTransferJob::result, this, [this, job]{ + connect(m_job, &FileTransferJob::result, this, [this]{ - if (job->error()) { - qCDebug(KDECONNECT_PLUGIN_NOTIFICATION) << "Error in FileTransferJob: " << job->errorString(); + if (m_job->error()) { + qCDebug(KDECONNECT_PLUGIN_NOTIFICATION) << "Error in FileTransferJob: " << m_job->errorString(); applyNoIcon(); } else { applyIcon();