@@ -25,7 +25,8 @@
2525AccountsServiceDBusAdaptor::AccountsServiceDBusAdaptor(QObject* parent)
2626 : QObject(parent),
2727 m_accountsManager(nullptr),
28− m_users()
28+ m_users(),
29+ m_ignoreNextChanged(false)
2930{
3031 QDBusConnection connection = QDBusConnection::SM_BUSNAME();
3132 QDBusConnectionInterface *interface = connection.interface();
@@ -75,11 +76,19 @@ void AccountsServiceDBusAdaptor::propertiesChangedSlot(const QString &interface,
7576 combined.removeDuplicates();
7677
7778 Q_EMIT propertiesChanged(getUserForPath(message().path()), interface, combined);
79+
80+ // In case a non-builtin property changes, we're getting propertiesChanged *and* changed
81+ // As the generic changed requires asking back over DBus, it's quite slow to process.
82+ // We don't want to trigger that when we know it's not a built-in property change.
83+ m_ignoreNextChanged = true;
7884}
7985
8086void AccountsServiceDBusAdaptor::maybeChangedSlot()
8187{
82− Q_EMIT maybeChanged(getUserForPath(message().path()));
88+ if (!m_ignoreNextChanged) {
89+ Q_EMIT maybeChanged(getUserForPath(message().path()));
90+ }
91+ m_ignoreNextChanged = false;
8392}
8493
8594QString AccountsServiceDBusAdaptor::getUserForPath(const QString &path)