Hi, Gerd. > > if (!(s->mouse_status & MOUSE_STATUS_REMOTE) && > > - (s->common.queue.count < (PS2_QUEUE_SIZE - 16))) { > > + (s->common.queue.count < PS2_QUEUE_SIZE)) { > > To me this looks like an attempt to make sure the queue has enough space > for the whole mouse message. Message size is 3 or 4 bytes (depending on > mode), so I think we should make that "... < (PS2_QUEUE_SIZE-4)". > > > for(;;) { > > /* if not remote, send event. Multiple events are sent if > > too big deltas */ > > ... and move the check into the loop. Or, maybe even better, into the > ps2_mouse_send_packet() function. > Move the check into ps2_mouse_send_packet() is not a good idea. In that case, we cannot break the for loop except we change the return value of ps2_mouse_send_packet(). Maybe keep the original location is better, right?
Best regards, -Gonglei