Improve cursor test animation

Only set cursor when it's time for a new frame.  Use
glfwWaitEventsTimeout when waiting for events during animation.
This commit is contained in:
Camilla Berglund 2016-03-07 12:33:26 +01:00
parent fca5a8ab48
commit 3b2e96e0b1

View File

@ -195,6 +195,7 @@ int main(void)
int i; int i;
GLFWwindow* window; GLFWwindow* window;
GLFWcursor* star_cursors[CURSOR_FRAME_COUNT]; GLFWcursor* star_cursors[CURSOR_FRAME_COUNT];
GLFWcursor* current_frame = NULL;
glfwSetErrorCallback(error_callback); glfwSetErrorCallback(error_callback);
@ -279,11 +280,22 @@ int main(void)
if (animate_cursor) if (animate_cursor)
{ {
const int i = (int) (glfwGetTime() * 30.0) % CURSOR_FRAME_COUNT; const int i = (int) (glfwGetTime() * 30.0) % CURSOR_FRAME_COUNT;
glfwSetCursor(window, star_cursors[i]); if (current_frame != star_cursors[i])
{
glfwSetCursor(window, star_cursors[i]);
current_frame = star_cursors[i];
}
} }
else
current_frame = NULL;
if (wait_events) if (wait_events)
glfwWaitEvents(); {
if (animate_cursor)
glfwWaitEventsTimeout(1.0 / 30.0);
else
glfwWaitEvents();
}
else else
glfwPollEvents(); glfwPollEvents();