summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/9/pc/mouse.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sys/src/9/pc/mouse.c b/sys/src/9/pc/mouse.c
index 5113f8899..0519e5e76 100644
--- a/sys/src/9/pc/mouse.c
+++ b/sys/src/9/pc/mouse.c
@@ -260,9 +260,19 @@ resetmouse(void)
static void
setstream(int on)
{
+ int i;
+
switch(mousetype){
case MousePS2:
- i8042auxcmd(on ? 0xF4 : 0xF5);
+ /*
+ * disabling streaming can fail when
+ * a packet is currently transmitted.
+ */
+ for(i=0; i<4; i++){
+ if(i8042auxcmd(on ? 0xF4 : 0xF5) != -1)
+ break;
+ delay(50);
+ }
break;
}
}