From de72b6d4d8f7106a9cbb611225dd0b726ba23720 Mon Sep 17 00:00:00 2001 From: that Date: Sun, 8 Feb 2015 08:55:00 +0100 Subject: 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 --- gui/scrolllist.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gui/scrolllist.cpp') diff --git a/gui/scrolllist.cpp b/gui/scrolllist.cpp index 6143b60a2..02656c79d 100644 --- a/gui/scrolllist.cpp +++ b/gui/scrolllist.cpp @@ -632,8 +632,10 @@ void GUIScrollList::HandleScrolling() 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 @@ void GUIScrollList::HandleScrolling() 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 } } -- cgit v1.2.3