diff options
author | Sven Gothel <[email protected]> | 2010-05-21 06:15:17 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2010-05-21 06:15:17 +0200 |
commit | 6e599a2696f878786783e0fea17534e67655a5c9 (patch) | |
tree | 65774f7318ea67a170902efefbd3a952c94d7f6d /make | |
parent | 3d8e85915ccdf48b9a97b5ed279716a2204a7a82 (diff) |
Changed NEWT NativeWindow creation contract - AWT/NEWT Parenting - Misc Fixes
+++++
Changed NEWT NativeWindow creation contract
Original contract:
(1) A native window was created as soon as possible,
ie when NEWTFactory.createWindow(..) was called - if possible.
(2) A valid native window has to be created at least after setVisible(true)
has been called.
Problems:
Not all implementation are able to create the native window that early,
but at setVisible(true) only (e.g: KD and EGL).
Due to window parenting especially the new AWT/NEWT parenting,
the native window can only be created in case the parent native window is valid.
New contract:
(1) A native window is created at setVisible(true),
if it's a top level window or the native parent window is valid.
(2) A valid native window may not be created after setVisible(true)
has been called.
Subsequent setVisible(true) calls shall be made in case
the creation has not been done yet.
This is demonstrated in GLWindow.display() for example.
The new contract implements a lazy native window creation.
+++++
AWT/NEWT Parenting
- HierarchyListener and ComponentListener ensure that the NEWT child window
will be setVisible according to the AWT parent window.
- Lazy native window creation relaxes requirements to the parent window's state.
- Attachment of the child window and setVisible() may be called
after NEWT child window creation.
- GLWindow supports NEWT child window creation directly
The test case TestParenting01AWT.java reflect this new contract
and demonstrates more simplified and more flexible use cases.
+++++
NEWT Fixes:
- All NEWT implementation's native code method names end with 0.
- GLWindow: don't issue the actual 'init'/'display' call to GLEventListeners
in case the window is not visible.
- NEWT setSize/setPosition:
if native-window
call native-window action and let the attributes being set by
the feedback call, which issues more action, ie RESIZE.
else
set the attributes directly, no feedback call/action is necessary.
+++++
X11 Fixes:
- X11GLContext MakeContextCurrent:
Use MakeCurrent in case write and read drawable are equal,
otherwise SEGV happens on ATI with heavy multithreading involved!
Even XLockDisplay and XSync didn't help here ..
- X11GLXDrawableFactory shared resource:
Removed the resource holder thread to simplify code,
hence proper release is no more desired and it could become a cause for deadlock.
- Moved XInitThreads() from NEWT X11Window -> NativeWindow X11Util,
since NativeWindow is loaded first (essential for XInitThreads())
and it is the more basic lib.
- Made call to XInitThreads() conditional, ie it's spared if
AWT could be used - which causes SEGV .. (AWT bug). See X11Util.java
+++++
JOGL Fixes:
- GLProfile.isAWTAvailable() -> NativeWindowFactory.isAWTAvailable()
- GLProfile.isAWTJOGLAvailable() -> GLProfile.isAWTAvailable()
Diffstat (limited to 'make')
-rw-r--r-- | make/build-jogl.xml | 12 | ||||
-rw-r--r-- | make/build-nativewindow.xml | 8 | ||||
-rw-r--r-- | make/build-newt.xml | 12 | ||||
-rw-r--r-- | make/build.xml | 2 | ||||
-rw-r--r-- | make/config/nativewindow/x11-lib.cfg | 1 | ||||
-rwxr-xr-x | make/scripts/java-run-all.sh | 6 | ||||
-rw-r--r-- | make/stub_includes/x11/window-lib.c | 7 |
7 files changed, 31 insertions, 17 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml index 27ec68718..0dd04ccb8 100644 --- a/make/build-jogl.xml +++ b/make/build-jogl.xml @@ -1104,9 +1104,9 @@ <!-- linker configuration --> <linker id="linker.cfg.linux.jogl.gl2" extends="linker.cfg.linux"> - <syslibset dir="/usr/lib" libs="X11"/> - <syslibset dir="/usr/lib" libs="Xxf86vm" /> - <syslibset dir="/usr/lib" libs="GL"/> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> + <syslibset libs="GL"/> </linker> <linker id="linker.cfg.linux.jogl.cg" extends="linker.cfg.linux.jogl.gl2"> @@ -1114,12 +1114,12 @@ </linker> <linker id="linker.cfg.linux.amd64.jogl.x11" extends="linker.cfg.linux.amd64"> - <syslibset dir="/usr/lib64" libs="X11"/> - <syslibset dir="/usr/lib64" libs="Xxf86vm" /> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> </linker> <linker id="linker.cfg.linux.amd64.jogl.gl2" extends="linker.cfg.linux.amd64.jogl.x11"> - <syslibset dir="/usr/lib64" libs="GL"/> + <syslibset libs="GL"/> </linker> <linker id="linker.cfg.linux.amd64.jogl.cg" extends="linker.cfg.linux.amd64.jogl.gl2"> diff --git a/make/build-nativewindow.xml b/make/build-nativewindow.xml index ee6eef03e..b087a5ba7 100644 --- a/make/build-nativewindow.xml +++ b/make/build-nativewindow.xml @@ -361,13 +361,13 @@ <!-- linker configuration --> <linker id="linker.cfg.linux.nativewindow.x11" extends="linker.cfg.linux"> - <syslibset dir="/usr/lib" libs="X11"/> - <syslibset dir="/usr/lib" libs="Xxf86vm" /> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> </linker> <linker id="linker.cfg.linux.amd64.nativewindow.x11" extends="linker.cfg.linux.amd64"> - <syslibset dir="/usr/lib64" libs="X11"/> - <syslibset dir="/usr/lib64" libs="Xxf86vm" /> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> </linker> <linker id="linker.cfg.solaris.nativewindow.x11" extends="linker.cfg.solaris"> diff --git a/make/build-newt.xml b/make/build-newt.xml index 01fb40ac8..08c0f308b 100644 --- a/make/build-newt.xml +++ b/make/build-newt.xml @@ -240,18 +240,18 @@ <!-- linker configuration --> <linker id="linker.cfg.linux.newt.broadcom_egl" extends="linker.cfg.linux"> - <syslibset dir="/nfsroot/lg/lib" libs="EGL"/> - <syslibset dir="/nfsroot/lg/lib" libs="GLES_CM"/> + <syslibset libs="EGL"/> + <syslibset libs="GLES_CM"/> </linker> <linker id="linker.cfg.linux.newt.x11" extends="linker.cfg.linux"> - <syslibset dir="/usr/lib" libs="X11"/> - <syslibset dir="/usr/lib" libs="Xxf86vm" /> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> </linker> <linker id="linker.cfg.linux.amd64.newt.x11" extends="linker.cfg.linux.amd64"> - <syslibset dir="/usr/lib64" libs="X11"/> - <syslibset dir="/usr/lib64" libs="Xxf86vm" /> + <syslibset libs="X11"/> + <syslibset libs="Xxf86vm" /> </linker> <linker id="linker.cfg.solaris.newt.x11" extends="linker.cfg.solaris"> diff --git a/make/build.xml b/make/build.xml index 51dac3fa7..9a1cf81ce 100644 --- a/make/build.xml +++ b/make/build.xml @@ -63,6 +63,8 @@ </copy> </target> + <target name="one.dir" depends="one-lib-dir,one-jar-dir"/> + <target name="repack-jars" depends="one-jar-dir"> <!-- Re-pack jars we have the intent to compress later, after signing --> <mkdir dir="${jar}/orig" /> diff --git a/make/config/nativewindow/x11-lib.cfg b/make/config/nativewindow/x11-lib.cfg index cf9642398..2380f07ad 100644 --- a/make/config/nativewindow/x11-lib.cfg +++ b/make/config/nativewindow/x11-lib.cfg @@ -24,6 +24,7 @@ IncludeAs CustomJavaCode X11Lib x11-CustomJavaCode.java # Now resides in x11/Xmisc.c: IncludeAs CustomCCode x11-CustomCCode.c ArgumentIsString XOpenDisplay 0 +ReturnsString XDisplayString # We have Custom code for the following Ignore XGetVisualInfo diff --git a/make/scripts/java-run-all.sh b/make/scripts/java-run-all.sh index 9c3fbed03..8c50d0933 100755 --- a/make/scripts/java-run-all.sh +++ b/make/scripts/java-run-all.sh @@ -36,7 +36,11 @@ uname -a | grep -i Darwin && MOSX=1 # D_ARGS="-Dnativewindow.debug.X11Util=true -Djogl.debug.GLDrawableFactory=true" # D_ARGS="-Dnativewindow.debug.X11Util=true" # D_ARGS="-Dnewt.debug=all" +# D_ARGS="-Dnewt.debug.Window" # D_ARGS="-Djogl.debug=all" -echo java $X_ARGS $D_ARGS $* 2>&1 | tee java-run.log +rm -f java-run.log + +echo LIBXCB_ALLOW_SLOPPY_LOCK: $LIBXCB_ALLOW_SLOPPY_LOCK 2>&1 | tee -a java-run.log +echo java $X_ARGS $D_ARGS $* 2>&1 | tee -a java-run.log java $X_ARGS $D_ARGS $* 2>&1 | tee -a java-run.log diff --git a/make/stub_includes/x11/window-lib.c b/make/stub_includes/x11/window-lib.c index 8fca86263..9affa8427 100644 --- a/make/stub_includes/x11/window-lib.c +++ b/make/stub_includes/x11/window-lib.c @@ -7,6 +7,13 @@ #define _Xconst const #endif /* _Xconst */ +extern Bool XSynchronize(Display *display, Bool onoff); + +extern int XFlush(Display *display); +extern int XSync(Display *display, Bool discard); + +extern char *XDisplayString(Display *display); + extern Display *XOpenDisplay( _Xconst char* /* display_name */ ); |