┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/private/kdirectorycontentscounter.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2014-05-13 18:42:05 +0200
committerFrank Reininghaus <[email protected]>2014-05-13 18:42:05 +0200
commit4cf04b91dd8804f2536fc31ae2f1b486bfc8cf9c (patch)
tree75aee505fe55fabedf33fa202cc4b4e4f6481a71 /src/kitemviews/private/kdirectorycontentscounter.cpp
parent7e92abb4ea2c2b269d21973bc9f2e76da5fb9114 (diff)
parent5780fab172e02c3dd44082aa10d37cd87a98e29b (diff)
Merge remote-tracking branch 'origin/master' into frameworks
Since the master branch had never been merged into frameworks since the creation of the frameworks branch, I had to fix a couple of merge conflicts and make another change in order to make it build - I hope I did not get anything wrong. We should probably merge master into frameworks on a regular basis from now on. CCMAIL:[email protected] Conflicts: dolphin/src/dolphinmainwindow.cpp dolphin/src/search/dolphinfacetswidget.cpp dolphin/src/statusbar/dolphinstatusbar.cpp dolphin/src/views/dolphinview.cpp
Diffstat (limited to 'src/kitemviews/private/kdirectorycontentscounter.cpp')
-rw-r--r--src/kitemviews/private/kdirectorycontentscounter.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/kitemviews/private/kdirectorycontentscounter.cpp b/src/kitemviews/private/kdirectorycontentscounter.cpp
index 0e43dea2e..cd448e233 100644
--- a/src/kitemviews/private/kdirectorycontentscounter.cpp
+++ b/src/kitemviews/private/kdirectorycontentscounter.cpp
@@ -60,14 +60,23 @@ KDirectoryContentsCounter::~KDirectoryContentsCounter()
{
--m_workersCount;
- if (m_workersCount == 0) {
+ if (m_workersCount > 0) {
+ // The worker thread will continue running. It could even be running
+ // a method of m_worker at the moment, so we delete it using
+ // deleteLater() to prevent a crash.
+ m_worker->deleteLater();
+ } else {
+ // There are no remaining workers -> stop the worker thread.
m_workerThread->quit();
m_workerThread->wait();
delete m_workerThread;
m_workerThread = 0;
- }
- delete m_worker;
+ // The worker thread has finished running now, so it's safe to delete
+ // m_worker. deleteLater() would not work at all because the event loop
+ // which would deliver the event to m_worker is not running any more.
+ delete m_worker;
+ }
}
void KDirectoryContentsCounter::addDirectory(const QString& path)