summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2013-01-08 17:08:46 +0100
committerAlexander Larsson <alexl@redhat.com>2013-01-08 18:05:06 +0100
commit6f910e5e02e49ac6612ae131c49ec410e774d002 (patch)
tree3a29b36b975af2a3701735b25846faac93f6f90c
parentc83d35d1dfb0e655c4c327b0780e80127afebd0d (diff)
downloadgtk+-6f910e5e02e49ac6612ae131c49ec410e774d002.tar.gz
broadway: Clean up broadwayd event sending code
Use the right size and put the client serial in the right place.
-rw-r--r--gdk/broadway/broadwayd.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/gdk/broadway/broadwayd.c b/gdk/broadway/broadwayd.c
index ac100be6f4..14f884487c 100644
--- a/gdk/broadway/broadwayd.c
+++ b/gdk/broadway/broadwayd.c
@@ -600,10 +600,12 @@ broadway_events_got_input (BroadwayInputMsg *message,
guint32 daemon_serial;
size = get_event_size (message->base.type);
+ g_assert (sizeof (BroadwayReplyBase) + size <= sizeof (BroadwayReplyEvent));
+ memset (&reply_event, 0, sizeof (BroadwayReplyEvent));
daemon_serial = message->base.serial;
- reply_event.msg = *message;
+ memcpy (&reply_event.msg, message, size);
for (l = clients; l != NULL; l = l->next)
{
@@ -612,10 +614,10 @@ broadway_events_got_input (BroadwayInputMsg *message,
if (client_id == -1 ||
client->id == client_id)
{
- message->base.serial = get_client_serial (client, daemon_serial);
+ reply_event.msg.base.serial = get_client_serial (client, daemon_serial);
send_reply (client, NULL, (BroadwayReply *)&reply_event,
- sizeof (BroadwayReplyBase) + size,
+ G_STRUCT_OFFSET (BroadwayReplyEvent, msg) + size,
BROADWAY_REPLY_EVENT);
}
}