Use memcpy/memmove instead of loop operations

Signed-off-by: Thilo Schulz <thilo@tjps.eu>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Thilo Schulz 2015-02-01 15:58:36 +01:00 committed by Peter Hutterer
parent 867a237c55
commit 7571dc49e5

View file

@ -193,22 +193,21 @@ queue_peek(struct libevdev *dev, size_t idx, struct input_event *ev)
static inline int
queue_shift_multiple(struct libevdev *dev, size_t n, struct input_event *ev)
{
size_t i;
size_t remaining;
if (dev->queue_next == 0)
return 0;
n = min(n, dev->queue_next);
remaining = dev->queue_next;
n = min(n, remaining);
remaining -= n;
if (ev) {
for (i = 0; i < n; i++)
ev[i] = dev->queue[i];
}
if (ev)
memcpy(ev, dev->queue, n * sizeof(*ev));
for (i = 0; i < dev->queue_next - n; i++)
dev->queue[i] = dev->queue[n + i];
memmove(dev->queue, &dev->queue[n], remaining * sizeof(*dev->queue));
dev->queue_next -= n;
dev->queue_next = remaining;
return n;
}