[PATCH libX11] Always initialise thread support
Michal Suchanek
hramrach at gmail.com
Thu Sep 12 07:42:30 PDT 2013
Hello,
On 14 July 2013 18:31, Daniel Stone <daniel at fooishbar.org> wrote:
> Hi,
>
> On 14 July 2013 17:17, Mark Kettenis <mark.kettenis at xs4all.nl> wrote:
>>> Make XOpenDisplay always call XInitThreads when opening a display, thus
>>> guarding it against possible disaster scenarios like calling
>>> XOpenDisplay without XInitThreads, then passing the Display pointer into
>>> an EGL library which uses threads. Or any of the other five similar
>>> failure scenarios I've seen just this week.
>>
>> Isn't the real solution to these problems to change the EGL library to
>> use xcb?
>
> As the last sentence alludes to, it's not just this one EGL stack, or
> EGL in general. It's pretty hard to construct a program more complex
> than xterm whilst totally avoiding threads.
>
>> Forcing the overhead of per-request locking down everybodies throat
>> isn't very nice, even if the overhead is relatively small.
>
> Beats the overhead of having to figure out what's wrong and add
> XInitThreads() to random apps which don't use threads themselves, but
> have threads forced on them by any number of support libraries, most
> of which can't call XInitThreads() in time before someone else calls
> XOpenDisplay().
>
> An XUnInitThreads() for programs which could 100% guarantee no threads
> will ever be used might be more interesting. Or just have those
> performance-critical programs use XCB, since Xlib sucks for
> performance anyway.
>
> Cheers,
> Daniel
What's happened to this patch?
Thanks
Michal
>
>>> Signed-off-by: Daniel Stone <daniel at fooishbar.org>
>>> ---
>>> src/OpenDis.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/src/OpenDis.c b/src/OpenDis.c
>>> index fc67d1a..2104845 100644
>>> --- a/src/OpenDis.c
>>> +++ b/src/OpenDis.c
>>> @@ -87,6 +87,8 @@ XOpenDisplay (
>>> long int conn_buf_size;
>>> char *xlib_buffer_size;
>>>
>>> + XInitThreads();
>>> +
>>> /*
>>> * If the display specifier string supplied as an argument to this
>>> * routine is NULL or a pointer to NULL, read the DISPLAY variable.
>>> --
>>> 1.8.3.1
>>>
>>> _______________________________________________
>>> xorg-devel at lists.x.org: X.Org development
>>> Archives: http://lists.x.org/archives/xorg-devel
>>> Info: http://lists.x.org/mailman/listinfo/xorg-devel
>>>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list