┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSebastian Trueg <[email protected]>2009-04-28 10:10:20 +0000
committerSebastian Trueg <[email protected]>2009-04-28 10:10:20 +0000
commit3e6bcdde69a561b8937bb963038c1a22b966d285 (patch)
treef9ccdecfb0735560566211c29715336990092f66 /src
parentf8e5a0064ce5f47ad320d0bd4e7ade4c5f64ea00 (diff)
Gracefully end the metadata loading thread. This should fix
BUG: 190165 svn path=/trunk/KDE/kdebase/apps/; revision=960318
Diffstat (limited to 'src')
-rw-r--r--src/panels/information/metadatawidget.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/panels/information/metadatawidget.cpp b/src/panels/information/metadatawidget.cpp
index a634f249c..c7f374093 100644
--- a/src/panels/information/metadatawidget.cpp
+++ b/src/panels/information/metadatawidget.cpp
@@ -87,6 +87,7 @@ public:
{
public:
LoadFilesThread(SharedData* sharedData, QMutex* mutex);
+ ~LoadFilesThread();
void setFiles(const KUrl::List& urls);
virtual void run();
@@ -94,6 +95,7 @@ public:
SharedData* m_sharedData;
QMutex* m_mutex;
KUrl::List m_urls;
+ bool m_canceled;
};
LoadFilesThread* loadFilesThread;
@@ -115,6 +117,14 @@ MetaDataWidget::Private::LoadFilesThread::LoadFilesThread(
{
}
+MetaDataWidget::Private::LoadFilesThread::~LoadFilesThread()
+{
+ // this thread may very well be deleted during execution. We need
+ // to protect it from crashes here
+ m_canceled = true;
+ wait();
+}
+
void MetaDataWidget::Private::LoadFilesThread::setFiles(const KUrl::List& urls)
{
QMutexLocker locker( m_mutex );
@@ -133,6 +143,8 @@ void MetaDataWidget::Private::LoadFilesThread::run()
unsigned int rating = 0;
QString comment;
Q_FOREACH( const KUrl &url, urls ) {
+ if ( m_canceled )
+ return;
Nepomuk::Resource file( url, Soprano::Vocabulary::Xesam::File() );
files.insert( url, file );
fileRes.append( file );