1. 28 Aug, 2012 4 commits
    • Philip Withnall's avatar
      core: Support lazy initialisation of properties · 4a59af5c
      Philip Withnall authored
      Creating several HashSets and HashMultiMaps for every Individual turns
      out to be quite wasteful, especially when most of them will typically be
      empty (as address books are generally quite sparse on properties) and never
      accessed (since most clients don’t need local IDs or web service addresses).
      This commit delays initialisation of various multi-valued Individual
      properties to the first time they’re accessed, giving them a null value
      before that time. It preserves the existing API for Individual, i.e. the
      properties themselves remain non-nullable, and only the object members
      backing them become nullable.
      This does introduce a slight behaviour change, in that an Individual will
      now emit change notifications for a non-initialised multi-valued property if
      *any* of the Personas in the Individual emit a notification for that
      property. This is because the Individual can’t compare the current value of
      its property to the new one resulting from the change in the Persona’s
      property value to determine if a change has really occurred. Therefore the
      Individual makes a safe over-estimate and emits notifications which might
      be false positives.
      This shouldn’t be a problem: if a client is interested in the property,
      they will have already queried it and caused it to be initialised.
      Initialised properties have the same notification behaviour as before.
      If a client isn’t interested in the property, it won’t be connected to the
      property notifications anyway.
      This change roughly quarters the number of GObjects being created when
      opening folks-inspect with the Telepathy, key-file and EDS backends enabled
      and ~115 personas in the system.
    • Philip Withnall's avatar
    • Philip Withnall's avatar
      eds: Batch up emissions of personas-changed while starting up · 3e48d450
      Philip Withnall authored
      There’s no point in emitting personas-changed multiple times before the EDS
      persona store has reached quiescence — it just means the individual
      aggregator has to re-link more personas with each emission.
      This patch batches up emissions of personas-changed from the EDS persona
      store until is-quiescent is reached, then notifies about all personas in
      a single emission.
    • Philip Withnall's avatar
      eds: Remove unnecessary locking · 5df5c3f4
      Philip Withnall authored
      It didn’t achieve anything.
  2. 27 Aug, 2012 2 commits
  3. 25 Aug, 2012 6 commits
  4. 24 Aug, 2012 1 commit
  5. 23 Aug, 2012 2 commits
  6. 21 Aug, 2012 1 commit
  7. 16 Aug, 2012 2 commits
  8. 15 Aug, 2012 3 commits
  9. 14 Aug, 2012 5 commits
  10. 13 Aug, 2012 1 commit
  11. 12 Aug, 2012 2 commits
  12. 10 Aug, 2012 5 commits
  13. 09 Aug, 2012 6 commits