• 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
tpf-persona.vala 36.6 KB