diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-09-10 12:26:25 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-09-10 12:28:26 +0100 |
commit | de04a32dddb02f8080d7c8d67889a34440fc452f (patch) | |
tree | 3cf60df5d80a8c8f9171e98ee5a6c4f0a1fabed8 /telepathy-glib/debug-sender.c | |
parent | 440985d4b96bb86da114e1855dc402b7e9859702 (diff) | |
download | telepathy-glib-de04a32dddb02f8080d7c8d67889a34440fc452f.tar.gz |
tp_debug_sender_add_message: separate into thread-safe and non-thread-safe
debug_message_new is now the thread-safe bit, and _tp_debug_sender_take
is not.
Diffstat (limited to 'telepathy-glib/debug-sender.c')
-rw-r--r-- | telepathy-glib/debug-sender.c | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/telepathy-glib/debug-sender.c b/telepathy-glib/debug-sender.c index 75aa2822f..70ff3566d 100644 --- a/telepathy-glib/debug-sender.c +++ b/telepathy-glib/debug-sender.c @@ -100,6 +100,7 @@ enum NUM_PROPERTIES }; +/* must be thread-safe */ static TpDebugLevel log_level_flags_to_debug_level (GLogLevelFlags level) { @@ -120,6 +121,7 @@ log_level_flags_to_debug_level (GLogLevelFlags level) return TP_DEBUG_LEVEL_DEBUG; } +/* must be thread-safe */ static DebugMessage * debug_message_new (GTimeVal *timestamp, const gchar *domain, @@ -350,6 +352,26 @@ tp_debug_sender_dup (void) return g_object_new (TP_TYPE_DEBUG_SENDER, NULL); } +static void +_tp_debug_sender_take (TpDebugSender *self, + DebugMessage *new_msg) +{ + if (g_queue_get_length (self->priv->messages) >= DEBUG_MESSAGE_LIMIT) + { + DebugMessage *old_head = + (DebugMessage *) g_queue_pop_head (self->priv->messages); + + debug_message_free (old_head); + } + + g_queue_push_tail (self->priv->messages, new_msg); + + if (self->priv->enabled) + { + tp_svc_debug_emit_new_debug_message (self, new_msg->timestamp, + new_msg->domain, new_msg->level, new_msg->string); + } +} /** * tp_debug_sender_add_message: @@ -372,24 +394,8 @@ tp_debug_sender_add_message (TpDebugSender *self, GLogLevelFlags level, const gchar *string) { - DebugMessage *new_msg; - - if (g_queue_get_length (self->priv->messages) >= DEBUG_MESSAGE_LIMIT) - { - DebugMessage *old_head = - (DebugMessage *) g_queue_pop_head (self->priv->messages); - - debug_message_free (old_head); - } - - new_msg = debug_message_new (timestamp, domain, level, string); - g_queue_push_tail (self->priv->messages, new_msg); - - if (self->priv->enabled) - { - tp_svc_debug_emit_new_debug_message (self, new_msg->timestamp, - domain, new_msg->level, string); - } + _tp_debug_sender_take (self, + debug_message_new (timestamp, domain, level, string)); } /** |