┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/statusbar/mountpointobserver.cpp18
-rw-r--r--src/statusbar/mountpointobserver.h6
-rw-r--r--src/views/dolphinview.cpp3
3 files changed, 20 insertions, 7 deletions
diff --git a/src/statusbar/mountpointobserver.cpp b/src/statusbar/mountpointobserver.cpp
index 67d341b3d..231ea72e7 100644
--- a/src/statusbar/mountpointobserver.cpp
+++ b/src/statusbar/mountpointobserver.cpp
@@ -8,8 +8,6 @@
#include "mountpointobservercache.h"
-#include <KIO/FileSystemFreeSpaceJob>
-
MountPointObserver::MountPointObserver(const QUrl &url, QObject *parent)
: QObject(parent)
, m_url(url)
@@ -17,6 +15,13 @@ MountPointObserver::MountPointObserver(const QUrl &url, QObject *parent)
{
}
+MountPointObserver::~MountPointObserver()
+{
+ if (m_pendingJob) {
+ m_pendingJob->kill(KJob::Quietly);
+ }
+}
+
MountPointObserver *MountPointObserver::observerForUrl(const QUrl &url)
{
MountPointObserver *observer = MountPointObserverCache::instance()->observerForUrl(url);
@@ -27,10 +32,13 @@ void MountPointObserver::update()
{
if (m_referenceCount == 0) {
delete this;
- } else {
- KIO::FileSystemFreeSpaceJob *job = KIO::fileSystemFreeSpace(m_url);
- connect(job, &KJob::result, this, &MountPointObserver::freeSpaceResult);
+ return;
+ }
+ if (m_pendingJob) {
+ m_pendingJob->kill(KJob::Quietly);
}
+ m_pendingJob = KIO::fileSystemFreeSpace(m_url);
+ connect(m_pendingJob, &KJob::result, this, &MountPointObserver::freeSpaceResult);
}
void MountPointObserver::freeSpaceResult(KJob *job)
diff --git a/src/statusbar/mountpointobserver.h b/src/statusbar/mountpointobserver.h
index 7c146c7a0..b2ca863e0 100644
--- a/src/statusbar/mountpointobserver.h
+++ b/src/statusbar/mountpointobserver.h
@@ -7,9 +7,10 @@
#ifndef MOUNTPOINTOBSERVER_H
#define MOUNTPOINTOBSERVER_H
-#include <KIO/Job>
+#include <KIO/FileSystemFreeSpaceJob>
#include <QObject>
+#include <QPointer>
#include <QUrl>
/**
@@ -41,7 +42,7 @@ class MountPointObserver : public QObject
Q_OBJECT
explicit MountPointObserver(const QUrl &url, QObject *parent = nullptr);
- ~MountPointObserver() override = default;
+ ~MountPointObserver() override;
public:
/**
@@ -90,6 +91,7 @@ private Q_SLOTS:
private:
const QUrl m_url;
int m_referenceCount;
+ QPointer<KIO::FileSystemFreeSpaceJob> m_pendingJob;
friend class MountPointObserverCache;
};
diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp
index 4747b5ecc..74c5ecd23 100644
--- a/src/views/dolphinview.cpp
+++ b/src/views/dolphinview.cpp
@@ -276,6 +276,9 @@ DolphinView::DolphinView(const QUrl &url, QWidget *parent)
DolphinView::~DolphinView()
{
+ if (m_statJobForStatusBarText) {
+ m_statJobForStatusBarText->kill(KJob::Quietly);
+ }
disconnect(m_container->controller(), &KItemListController::modelChanged, this, &DolphinView::slotModelChanged);
}