From 8fbb88475517cb055617ba375c8f0747f6f646e7 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 6 Nov 2009 16:27:19 +0000 Subject: Fixed issues when several LoadItemStatesThreads access one plugin or when the VersionControlObserver is deleted during thread execution. svn path=/trunk/KDE/kdebase/apps/; revision=1045694 --- src/versioncontrol/versioncontrolobserver.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/versioncontrol/versioncontrolobserver.cpp') diff --git a/src/versioncontrol/versioncontrolobserver.cpp b/src/versioncontrol/versioncontrolobserver.cpp index aea60b28d..9e52d1f51 100644 --- a/src/versioncontrol/versioncontrolobserver.cpp +++ b/src/versioncontrol/versioncontrolobserver.cpp @@ -75,9 +75,16 @@ VersionControlObserver::~VersionControlObserver() if (m_updateItemStatesThread != 0) { disconnect(m_updateItemStatesThread, SIGNAL(finished()), this, SLOT(applyUpdatedItemStates())); - m_updateItemStatesThread->deleteWhenFinished(); + if (m_updateItemStatesThread->isFinished()) { + delete m_updateItemStatesThread; + } else { + m_updateItemStatesThread->deleteWhenFinished(); + } m_updateItemStatesThread = 0; } + + m_plugin->disconnect(); + m_plugin = 0; } QList VersionControlObserver::contextMenuActions(const KFileItemList& items) const @@ -211,7 +218,7 @@ void VersionControlObserver::updateItemStates() { Q_ASSERT(m_plugin != 0); if (m_updateItemStatesThread == 0) { - m_updateItemStatesThread = new UpdateItemStatesThread(this); + m_updateItemStatesThread = new UpdateItemStatesThread(); connect(m_updateItemStatesThread, SIGNAL(finished()), this, SLOT(applyUpdatedItemStates())); } -- cgit v1.3