glxSwapBuffers in render thread with compositors missing update

Michel Dänzer michel at
Mon Jun 1 18:46:11 PDT 2015

On 01.06.2015 00:41, Roland Plüss wrote:
> The special situation is this:
> - A toolkit driven application (FOX-ToolKit in this case)
> - Render window is "injected" into the framework (so this means no
> influence to X11 event loop handling of the application)
> - Main Thread: Does everything not touching OpenGL (in particular has no
> GL context assigned nor created)
> - Render Thread: Does all OpenGL related rendering on a separate Display
> connection
> - glXSwapBuffers: called during synchronization time when both threads
> get in touch with each other
> In general this situation works. I can have multiple windows in the
> toolkit all of which are rendered sequentially in the render thread and
> display updates properly.
> The problem now is if a Compositor comes into play and today this seems
> to be omni-present. With the compositor enabled the glXSwapBuffers is
> sort of "ignored" by the compositor in the main thread. Basically the
> compositor updates the first rendered frame and all consequtive
> glXSwapBuffers are ignored. If I disable the compositor though all
> glXSwapBuffers work splendid.
> My conclusion is that glXSwapBuffers in the second thread does properly
> notify X-Server about the swap of the front and back buffer but the
> compositor is somehow left out in the dark.
> My question is now does somebody know how I can force an update onto the
> compositor? I tried already sending an Expose event with XSendEvent to
> the main thread display connection but this had no effect. I guess I
> have to get more creative to kick the compositor in the butts?

Compositors get notified of updates to drawables via Damage events, not
Expose events.

Which OpenGL implementation / driver are you using?

Earthling Michel Dänzer               |     
Libre software enthusiast             |             Mesa and X developer

More information about the xorg mailing list