On Sun, Oct 30, 2022 at 04:08:50PM -0700, Alan Coopersmith wrote: > On 10/29/22 19:00, Po Lu wrote: > > Motif assumes that you can call functions that lock the display inside > > XCheckIfEvent as it never calls XInitThreads itself. It also never uses > > threads. > > It was never up to Motif to decide whether or not to call XInitThreads() > - that decision was up to the applications, and if Motif assumed no > application would ever do that, it was buggy and incompatible with such > applications. > > https://gitlab.freedesktop.org/xorg/lib/libx11/-/merge_requests/150 is > a proposed solution to the problem, but has not generated any interest > in testing it or moving it forward, suggesting either everyone is > building with the --disable-thread-safety-constructor option or is > using correctly written software that does not make such assumptions. >
Oh I did miss this MR. It looks like a step in the proper direction, since after trying to patch X*IfEvent() callbacks in several places, I see how painful it can be. And in OpenBSD I also had to eventually add --disable-thread-safety-constructor to the build of libX11 1.8.1. However one of the software that's doing a lot of Xlib calls in the X*IfEvents() callbacks is fvwm{2,3}. The MR I send them is wrong, and I fear they are fiddling with the input queue in the callbacks. I'll have to test how it behaves with this change. -- Matthieu Herrb