diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2011-02-25 16:38:22 -0500 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.co.uk> | 2011-02-28 11:34:18 -0500 |
commit | 604bb98b6eb10cb17f5aa751557d3fafdb894d0e (patch) | |
tree | 81758222fcd1fdffa923a3fc166b6e1e9b800948 | |
parent | a5bc13981cecd0dee09e0ff1f0396c7ef10e3f23 (diff) | |
download | telepathy-logger-604bb98b6eb10cb17f5aa751557d3fafdb894d0e.tar.gz |
Fix _xml_get_filtered_events() to return num_events
This method would return more the num events, and the the multi-backend
code was fixing it auto-magically.
-rw-r--r-- | telepathy-logger/log-store-xml.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/telepathy-logger/log-store-xml.c b/telepathy-logger/log-store-xml.c index f2ba8b3..99e7f77 100644 --- a/telepathy-logger/log-store-xml.c +++ b/telepathy-logger/log-store-xml.c @@ -1299,27 +1299,25 @@ log_store_xml_get_filtered_events (TplLogStore *store, for (l = g_list_last (dates); l != NULL && i < num_events; l = g_list_previous (l)) { - GList *new_events, *n, *next; + GList *new_events, *n; /* FIXME: We should really restrict the event parsing to get only * the newest num_events. */ new_events = log_store_xml_get_events_for_date (store, account, target, type_mask, l->data); - n = new_events; - while (n != NULL) + n = g_list_last (new_events); + while (n != NULL && i < num_events) { - next = g_list_next (n); - if (filter != NULL && !filter (n->data, user_data)) + if (filter == NULL || filter (n->data, user_data)) { - g_object_unref (n->data); - new_events = g_list_delete_link (new_events, n); + events = g_list_prepend (events, g_object_ref (n->data)); + i++; } - else - i++; - n = next; + n = g_list_previous (n); } - events = g_list_concat (events, new_events); + g_list_foreach (new_events, (GFunc) g_object_unref, NULL); + g_list_free (new_events); } g_list_foreach (dates, (GFunc) g_date_free, NULL); |