diff -aur old/panel.cpp new/panel.cpp --- old/panel.cpp 2011-04-29 15:15:57.210134850 +0200 +++ new/panel.cpp 2011-04-29 15:16:17.260285407 +0200 @@ -10,6 +10,7 @@ */ #include +#include #include "panel.h" using namespace std; @@ -288,16 +289,24 @@ field=curfield; bool loop = true; OnExpose(); + + struct pollfd x11_pfd = {0}; + x11_pfd.fd = ConnectionNumber(Dpy); + x11_pfd.events = POLLIN; while(loop) { - XNextEvent(Dpy, &event); - switch(event.type) { - case Expose: - OnExpose(); - break; - - case KeyPress: - loop=OnKeyPress(event); - break; + if(XPending(Dpy) || poll(&x11_pfd, 1, -1) > 0) { + while(XPending(Dpy)) { + XNextEvent(Dpy, &event); + switch(event.type) { + case Expose: + OnExpose(); + break; + + case KeyPress: + loop=OnKeyPress(event); + break; + } + } } }