# HG changeset patch # User John Tsiombikas # Date 1405648047 -10800 # Node ID fca1f126d23b969381e9e9c79ace0d1547cb5240 # Parent c3b48cb2797f0f15cada0cef57a679f41e87b5ad fixed message pump diff -r c3b48cb2797f -r fca1f126d23b src/main.cc --- a/src/main.cc Fri Jul 18 04:25:24 2014 +0300 +++ b/src/main.cc Fri Jul 18 04:47:27 2014 +0300 @@ -92,9 +92,9 @@ struct timeval noblock = {0, 0}; int maxfd = xfd > fakefd ? xfd : fakefd; - while(select(maxfd + 1, &rd, 0, 0, draw_pending ? &noblock : 0) == -1 && errno == EINTR); + while(!XPending(dpy) && select(maxfd + 1, &rd, 0, 0, draw_pending ? &noblock : 0) == -1 && errno == EINTR); - if(FD_ISSET(xfd, &rd)) { + if(XPending(dpy) || FD_ISSET(xfd, &rd)) { process_events(); } if(FD_ISSET(fakefd, &rd)) { @@ -235,22 +235,22 @@ } } - //if(get_led_state(0)) { + if(get_led_state(0)) { // continuously redraw until the left LED times out draw_pending = true; - //} + } glXSwapBuffers(dpy, win); assert(glGetError() == GL_NO_ERROR); - /*static long prev_msec; + static long prev_msec; long msec = get_msec(); long dt = msec - prev_msec; if(dt < MIN_REDRAW_INTERVAL) { wait_for(MIN_REDRAW_INTERVAL - dt); } - prev_msec = get_msec();*/ + prev_msec = get_msec(); } static void draw_scene(int pass)