1. 24 Sep, 2012 1 commit
    • Philip Withnall's avatar
      telepathy: Always notify of persona changes when disconnecting · 0f078082
      Philip Withnall authored
      This reverts commit af500a4b and applies
      a different fix. The problem was that persona changes could get away without
      being notified when disconnecting due to an account being disabled. This
      is because, after storing the cache, an additional check is performed for
      whether the account was enabled. If it is, the cache is loaded (and persona
      changes notified). If not, the cache is not loaded, *and persona changes
      were not notified*.
      
      This situation could occur when a Telepathy account is disabled:
       1. _notify_connection_cb() is called, but the TpAccount::enabled property
          is still true.
       2. While in store_cache(), the TpAccount::enabled property goes false.
       3. The check before load_cache() would fail, so load_cache() would never
          be called.
      
      Similarly, it could occur when a Telepathy account is removed, with
      TpAccountManager:account-removed being emitted while in store_cache().
      
      Closes: https://bugzilla.gnome.org/show_bug.cgi?id=683390
      0f078082
  2. 18 Sep, 2012 1 commit
  3. 11 Sep, 2012 2 commits
  4. 10 Sep, 2012 1 commit
  5. 07 Sep, 2012 1 commit
  6. 06 Sep, 2012 3 commits
  7. 05 Sep, 2012 5 commits
  8. 28 Aug, 2012 2 commits
    • Philip Withnall's avatar
      Bug 682719 — eds test fails to compile · 2dcbc92f
      Philip Withnall authored
      Don’t use deprecated EDS API in the EDS tests. The replacement API doesn’t
      require a dependency version bump.
      
      Closes: https://bugzilla.gnome.org/show_bug.cgi?id=682719
      2dcbc92f
    • 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.
      4a59af5c
  9. 25 Aug, 2012 1 commit
  10. 23 Aug, 2012 1 commit
  11. 16 Aug, 2012 1 commit
  12. 15 Aug, 2012 1 commit
  13. 10 Aug, 2012 1 commit
  14. 31 Jul, 2012 1 commit
  15. 29 Jul, 2012 1 commit
  16. 23 Jul, 2012 2 commits
  17. 19 Jul, 2012 1 commit
    • Philip Withnall's avatar
      telepathy: Allow for updated Tpf.Personas properties to update the cache · 36ecd01a
      Philip Withnall authored
      Currently, the cache is only written when going offline, which means that any
      properties of Tpf.Personas which are updated at runtime aren’t written to the
      cache unless the client explicitly goes offline before being closed. This
      doesn’t often happen, meaning the property updates are lost and the cache
      becomes stale.
      
      This commit keeps track of the clean/dirty state of the cache and writes it
      out when PersonaStore.flush() is called. It also adds a new method,
      IndividualAggregator.unprepare(), which ensures all the persona stores handled
      by the aggregator are flushed. Clients should call this method before closing
      their main loop.
      
      (Calling flush() in the finalise function of the PersonaStore doesn’t work
      because Tpf.PersonaStores are often never finalised due to the implementation
      of Tpf.PersonaStore.dup_for_account(). Furthermore, calling flush() in the
      finalise function of the IndividualAggregator doesn’t work because the client
      will typically quit the main loop immediately afterwards, which will cancel
      the asynchronous flush call.)
      
      New API:
       • IndividualAggregator.unprepare()
      
      Helps: https://bugzilla.gnome.org/show_bug.cgi?id=660128
      36ecd01a
  18. 18 Jul, 2012 1 commit
  19. 16 Jul, 2012 1 commit
  20. 13 Jul, 2012 1 commit
  21. 11 Jul, 2012 1 commit
  22. 07 Jul, 2012 1 commit
    • Philip Withnall's avatar
      core: Add core anti-linking support · 1441ae9d
      Philip Withnall authored
      This adds the core of the anti-linking support, based around a new
      AntiLinkable interface. This will be implemented by Persona subclasses which
      can store anti-linking information (in the form of a set of Persona UIDs
      which the given Persona should never be linked to).
      
      This approach allows anti-linking information to be stored with the personas
      (presumably in the primary persona store) and thus it should be network
      transparent. i.e. Using folks on two different computers with a Google
      Contacts address book as primary should cause the anti-linking data to be
      shared.
      
      This also includes the necessary IndividualAggregator changes.
      
      Sadly, no unit tests are included.
      
      Closes: https://bugzilla.gnome.org/show_bug.cgi?id=629537
      1441ae9d
  23. 06 Jul, 2012 1 commit
  24. 03 Jul, 2012 1 commit
  25. 28 Jun, 2012 4 commits
  26. 27 Jun, 2012 1 commit
  27. 25 Jun, 2012 2 commits