Menu

#1 XInitThreads call is needed under linux

open
nobody
None
9
2007-10-09
2007-10-09
No

Under Linux.
The system needs to be initialized by calling XInitThreads before opeing any window (see XineCanvas.callXInitThreads() )

This is needed because xine uses the XLockDisplay and XUnlockDisplay X primitives. These are uneffective if XInitThreads hasn't been called.
Unfortunately, Java doesn't initialize the X threading system. In so doing, XLockDisplay and XUnlockDisplay do nothing.

Proposed solution:
Use the XINE_VISUAL_TYPE_X11_2 rendering system wich allows to override the default locking primitives (XLockDisplay and XUnlockDisplay). They should be replaced with calls to AWT_Lock and AWT_Unlock.

Beware that "the display will not actually be unlocked until XUnlockDisplay() has been called the same number of times as XLockDisplay()." (see http://tronche.com/gui/x/xlib/display/XLockDisplay.html\)

Discussion