Killability of ImportProjectJob
Milian Wolff
mail at milianw.de
Sat Nov 20 17:00:04 UTC 2010
On Saturday 20 November 2010 17:50:31 Milian Wolff wrote:
> Hey all,
>
> currently the ImportProjectJob is not really interruptable. It has doKill
> that just waitForFinished which can easily lead to deadlocks nowadays,
> since we can import stuff from the background bug QMetaType::invokeMethod
> in the projectmodel then. E.g.:
btw, I just notice that this is probably only hit when I try this patch:
diff --git a/shell/project.cpp b/shell/project.cpp
index c8fbc53..877c4a9 100644
--- a/shell/project.cpp
+++ b/shell/project.cpp
@@ -237,9 +237,10 @@ public:
loading=false;
if(job->errorText().isEmpty()) {
- projCtrl->projectModel()->appendRow(topItem);
projCtrl->projectImportingFinished( project );
} else {
+ Q_ASSERT(topItem->index().isValid());
+ projCtrl->projectModel()->removeRow(topItem->row());
projCtrl->closeProject(project);
}
}
@@ -516,6 +517,7 @@ bool Project::open( const KUrl& projectFileUrl_ )
d->loadVersionControlPlugin(projectGroup);
d->progress->setBuzzy();
KJob* importJob = iface->createImportJob(d->topItem );
+ Core::self()->projectController()->projectModel()->appendRow(d->topItem);
connect( importJob, SIGNAL( result( KJob* ) ), this, SLOT( importDone(
KJob* ) ) );
Core::self()->runController()->registerJob( importJob );
return true;
Which would be an (imo) awesome addition to KDevelop. It didn't used to work
as items where added from random threads but now that they are always added
from the UI it just works™.
--
Milian Wolff
mail at milianw.de
http://milianw.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20101120/1ca76de5/attachment.sig>
More information about the KDevelop-devel
mailing list