Swap-buffers was being deferred (to prevent it being called from the event handling thread) however when it was called the OpenGL context might not be active (especially with multiple windows). Moving the cursor between windows made eglSwapBuffers report: EGL Error (0x300D): EGL_BAD_SURFACE. Resolve this by removing swapBuffer calls and instead add a GHOST_kEventWindowUpdateDecor event intended for redrawing client-side-decoration. Besides the warning, this results an error with LIBDECOR window frames not redrawing when a window became inactive.