Signed-off-by: Peter Hutterer <[EMAIL PROTECTED]> --- mi/mieq.c | 35 +++++++++++++++++------------------ 1 files changed, 17 insertions(+), 18 deletions(-)
diff --git a/mi/mieq.c b/mi/mieq.c index 971edf9..f0eec26 100644 --- a/mi/mieq.c +++ b/mi/mieq.c @@ -277,25 +277,24 @@ void CopyGetMasterEvent(DeviceIntPtr mdev, xEvent* original, xEvent** master, int count) { - if (count > 1) { - *master = xcalloc(count, sizeof(xEvent)); - if (!*master) - FatalError("[mi] No memory left for master event.\n"); - while(count--) - { - memcpy(&(*master)[count], &original[count], sizeof(xEvent)); - ChangeDeviceID(mdev, &(*master)[count]); - } - } else + int len = count * sizeof(xEvent); + xEvent *ev; + + /* Assumption: GenericEvents always have count 1 */ + + if (GEV(original)->type == GenericEvent) + len += GEV(original)->length * 4; + + ev = xalloc(len); + if (!ev) + FatalError("[mi] No memory left for master event.\n"); + memcpy(ev, original, len); + *master = ev; + + while(count--) { - int len = sizeof(xEvent); - if (original->u.u.type == GenericEvent) - len += GEV(original)->length * 4; - *master = xalloc(len); - if (!*master) - FatalError("[mi] No memory left for master event.\n"); - memcpy(*master, original, len); - ChangeDeviceID(mdev, *master); + ChangeDeviceID(mdev, ev); + ev++; } } -- 1.6.0.4 _______________________________________________ xorg mailing list xorg@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/xorg