plasma: drop unused runners matching feature

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-04-17 00:49:17 +03:00
parent 3f4425e9bb
commit a179fd4603
5 changed files with 22 additions and 99 deletions

View file

@ -97,10 +97,6 @@ void AbstractRunner::performMatch(Plasma::RunnerContext &localContext)
static const int reasonableRunTime = 1500;
static const int fastEnoughTime = 250;
if (d->suspendMatching) {
return;
}
QElapsedTimer time;
time.restart();
@ -256,27 +252,12 @@ void AbstractRunner::init()
reloadConfiguration();
}
bool AbstractRunner::isMatchingSuspended() const
{
return d->suspendMatching;
}
void AbstractRunner::suspendMatching(bool suspend)
{
if (d->suspendMatching == suspend) {
return;
}
d->suspendMatching = suspend;
emit matchingSuspended(suspend);
}
AbstractRunnerPrivate::AbstractRunnerPrivate(AbstractRunner *r)
: priority(AbstractRunner::NormalPriority),
speed(AbstractRunner::NormalSpeed),
blackListed(0),
runner(r),
fastRuns(0),
suspendMatching(false)
fastRuns(0)
{
}

View file

@ -54,7 +54,6 @@ class AbstractRunnerPrivate;
class PLASMA_EXPORT AbstractRunner : public QObject
{
Q_OBJECT
Q_PROPERTY(bool matchingSuspended READ isMatchingSuspended WRITE suspendMatching NOTIFY matchingSuspended)
Q_PROPERTY(QString id READ id)
Q_PROPERTY(QString description READ description)
Q_PROPERTY(QString name READ name)
@ -205,13 +204,6 @@ class PLASMA_EXPORT AbstractRunner : public QObject
*/
QList<RunnerSyntax> syntaxes() const;
/**
* @return true if the runner is currently busy with non-interuptable work, signaling that
* new threads should not be created for it at this time
* @since 4.6
*/
bool isMatchingSuspended() const;
Q_SIGNALS:
/**
* This signal is emitted when matching is about to commence, giving runners
@ -232,13 +224,6 @@ class PLASMA_EXPORT AbstractRunner : public QObject
*/
void teardown();
/**
* Emitted when the runner enters or exits match suspension
* @see matchingSuspended
* @since 4.6
*/
void matchingSuspended(bool suspended);
protected:
friend class RunnerManager;
friend class RunnerManagerPrivate;
@ -247,12 +232,6 @@ class PLASMA_EXPORT AbstractRunner : public QObject
AbstractRunner(QObject *parent, const QVariantList &args);
/**
* Sets whether or not the runner is available for match requests. Useful to
* prevent more thread spawning when the thread is in a busy state.
*/
void suspendMatching(bool suspend);
/**
* Provides access to the runner's configuration object.
*/

View file

@ -42,7 +42,6 @@ public:
int fastRuns;
QHash<QString, QAction*> actions;
QList<RunnerSyntax> syntaxes;
bool suspendMatching;
};
} // namespace Plasma

View file

