edsf: Avoid Gee.LinkedList in copy_contacts(_ids)
When we receive a signal that adds/removes/changes contacts, we get a list of the affectefd contacts (or their ID's). Since we process them at a separate point in time in the main loop, we have to make a copy to make sure that they're still around when being processed. The current way we do this, is by creating a `Gee.LinkedList`, and appending each entry at the end (note that appending an item is an O(1) operation in `Gee.LinkedList` since it keeps track of its last element). However, there's some problems with this approach: * Each time an element is added into the list, a little helper object (a `Node`) is allocated. This is yet again just another unnecessary allocation that we wish to avoid. * Iterating over any `Gee.Collection` gives you an owned reference to each element, meaning we do unnecessary copies or reference count fiddling. Most of these issues can be solved quite elegantly by using `GLib.GenericArray` (ie. `GPtrArray`), which will keep track of the owned references, but won't try to do anything fancy with it.
Showing with 14 additions and 11 deletions