diff options
author | Keith Packard <keithp@keithp.com> | 2012-03-04 02:00:13 -0800 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2016-10-19 21:40:25 +0200 |
commit | 3d37513eb81325cef80eada39dbdb812c9c627d5 (patch) | |
tree | fb2dbb60e6f397347b7cb903ffd648e99baf850e | |
parent | e8e91b69e83da81b3d8d71139a99c13d7a62ba00 (diff) | |
download | nx-libs-3d37513eb81325cef80eada39dbdb812c9c627d5.tar.gz nx-libs-3d37513eb81325cef80eada39dbdb812c9c627d5.tar.bz2 nx-libs-3d37513eb81325cef80eada39dbdb812c9c627d5.zip |
Block for other threads in _XUserLockDisplay
Wait for all other threads to release the user-level lock when
acquiring it. This ensures that only one thread at a time holds the
user-level lock, necessary as it is a nesting lock and a single
variable is used to determine when the lock is nesting and when it is
contended.
Signed-off-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Jamey Sharp <jamey@minilop.net>
Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
-rw-r--r-- | nx-X11/lib/X11/locking.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/nx-X11/lib/X11/locking.c b/nx-X11/lib/X11/locking.c index 4f9a40fbd..b3dfb3b01 100644 --- a/nx-X11/lib/X11/locking.c +++ b/nx-X11/lib/X11/locking.c @@ -486,6 +486,8 @@ static void _XInternalLockDisplay( static void _XUserLockDisplay( register Display* dpy) { + _XDisplayLockWait(dpy); + if (++dpy->lock->locking_level == 1) { dpy->lock->lock_wait = _XDisplayLockWait; dpy->lock->locking_thread = xthread_self(); |