AgentManager: avoid recursion agentTypeAdded->readAgentTypes->agentTypeAdded

Review Request #124603 - Created Aug. 3, 2015 and submitted

David Faure
and the same with agent instances.
With 20 instances, this would make the dbus call agentInstances()
20 times, when getting the notification that akonadi is starting up
(so all processes are doing this at the same time, very bad for performance).

New solution: read agent types+instances at startup if Akonadi::Control is online,
otherwise when getting the notification that it is, or when getting the
signal that a type/instance was added. Always emit signals, but of course
when doing this from the constructor nobody is listening (no problem, fast).
The old code was using a different code path to avoid emitting signals for
the initially loaded types+instances, so the behavior is the same.

With debug output above the emit statements, I checked what was emitted before and after the patch, seems to be the same.
Tested the case where the app is up before akonadi is started, and the easier case where akonadi is up before the app.

Volker Krause
Daniel Vrátil
David Faure
Review request changed

Status: Closed (submitted)

Change Summary:

Submitted with commit 8adde213feee4e209e7b76aaa5f81d1093b09ba6 by Dan Vrátil on behalf of David Faure to branch Applications/15.08.