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