@ -32,7 +32,7 @@
#include <kservicetypetrader.h>
#include <kstandarddirs.h>
//#define MEASURE_PREPTIME
// #define MEASURE_PREPTIME
namespace Plasma
{
@ -44,10 +44,9 @@ namespace Plasma
class RunnerManagerPrivate
{
public:
RunnerManagerPrivate(RunnerManager *parent)
: q(parent),
threadPool(0),
: q(parent),
threadPool(nullptr),
prepped(false),
allRunnersPrepped(false),
teardownRequested(false)
@ -77,17 +76,6 @@ public:
emit q->matchesChanged(context.matches());
}
void loadConfiguration()
{
int maxThreads = QThread::idealThreadCount();
if (maxThreads < 0) {
maxThreads = 4;
}
kDebug() << "limiting runner threads to" << maxThreads;
//This entry allows to define a hard upper limit independent of the number of processors.
threadPool->setMaxThreadCount(maxThreads);
}
void loadRunners()
{
KPluginInfo::List offers = RunnerManager::listRunnerInfo();
@ -96,11 +84,10 @@ public:
QMutableListIterator<KPluginInfo> it(offers);
while (it.hasNext()) {
const KPluginInfo& description = it.next();
// kDebug() << "Loading runner: " << service->name() << service->storageId();
QString tryExec = description.property("TryExec").toString();
const QString tryExec = description.property("TryExec").toString();
// kDebug() << "TryExec is" << tryExec;
if (!tryExec.isEmpty() && KStandardDirs::findExe(tryExec).isEmpty()) {
// we don't actually have this application!
kWarning() << "Runner executable missing:" << tryExec;
continue;
}
@ -109,7 +96,7 @@ public:
const bool loaded = runners.contains(runnerName);
const bool selected = allowedRunners.contains(runnerName);
// kDebug() << loadAll << description.isPluginEnabled() << noWhiteList << whiteList.contains(runnerName);
// kDebug() << description.isPluginEnabled() << loaded << selected;
if (selected) {
if (!loaded) {
AbstractRunner *runner = loadInstalledRunner(description.service());
@ -119,9 +106,8 @@ public:
}
}
} else if (loaded) {
//Remove runner
deadRunners.insert(runners.take(runnerName));
kDebug() << "Removing runner: " << runnerName;
kDebug() << "Removing runner:" << runnerName;
}
}
@ -146,7 +132,6 @@ public:
kWarning() << "Failed to load runner:" << service->name() << ". error reported:" << error;
} else {
kDebug() << "================= loading runner:" << service->name() << "=================";
QObject::connect(runner, SIGNAL(matchingSuspended(bool)), q, SLOT(runnerMatchingSuspended(bool)));
QMetaObject::invokeMethod(runner, "init");
if (prepped) {
emit runner->prepare();
@ -180,27 +165,6 @@ public:
}
}
void runnerMatchingSuspended(bool suspended)
{
if (suspended || !prepped || teardownRequested) {
return;
}
AbstractRunner *runner = qobject_cast<AbstractRunner *>(q->sender());
if (runner) {
startJob(runner);
}
}
void startJob(AbstractRunner *runner)
{
if ((runner->ignoredTypes() & context.type()) == 0) {
FindMatchesJob *job = new FindMatchesJob(runner, &context);
threadPool->start(job);
}
}
RunnerManager *q;
RunnerContext context;
QTimer matchChangeTimer;
@ -220,7 +184,13 @@ RunnerManager::RunnerManager(QObject *parent)
: QObject(parent),
d(new RunnerManagerPrivate(this))
{
d->loadConfiguration();
int maxThreads = QThread::idealThreadCount();
if (maxThreads < 0) {
maxThreads = 4;
}
kDebug() << "limiting runner threads to" << maxThreads;
//This entry allows to define a hard upper limit independent of the number of processors.
d->threadPool->setMaxThreadCount(maxThreads);
}
RunnerManager::~RunnerManager()
@ -256,8 +226,7 @@ AbstractRunner* RunnerManager::runner(const QString &name) const
if (d->runners.isEmpty()) {
d->loadRunners();
}
return d->runners.value(name, 0);
return d->runners.value(name, nullptr);
}
QList<AbstractRunner *> RunnerManager::runners() const
@ -278,7 +247,6 @@ RunnerContext* RunnerManager::searchContext() const
return &d->context;
}
//Reordering is here so data is not reordered till strictly needed
QList<QueryMatch> RunnerManager::matches() const
{
return d->context.matches();
@ -303,17 +271,15 @@ QList<QAction*> RunnerManager::actionsForMatch(const QueryMatch &match)
if (runner) {
return runner->actionsForMatch(match);
}
return QList<QAction*>();
}
QMimeData * RunnerManager::mimeDataForMatch(const QString &id) const
QMimeData* RunnerManager::mimeDataForMatch(const QString &id) const
{
return mimeDataForMatch(d->context.match(id));
}
QMimeData * RunnerManager::mimeDataForMatch(const QueryMatch &match) const
QMimeData* RunnerManager::mimeDataForMatch(const QueryMatch &match) const
{
AbstractRunner *runner = match.runner();
QMimeData *mimeData;
@ -398,12 +364,11 @@ void RunnerManager::launchQuery(const QString &untrimmedTerm)
// kDebug() << "runners searching for" << term;
d->context.setQuery(term);
foreach (Plasma::AbstractRunner *r, d->runners) {
if (r->isMatchingSuspended()) {
continue;
foreach (Plasma::AbstractRunner *runner, d->runners) {
if ((runner->ignoredTypes() & d->context.type()) == 0) {
FindMatchesJob *job = new FindMatchesJob(runner, &d->context);
d->threadPool->start(job);
}
d->startJob(r);
}
}

View file

@ -204,7 +204,6 @@ class PLASMA_EXPORT RunnerManager : public QObject
private:
Q_PRIVATE_SLOT(d, void scheduleMatchesChanged())
Q_PRIVATE_SLOT(d, void matchesChanged())
Q_PRIVATE_SLOT(d, void runnerMatchingSuspended(bool))
RunnerManagerPrivate * const d;