diff --git a/src/backends/polkit-1/Polkit1Backend.h b/src/backends/polkit-1/Polkit1Backend.h --- a/src/backends/polkit-1/Polkit1Backend.h +++ b/src/backends/polkit-1/Polkit1Backend.h @@ -55,12 +55,9 @@ private Q_SLOTS: void checkForResultChanged(); - void updateCachedActions(const PolkitQt1::ActionDescription::List &actions); private: QHash m_cachedResults; - QStringList m_knownActions; - bool m_flyingActions; }; class PolkitResultEventLoop : public QEventLoop diff --git a/src/backends/polkit-1/Polkit1Backend.cpp b/src/backends/polkit-1/Polkit1Backend.cpp --- a/src/backends/polkit-1/Polkit1Backend.cpp +++ b/src/backends/polkit-1/Polkit1Backend.cpp @@ -2,6 +2,7 @@ * Copyright (C) 2008 Nicola Gigante * Copyright (C) 2009 Radek Novacek * Copyright (C) 2009-2010 Dario Freddi +* Copyright (C) 2020 David Edmundson * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by @@ -61,21 +62,14 @@ Polkit1Backend::Polkit1Backend() : AuthBackend() - , m_flyingActions(false) { setCapabilities(AuthorizeFromHelperCapability | CheckActionExistenceCapability | PreAuthActionCapability); // Setup useful signals connect(PolkitQt1::Authority::instance(), SIGNAL(configChanged()), this, SLOT(checkForResultChanged())); connect(PolkitQt1::Authority::instance(), SIGNAL(consoleKitDBChanged()), this, SLOT(checkForResultChanged())); - connect(PolkitQt1::Authority::instance(), SIGNAL(enumerateActionsFinished(PolkitQt1::ActionDescription::List)), - this, SLOT(updateCachedActions(PolkitQt1::ActionDescription::List))); - - // Cache existing action IDs as soon as possible - m_flyingActions = true; - PolkitQt1::Authority::instance()->enumerateActions(); } Polkit1Backend::~Polkit1Backend() @@ -120,15 +114,6 @@ } } -void Polkit1Backend::updateCachedActions(const PolkitQt1::ActionDescription::List &actions) -{ - m_knownActions.clear(); - for (const PolkitQt1::ActionDescription &action : actions) { - m_knownActions << action.actionId(); - } - m_flyingActions = false; -} - Action::AuthStatus Polkit1Backend::authorizeAction(const QString &action) { Q_UNUSED(action) @@ -208,35 +193,11 @@ emit actionStatusChanged(action, *it); } } - - // Force updating known actions - PolkitQt1::Authority::instance()->enumerateActions(); - m_flyingActions = true; } bool Polkit1Backend::actionExists(const QString &action) { - auto authority = PolkitQt1::Authority::instance(); - if (m_flyingActions && authority->hasError()) { - // This can happen if enumerateActions call failed - qWarning() << "Encountered error while enumerating actions, error code:" << authority->lastError() << authority->errorDetails(); - authority->clearError(); - m_flyingActions = false; - } - - // Any flying actions? - if (m_flyingActions) { - int tries = 0; - while (m_flyingActions && tries < 10) { - // Wait max 2 seconds - QEventLoop e; - QTimer::singleShot(200, &e, SLOT(quit())); - e.exec(); - ++tries; - } - } - - return m_knownActions.contains(action); + return m_cachedResults.value(action) != Action::InvalidStatus; } } // namespace Auth