<div dir="ltr"><font size="4" style="color:rgb(0,0,0);font-family:Helvetica">Hi,</font><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4">I’m learning spice source code. And recently, when I used a drawing app I found some mouse input events were dropped. I tried to understand it from the code.</font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4">From code perspective, In inputs-channel.c, spice-gtk will check if<span class="gmail-Apple-converted-space"> </span><b>motion_count</b><span class="gmail-Apple-converted-space"> </span>is smaller than <span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">SPICE_INPUT_MOTION_ACK_BUNCH(</span><span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">(</span><span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">which is 4</span><span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">)</span><span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">) * 2. On spice-server, at </span><span style="color:rgb(111,66,193);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">on_mouse_motion()</span><span style="color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">, </span></font><font color="#032f62" face="Menlo, Monaco, Courier New, monospace" style="font-size:large"><span style="white-space:pre">on </span><span style="white-space:pre">every </span></font><span style="font-size:large;color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">SPICE_INPUT_MOTION_ACK_BUNCH</span><span style="font-size:large;color:rgb(3,47,98);font-family:Menlo,Monaco,"Courier New",monospace;white-space:pre">mouse motion events, server side sends a </span><font color="#24292e" face="Menlo, Monaco, Courier New, monospace" style="font-size:large"><span style="white-space:pre">RED_PIPE_ITEM_MOUSE_MOTION_ACK event to client. </span><span style="white-space:pre">And in</span></font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font color="#24292e" face="Menlo, Monaco, Courier New, monospace" size="4"><span style="white-space:pre">response, the client reduces <b>motion_count </b>by 4 and continues event sending. It seems that before the client response finishes, some events are dropped.</span></font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4">I wanna avoid event dropping, my idea is taking advantage of the event queue to store all events. And the server retrieves events from the queue to write to the virtual device . </font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4"><br></font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><span style="font-size:large">My question is: Is the event dropping reasonable?</span><span style="font-size:large">  </span><font size="4">Could you please give some advice about how to avoid it?  Thanks very much~</font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4"><br></font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4">Regards,</font></div><div style="color:rgb(0,0,0);font-family:Helvetica;font-size:12px"><font size="4">Walter.</font></div><br class="gmail-Apple-interchange-newline"></div>