summaryrefslogtreecommitdiff
path: root/telepathy-glib/debug-sender.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2010-09-10 12:26:25 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2010-09-10 12:28:26 +0100
commitde04a32dddb02f8080d7c8d67889a34440fc452f (patch)
tree3cf60df5d80a8c8f9171e98ee5a6c4f0a1fabed8 /telepathy-glib/debug-sender.c
parent440985d4b96bb86da114e1855dc402b7e9859702 (diff)
downloadtelepathy-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.c42
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));
}
/**