diff options
author | Julien Danjou <julien@danjou.info> | 2009-01-28 15:53:56 +0100 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2009-04-03 12:57:27 +0200 |
commit | 2d948c85bab1f48dd2aedf429f419c8839e0e18b (patch) | |
tree | 03f08d95873e8c64c229224233d4c31a1b865747 | |
parent | 9ccb7ee032a0cfe160cbbd70aa61ec9f7780efce (diff) | |
download | startup-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.c | 63 |
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); |