Commit Diff


commit - 27589754e47a2d2e682ee29daa2d21dff99e509d
commit + 0a98a883d5bc30843f859a1b4f05af1a6906907a
blob - b1147bd46d2a2d0b87bf522dbdb4ee5f0a4b2ffe
blob + e41814f3aa950c652c4cee12b90a485a635af6de
--- src/libdraw/event.c
+++ src/libdraw/event.c
@@ -159,7 +159,7 @@ etimer(ulong key, int n)
 	if(n <= 0)
 		n = 1000;
 	eslave[Stimer].n = n;
-	eslave[Stimer].nexttick = nsec()+n*1000LL;
+	eslave[Stimer].nexttick = nsec()+n*1000000LL;
 	return 1<<Stimer;
 }
 
@@ -295,12 +295,12 @@ extract(int canblock)
 			}
 		}else if(i == Stimer){
 			t0 = nsec();
-			if(t0-eslave[i].nexttick <= 0){
+			if(t0 >= eslave[i].nexttick){
 				tv.tv_sec = 0;
 				tv.tv_usec = 0;
 			}else{
-				tv.tv_sec = (t0-eslave[i].nexttick)/1000000000;
-				tv.tv_usec = (t0-eslave[i].nexttick)%1000000000 / 1000;
+				tv.tv_sec = (eslave[i].nexttick-t0)/1000000000;
+				tv.tv_usec = (eslave[i].nexttick-t0)%1000000000 / 1000;
 			}
 			timeout = &tv;
 		}else{
@@ -345,8 +345,8 @@ extract(int canblock)
 			}
 		}else if(i == Stimer){
 			t0 = nsec();
-			while(t0-eslave[i].nexttick > 0){
-				eslave[i].nexttick += eslave[i].n*1000LL;
+			while(t0 > eslave[i].nexttick){
+				eslave[i].nexttick += eslave[i].n*1000000LL;
 				eslave[i].head = (Ebuf*)1;
 				n++;
 			}