gui: avoid high CPU usage while waiting for input

- add a timeout to ev_get
- set timeout to 1 second when idle
- delay timeout for 15 frames to keep animation objects working
- stop kinetic scrolling immediately at end of list

Change-Id: I77138055c464b65b71e296f9c7ef63ea06809bc1
diff --git a/gui/scrolllist.cpp b/gui/scrolllist.cpp
index 6143b60..02656c7 100644
--- a/gui/scrolllist.cpp
+++ b/gui/scrolllist.cpp
@@ -632,8 +632,10 @@
 		firstDisplayedItem--;
 		y_offset -= actualItemHeight;
 	}
-	if (firstDisplayedItem == 0 && y_offset > 0)
+	if (firstDisplayedItem == 0 && y_offset > 0) {
 		y_offset = 0; // user kept dragging downward past the top of the list, so always reset the offset to 0 since we can't scroll any further in this direction
+		scrollingSpeed = 0; // stop kinetic scrolling
+	}
 
 	// handle dragging upward, scrolling downward
 	int totalSize = GetItemCount();
@@ -649,9 +651,11 @@
 	if (bottom_offset != 0 && firstDisplayedItem + lines + 1 >= totalSize && y_offset <= bottom_offset) {
 		firstDisplayedItem = totalSize - lines - 1;
 		y_offset = bottom_offset;
+		scrollingSpeed = 0; // stop kinetic scrolling
 	} else if (firstDisplayedItem + lines >= totalSize && y_offset < 0) {
 		firstDisplayedItem = totalSize - lines;
 		y_offset = 0;
+		scrollingSpeed = 0; // stop kinetic scrolling
 	}
 }