summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2009-01-28 15:53:56 +0100
committerJulien Danjou <julien@danjou.info>2009-04-03 12:57:27 +0200
commit2d948c85bab1f48dd2aedf429f419c8839e0e18b (patch)
tree03f08d95873e8c64c229224233d4c31a1b865747
parent9ccb7ee032a0cfe160cbbd70aa61ec9f7780efce (diff)
downloadstartup-notification-2d948c85bab1f48dd2aedf429f419c8839e0e18b.tar.gz
Move message filling into message_set_message()
Signed-off-by: Julien Danjou <julien@danjou.info>
-rw-r--r--libsn/sn-xmessages.c63
1 files changed, 33 insertions, 30 deletions
diff --git a/libsn/sn-xmessages.c b/libsn/sn-xmessages.c
index f7f6b34..f862b81 100644
--- a/libsn/sn-xmessages.c
+++ b/libsn/sn-xmessages.c
@@ -306,16 +306,44 @@ message_new(Atom type_atom_begin, Window win)
return message;
}
+static sn_bool_t
+message_set_message(SnXmessage *message, const char *src)
+{
+ const char *src_end;
+ char *dest;
+ sn_bool_t completed = FALSE;
+
+ src_end = src + 20;
+
+ message->message = sn_realloc (message->message,
+ message->allocated + (src_end - src));
+ dest = message->message + message->allocated;
+ message->allocated += (src_end - src);
+
+ /* Copy bytes, be sure we get nul byte also */
+ while (src != src_end)
+ {
+ *dest = *src;
+
+ if (*src == '\0')
+ {
+ completed = TRUE;
+ break;
+ }
+
+ ++dest;
+ ++src;
+ }
+
+ return completed;
+}
+
static SnXmessage*
add_event_to_messages (SnDisplay *display,
XEvent *xevent)
{
FindMessageData fmd;
SnXmessage *message;
- const char *src;
- const char *src_end;
- char *dest;
- sn_bool_t completed;
SnList *pending_messages;
/* We don't want screwy situations to end up causing us to allocate
@@ -350,32 +378,7 @@ add_event_to_messages (SnDisplay *display,
return NULL;
}
- src = &xevent->xclient.data.b[0];
- src_end = src + 20;
-
- message->message = sn_realloc (message->message,
- message->allocated + (src_end - src));
- dest = message->message + message->allocated;
- message->allocated += (src_end - src);
-
- completed = FALSE;
-
- /* Copy bytes, be sure we get nul byte also */
- while (src != src_end)
- {
- *dest = *src;
-
- if (*src == '\0')
- {
- completed = TRUE;
- break;
- }
-
- ++dest;
- ++src;
- }
-
- if (completed)
+ if (message_set_message (message, &xevent->xclient.data.b[0]))
{
/* Pull message out of the pending queue and return it */
sn_list_remove (pending_messages, message);