backport - prevents deadlock (deferredRun)

CCBUG: 181057

svn path=/branches/KDE/4.2/kdelibs/; revision=934418
This commit is contained in:
Jacopo De Simoi 2009-03-03 02:08:31 +00:00
parent d18c772f29
commit 186416f391

View File

@ -287,8 +287,9 @@ public:
FindMatchesJob *runJob = static_cast<FindMatchesJob*>(job);
if (deferredRun.isEnabled() && runJob->runner() == deferredRun.runner()) {
//kDebug() << "job actually done, running now **************";
deferredRun.run(context);
deferredRun = QueryMatch(0);
QueryMatch tmpRun = deferredRun;
deferredRun = QueryMatch(0);
tmpRun.run(context);
}
searchJobs.removeAll(runJob);
delete runJob;
@ -382,10 +383,12 @@ void RunnerManager::run(const QueryMatch &match)
}
}
match.run(d->context);
if (d->deferredRun.isValid()) {
d->deferredRun = QueryMatch(0);
match.run(d->context);
}
}
@ -507,8 +510,9 @@ void RunnerManager::reset()
if (d->deferredRun.isEnabled()) {
//kDebug() << "job actually done, running now **************";
d->deferredRun.run(d->context);
QueryMatch tmpRun = d->deferredRun;
d->deferredRun = QueryMatch(0);
tmpRun.run(d->context);
}
d->context.reset();