Calling Xsync from the bg thread causes deadlock issues diff -up allegro-4.4.2/src/x/xwin.c~ allegro-4.4.2/src/x/xwin.c --- allegro-4.4.2/src/x/xwin.c~ 2009-10-17 09:05:12.000000000 +0200 +++ allegro-4.4.2/src/x/xwin.c 2014-10-29 15:17:08.381148654 +0100 @@ -2463,11 +2463,8 @@ void _xwin_private_handle_input(void) _mouse_y - (_xwin_mouse_extended_range ? _xwin.scroll_y : 0)); } - /* Flush X-buffers. */ - _xwin_private_flush_buffers(); - /* How much events are available in the queue. */ - events = events_queued = XEventsQueued(_xwin.display, QueuedAlready); + events = events_queued = XPending(_xwin.display); if (events <= 0) return;