diff options
author | Debarshi Ray <debarshir@freedesktop.org> | 2012-08-31 14:18:43 +0200 |
---|---|---|
committer | Debarshi Ray <debarshir@freedesktop.org> | 2013-01-09 15:32:59 +0100 |
commit | 7818d410e868a1bd8a42eb0de1a754387561cedc (patch) | |
tree | f3ad7169985a10aa7748b735910397fda0586b4b /telepathy-logger/log-manager.c | |
parent | d7302bd2c4ae43a962a293b53998bd03423adba4 (diff) | |
download | telepathy-logger-7818d410e868a1bd8a42eb0de1a754387561cedc.tar.gz |
log-walker: Run the filter synchronously in the walker
This ensures that the TplLogEventFilter is always run from the same
thread which invoked the walker. This is implemented by keeping track
of skipped events in the history instead of silently ignoring them
within the LogIters. This has the nice side effect that we do not need
to run the filter while rewinding.
Fixes: https://bugs.freedesktop.org/54270
Diffstat (limited to 'telepathy-logger/log-manager.c')
-rw-r--r-- | telepathy-logger/log-manager.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/telepathy-logger/log-manager.c b/telepathy-logger/log-manager.c index f3f1795..ede6d26 100644 --- a/telepathy-logger/log-manager.c +++ b/telepathy-logger/log-manager.c @@ -1202,16 +1202,14 @@ tpl_log_manager_walk_filtered_events (TplLogManager *manager, g_return_val_if_fail (TPL_IS_ENTITY (target), NULL); priv = manager->priv; - walker = tpl_log_walker_new (); + walker = tpl_log_walker_new (filter, filter_data); for (l = priv->readable_stores; l != NULL; l = g_list_next (l)) { TplLogStore *store = TPL_LOG_STORE (l->data); TplLogIter *iter; - iter = _tpl_log_store_create_iter (store, account, target, type_mask, - filter, filter_data); - + iter = _tpl_log_store_create_iter (store, account, target, type_mask); if (iter != NULL) tpl_log_walker_add_iter (walker, iter); } |