Paste P539

Masterwork From Distant Lands
ActivePublic

Authored by davidedmundson on Feb 4 2020, 5:58 PM.
commit 8fe93a6b803e4710bf7329305d407f297433d805
Author: David Edmundson <kde@davidedmundson.co.uk>
Date: Tue Feb 4 17:57:54 2020 +0000
Remove nested event loop
diff --git a/src/backends/polkit-1/Polkit1Backend.cpp b/src/backends/polkit-1/Polkit1Backend.cpp
index 170e646..1bcf730 100644
--- a/src/backends/polkit-1/Polkit1Backend.cpp
+++ b/src/backends/polkit-1/Polkit1Backend.cpp
@@ -61,7 +61,6 @@ PolkitQt1::Authority::Result PolkitResultEventLoop::result() const
Polkit1Backend::Polkit1Backend()
: AuthBackend()
- , m_flyingActions(false)
{
setCapabilities(AuthorizeFromHelperCapability | CheckActionExistenceCapability | PreAuthActionCapability);
@@ -70,12 +69,9 @@ Polkit1Backend::Polkit1Backend()
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();
+ updateCachedActions();
}
Polkit1Backend::~Polkit1Backend()
@@ -120,13 +116,13 @@ void Polkit1Backend::preAuthAction(const QString &action, QWidget *parent)
}
}
-void Polkit1Backend::updateCachedActions(const PolkitQt1::ActionDescription::List &actions)
+void Polkit1Backend::updateCachedActions()
{
m_knownActions.clear();
+ const PolkitQt1::ActionDescription::List actions = PolkitQt1::Authority::instance()->enumerateActionsSync();
for (const PolkitQt1::ActionDescription &action : actions) {
m_knownActions << action.actionId();
}
- m_flyingActions = false;
}
Action::AuthStatus Polkit1Backend::authorizeAction(const QString &action)
@@ -207,34 +203,11 @@ void Polkit1Backend::checkForResultChanged()
emit actionStatusChanged(action, *it);
}
}
-
- // Force updating known actions
- PolkitQt1::Authority::instance()->enumerateActions();
- m_flyingActions = true;
+ updateCachedActions();
}
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);
}
diff --git a/src/backends/polkit-1/Polkit1Backend.h b/src/backends/polkit-1/Polkit1Backend.h
index bfa50b2..2c9872a 100644
--- a/src/backends/polkit-1/Polkit1Backend.h
+++ b/src/backends/polkit-1/Polkit1Backend.h
@@ -55,12 +55,11 @@ public:
private Q_SLOTS:
void checkForResultChanged();
- void updateCachedActions(const PolkitQt1::ActionDescription::List &actions);
+ void updateCachedActions();
private:
QHash<QString, Action::AuthStatus> m_cachedResults;
QStringList m_knownActions;
- bool m_flyingActions;
};
class PolkitResultEventLoop : public QEventLoop
davidedmundson edited the content of this paste. (Show Details)Feb 4 2020, 5:58 PM
davidedmundson changed the title of this paste from untitled to Masterwork From Distant Lands.