mirror of
https://github.com/reactos/wine.git
synced 2024-11-28 22:20:26 +00:00
e86389e057
- killing the advanced part (and moving its chapters in both developing Wine and Wine archi parts) - creating a new book on coding practices from i18n.sgml, patches.sgml and porting.sgml - creating a new book on some debugging strategies from the old advanced book and cvs-regression.sgml - creating a new book on the kernel modules (NTDLL & KERNEL32) from architecture.sgml / related DLLs and address-space.sgml, console.sgml, threading.sgml - creating a new book on the windowing from architecture.sgml / USER32 and related - creating a new book on the graphical parts from architecture.sgml / GDI32 and related Other changes: - removed list of DLLs and their role (from the modules overview) - removed in X11 keyboard mapping section the part related to submit a patch
41 lines
1.4 KiB
Plaintext
41 lines
1.4 KiB
Plaintext
<chapter>
|
|
<title>Graphical modules</title>
|
|
<sect1>
|
|
<title>GDI Module</title>
|
|
|
|
<sect2>
|
|
<title>X Windows System interface</title>
|
|
|
|
<para>
|
|
The X libraries used to implement X clients (such as Wine)
|
|
do not work properly if multiple threads access the same
|
|
display concurrently. It is possible to compile the X
|
|
libraries to perform their own synchronization (initiated
|
|
by calling <function>XInitThreads()</function>). However,
|
|
Wine does not use this approach. Instead Wine performs its
|
|
own synchronization using the
|
|
<function>wine_tsx11_lock()</function> / <function>wine_tsx11_unlock()</function>
|
|
functions. This locking protects library access
|
|
with a critical section, and also arranges things so that
|
|
X libraries compiled without <option>-D_REENTRANT</option>
|
|
(eg. with global <varname>errno</varname> variable) will
|
|
work with Wine.
|
|
</para>
|
|
<para>
|
|
In the past, all calls to X used to go through a wrapper called
|
|
<function>TSX...()</function> (for "Thread Safe X ...").
|
|
While it is still being used in the code, it's inefficient
|
|
as the lock is potentially aquired and released unnecessarily.
|
|
New code should explicitly aquire the lock.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-parent-document:("wine-devel.sgml" "set" "book" "part" "chapter" "")
|
|
End:
|
|
-->
|