| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
exceptions. Handles also XAWT BadMatch X_SetInputFocus.
X11ErrorHandler code now dumps proper information about the opcode and error message and the running Java thread.
Having propery "nativewindow.debug.X11Util.XErrorStackDump" or "nativewindow.debug=all' set,
a stack trace is dumped.
Since the X11ErrorHandler may catch an XAWT error: BadMatch X_SetInputFocus,
we cannot throw an exception and better keep running.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It works now as follows:
Note: Remote connection tested using ssh to localhost or an actual remote
machine.
Test w/ proper X11 authentication, i.e. DISPLAY and xauth:
> cd projects/JOGL/jogl-bugs/597-headless/
> echo $DISPLAY
localhost:10.0
> xclock
'works'
T1.1 OK> java plop
jogamp.opengl.x11.glx.X11GLXDrawableFactory@f581593
T1.2 OK> java -Djava.awt.headless=true plop
jogamp.opengl.x11.glx.X11GLXDrawableFactory@6f34a7d8
+++
Test _without_ proper X11 authentication, i.e. DISPLAY and xauth:
> xclock
No protocol specified
No protocol specified
Error: Can't open display: :0.0
T2.1 OK> java plop
No protocol specified
No protocol specified
Exception in thread "main" java.lang.InternalError: Can't connect to X11 window
server using ':0.0' as the value of the DISPLAY variable.
(Stack trace from:
GLProfile.initProfilesForDefaultDevices(..) ->
NativeWindowFactory.initSingleton(..) ->
JAWTUtil.<clinit>->
sun.awt.X11.XToolkit.<clinit> ->
sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
T2.2 OK> java -Djava.awt.headless=true plop
No protocol specified
No protocol specified
...
jogamp.opengl.x11.glx.X11GLXDrawableFactory@394a8cd1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
setSwapInterval() deadlock; Reuse JAWT instance; Cleanup
- Fixes
- OSXUtil.CreateCALayer*(..): Pass layer target size (if known).
This fixes Bug #589
- MacOSXWindowSystemInterface-pbuffer.m:
- ALL: displayLink NULL check
- setSwapInterval(..): lock only for variable setting,
could deadlock when start/stop CVDisplayLink
- JAWTWindow.destroy(): use 'surfaceLock' instead of 'synchronized'
- Cleanup / Performance
- JAWTWindow.lockSurface(): Reuse JAWT instance
- MacOSXJAWTWindow: AttachJAWTSurfaceLayer0(..) -> SetJAWTRootSurfaceLayer0(..)
Reflects semantic better.
- DEBUG
- JAWTWindow.updateBounds(..) notify of bounds change
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
JAWTUtil.getJAWT(..):
- better local var names
- one time init
- add DEBUG trace
JAWTUtil.<init>:
- add offscreenLayer info
MacOSXWindowSystemInterface-pbuffer.m:
- remove warning: access of protected vars from outside class
- better local var names
- more DEBUG info (pbuffer texture)
|
|
|
|
|
|
|
|
|
| |
- This policy allows more simple destruction handling w/o validating on the top level.
- Hence 'unlockSurface()' shall not throw any exception.
- 'lockSurface()' keeps unchanges, clarified w/ explicit 'throws' declaration,
ie will fail-fast.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
CapabilitiesImmutable, Misc ..
- Comparable<CapabilitiesImmutable> to CapabilitiesImmutable:
"interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable" ->
"interface CapabilitiesImmutable extends VisualIDHolder, WriteCloneable, Comparable<CapabilitiesImmutable>"
- CapabilitiesImmutable and GLCapabilitiesImmutable get-methods final (most)
- GLCapabilitiesImmutable.compareTo: add doubleBuffered (between stereo and samples)
Misc:
- Add @Override
- remove trailing whitespace,
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Derivation
- Depends on GlueGen commit 9a71703904ebfec343fb2c7266343d37a2e4c3db
JAR file name changes:
ALL JARs:
- jogl.all.jar -> jogl-all.jar
- jogl.all-noawt.jar -> jogl-all-noawt.jar
- jogl.all-mobile.jar -> jogl-all-mobile.jar
- jogl.all-android.jar -> jogl-all-android.jar
- jogl.all-android.apk -> jogl-all-android.apk
Atomic JARs:
- nativewindow.core.jar -> nativewindow-core.jar
- nativewindow.awt.jar -> nativewindow-awt.jar
- nativewindow.os.x11.jar -> nativewindow-os-x11.jar
- nativewindow.os.win.jar -> nativewindow-os-win.jar
- nativewindow.os.macosx.jar -> nativewindow-os-osx.jar
- jogl.core.jar -> jogl-core.jar
- jogl.sdk.jar -> jogl-sdk.jar
- jogl.glmobile.jar -> jogl-glmobile.jar
- jogl.glmobile.dbg.jar -> jogl-glmobile-dbg.jar
- jogl.util.jar -> jogl-util.jar
- jogl.glutess.jar -> jogl-glutess.jar
- jogl.glumipmap.jar -> jogl-glumipmap.jar
- jogl.util.fixedfuncemu.jar -> jogl-util-fixedfuncemu.jar
- jogl.awt.jar -> jogl-awt.jar
- jogl.swt.jar -> jogl-swt.jar
- jogl.util.awt.jar -> jogl-util-awt.jar
- jogl.os.x11.jar -> jogl-os-x11.jar
- jogl.os.win.jar -> jogl-os-win.jar
- jogl.os.osx.jar -> jogl-os-osx.jar
- jogl.os.android.jar -> jogl-os-android.jar
- jogl.gldesktop.jar -> jogl-gldesktop.jar
- jogl.gldesktop.dbg.jar -> jogl-gldesktop-dbg.jar
- jogl.glugldesktop.jar -> jogl-glu-gldesktop.jar
- jogl.util.gldesktop.jar -> jogl-util-gldesktop.jar
- jogl.omx.jar -> jogl-omx.jar
- jogl.cg.jar -> jogl-cg.jar
- newt.core.jar -> newt-core.jar
- newt.ogl.jar -> newt-ogl.jar
- newt.awt.jar -> newt-awt.jar
- newt.event.jar -> newt-event.jar
- newt.driver.x11.jar -> newt-driver-x11.jar
- newt.driver.win.jar -> newt-driver-win.jar
- newt.driver.macosx.jar -> newt-driver-osx.jar
- newt.driver.android.jar -> newt-driver-android.jar
- newt.driver.kd.jar -> newt-driver-kd.jar
- newt.driver.intelgdl.jar -> newt-driver-intelgdl.jar
- newt.driver.broadcomegl.jar -> newt-driver-broadcomegl.jar
Test JARs:
- jogl.test.jar -> jogl-test.jar
- jogl.test-android.jar -> jogl-test-android.jar
- jogl.test-android.apk -> jogl-test-android.apk
|
|
|
|
| |
ClassLoader to find JNI native libraries
|
|
|
|
| |
instead of static final int values.
|
|
|
|
| |
Capabilities/GLContext API 'toString(StringBuilder)'
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Threading*:
- add invoke(..) generalizing the Therading decision
GLCanvas:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- remove drawable lock, drawable is volatile instead
GLJPanel:
- remove 'manual' Threading decision, simply call Threading.invoke(..)
- use anonymous Runnable instances
- DEBUG: Use getThreadName() prefix
GLContextImpl:
- Remove GLWorkerThread idle command on makeCurrent(),
no holding of context in worker thread while idle.
- DEBUG: Use getThreadName() prefix
X11GLXContext:
- DEBUG: Use getThreadName() prefix
TODO: Validate whether it's OK for GLCanvas and GLJPanel to set Threading.Mode.MT as the default mode!
|
|
|
|
| |
or a stack trace may be helpful.
|
|
|
|
| |
f4ac27e177f6deb444280d3b375e7d343e38bd080 and eedb4b530fb83fc59a26962bcf7847a1404092a0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
proper utilization.
- VisualIDHolder: Update documentation (Exception case, etc)
- NativeVisualID -> VisualIDHolder (public)
- incl. generic Comparator
- better doc and enum values
- VID_UNDEFINED == 0
- methods shall not throw exception, but return UNDEFINED
- CapabilitiesImmutable extends VisualIDHolder
- All Capabilties impl.
- use VID_UNDEFINED for undef. value
- use final private (immutable) fields
- AbstractGraphicsConfiguration extends VisualIDHolder
- X11 CreateDummyWindow takes (int) visualID
|
|
|
|
| |
(javax.media.nativewindow.<impl> -> com.jogamp.nativewindow.<impl>) 2/3
|
|
|
|
| |
(javax.media.nativewindow.<impl> -> com.jogamp.nativewindow.<impl>) 1/2
|
|
|
|
|
|
|
|
|
|
|
|
| |
90c46b1ef1f199ceb63e85c85e9ebeb919d49c4a) ; Using plain X11 Capabilities
In case X11GLXGraphicsConfigurationFactory and hence X11GLCapabilities (glx) is not being used,
the X11GraphicsConfigurationFactory used plain Capabilities object for the chosen caps.
The latter is not derived from NativeVisualID.
- Added X11Capabilities supporting NativeVisualID to fit our needs.
- X11Capabilities.XVisualIDComparator uses NativeVisualID.NVIDType.X11_XVisualID
- *Capabilities have better unique names in toString()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
*GraphicsConfiguration) ; ...
NativeVisualID: New interface for Capabilities implementations,
allowing retrieval of the native 'visual id'.
Impl. by WGL, X11 and EGL.
JAWTWindow.lockSurface()
- Detect surfaceHandle change an return LOCK_SURFACE_CHANGED (see: LOCK_SURFACE_CHANGED)
EGLDrawable:
- Impl. updateHandle() (see: LOCK_SURFACE_CHANGED)
- use NativeVisualID for EGLGraphicsConfiguration selection to respect a native 'visual id'
EGLContext.createContextImpl: Use NIO for attributes
EGLDisplayUtil: Enhance eglGetDisplay w/ DEBUG code and NativeSurface / EGL_DEFAULT_DISPLAY variation
EGL, XGL, WGL GraphicsConfiguration:
- Don't set ALPHA_SIZE and STENCIL_SIZE if not requested in attribute list
for context creation.
- toString() shows proper identification, eg.: egl, x11, win32 ..
EGLGraphicsConfigurationFactory:
Daisy chain GraphicsConfigurationFactory for native device type (currently only X11).
This allows choosing the EGLGraphicsConfiguration and hence native visual id based on EGL
when invoked via the factory model (generic).
In case EGLGraphicsConfigurationFactory is not suitable or doesn't produce a native visual id,
it falls back the the original one.
X11AWTGraphicsConfigurationFactory and X11Window:
Use generic NativeVisualID which allows EGLGraphicsConfiguration implicit.
*GraphicsConfiguration's DEBUG flag is pushed up to DefaultGraphicsConfiguration
LOCK_SURFACE_CHANGED:
- commit 006e9fe402a0a47b45fd2c4af51296aef895e8b5
- commit a0177c8a1048683e5d43f4712f8f9e37091d4e85
Impact:
- Fixes EGL/GLES (wrapper/native) usage on X11, proper Xvisual selection w/ EGL
- Fixes EGL/GLES (wrapper/native) usage on Windows, ANGLE works w/ NEWT and forced ES2
|
|
|
|
|
|
|
| |
common name win32 (same as stub_include)
Utilizing dlopen/dlsym in an efficient way relaxes the platform requirement of having Xinerama available.
This allows using Nokia N9 MeeGo out of the box.
|
|
|
|
| |
loading was successful. Negative result causes proper exception in caller.
|
|
|
|
| |
massive '!!!' occurence
|
| |
|
|
|
|
|
|
|
|
|
| |
JAWT/JAWTUtil
- Support OSX/Java7 CALayer only JAWT mode
- Cleanup JAWT/JAWTUtil while
moving elaborated logic and data to JAWTUtil, leave generated JAWT simple.
|
|
|
|
|
|
|
|
|
|
| |
- allocate CALayer w/ invoking init:
[[CALayer alloc] init]
- attach CALayer to JAWTSurfaceLayer w/o autorelease:
surfaceLayers.layer = layer; // already incr. retain count
- destroy CALayer @ JAWTWindow destroy
|
| |
|
| |
|
|
|
|
|
|
|
| |
atomic java JAR)
- GLProfile, NWJNILibLoader, NEWTJNILibLoader:
Issue Platform.initSingleton() upfront within priviledge block.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NewtCanvasAWT/GLCanvas (delegation) ; Fix GLCanvas OffscreenLayerSurface usage.
JAWTWindow.destroy():
- No more getGraphicsConfiguration().getScreen().getDevice().close() call,
since the configuration (hence the device) is passed @ creation and owned by the caller.
New Interface 'OffscreenLayerOption', impl. by JAWTWindow (impl) and NewtCanvasAWT/GLCanvas (delegation)
- Abstract offscreenLayer option to be delegated by using classes
- Allow offscreen testing of GLCanvas as well (like NewtCanvasAWT)
Fix GLCanvas OffscreenLayerSurface usage
- common 'createDrawableAndContext()' for context and drawable instance creation
- addNotify() calls createDrawableAndContext() after super.addNotify() to be able
to lock the surface (JAWTWindow) and hence to determine offscreen usage.
- reshape(...) issues recreation 'dispose(true)' in case of using an offscreen layer
- dispose() explicitly destroys the JAWTWindow
NewtCanvasAWT:
- explicitly close the device of the JAWTWindow (as GLCanvas does)
Tests:
com.jogamp.opengl.test.junit.newt.parenting.TestParentingOffscreenLayer01GLCanvasAWT
com.jogamp.opengl.test.junit.newt.parenting.TestParentingOffscreenLayer02NewtCanvasAWT
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Management
- Leave Platform, .. TempJarCache untouched.
- GLDrawableFactoryImpl*: Leave DynamicLibraryBundle(lib-binding) untouched,
for NativeLibrary, JNILibLoaderBase (JNI libs), .. consistency.
- SHARED_ONLY: shutdown shared GLDrawableFactoryImpl* resources and NativeWindowFactory
- COMPLETE: additionally shutdown GLContext*
Clear all cached GL/GLX proc-address and device/context mappings.
- Use new "GLProfile.shutdown(GLProfile.ShutdownType.SHARED_ONLY)" in Applets
- X11GLXDrawableFactory Shutdown: Uncomment close/destroy of shared resources.
- JAWTWindow.destroy(): Close the delegated device.
In case it's X11 this closes the exclusive opened X11 Display.
|
|
|
|
| |
JNILibLoaderBase addNativeJarLibs(..)
|
| |
|
|
|
|
|
|
|
|
| |
X11Util:
- shutdown: keep list of displays, if not really closed.
- Init default display name in initSingleton.
GDISurface: Check ReleaseDC and throw exception if fails
|
|
|
|
|
|
| |
RegisteredClassFactory: Reference the factories itself instead of the RegisteredClass.
This enables the shutdown hook to clear the factories state,
which is required for proper recreation.
|
|
|
|
|
|
|
|
| |
getLocationOnScreenImpl
Since the MacWindow position needs to be changed in concert with the parent,
we need to be triggered to update ours. AWTParentWindowAdapter issues 'updatePosition()'
if DriverUpdatePosition is implemented.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NEWT XDisplay Locking
Revert X11Screen RANDR commit 8cecd0c2963d982aa119cbb07698e56b9c271188,
ie. use default 'render' display connection, best results on Ubuntu, Solaris, CentOS (no failures).
Revert X11Util (XInitThreads/XLockDisplay) rational logic, commit 0314be79a7a93931a74fe4322bc78e699d7741e9,
X11Util.HAS_XLOCKDISPLAY_BUG:=true and X11Util.XINITTHREADS_ALWAYS_ENABLED:=true.
Which enables always utilizing XInitThreads() either before or after AWT initialization,
as well as disable all XLockDisplay/XUnlockDisplay locks.
Rever NEWT XDisplay X11 basic Locking commit 50100b85ce5fde48788efbc2211b26fb9d7c9dfd,
ie use null locking if X11Util.HAS_XLOCKDISPLAY_BUG and X11Util.XINITTHREADS_ALWAYS_ENABLED.
|
|
|
|
|
| |
We shall lock a level above due to differentiation of XLockDisplay/RecursiveLock
using X11/AWT ToolkitLock.
|
|
|
|
| |
GraphicsConfiguration
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
XLockDisplay/XUnlockDisplay shall only be used if XInitThreads() was successful,
otherwise it has no effect (X11 spec).
- Only issue XInitThreads() if firstX11ActionOnProcess==true,
store result to determing whether we can utilize XLockDisplay/XUnlockDisplay.
- If we cannot utilize XLockDisplay/XUnlockDisplay, use RecursiveLock
- NativeWindowFactory: Only return AWTToolkitLock or X11JAWTToolkitLock if explicitly requested
|
|
|
|
|
| |
- remove validateNative()
- don't dispose AWT component, since we are an immutable uplink (was disposed if Window)
|
|
|
|
| |
constructor
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
NativeWindow X11AWTGraphicsConfigurationFactory
X11AWTGraphicsConfigurationFactory properly construct a AWTGraphicsConfiguration
encapsulated a native X11GraphicsConfiguration, now available for non JOGL modules, ie NEWT.
AWTGraphicsConfiguration's create() utilizes the X11AWTGraphicsConfigurationFactory
via the generic factory mechanism and hence allows encapsulating a native [X11]GraphicsConfiguration.
NewtCanvasAWT creates/destroys the JAWT NativeWindow on addNotify/removeNotify (reparentWindow) again.
Hence the JAWTWindow is instantiated completly only, instead of utilizing updateConfiguration(..),
which simplifies the mechanism.
|
|
|
|
|
|
| |
instead of constructor for clarity.
- prepare for 'jogamp.nativewindow.x11.awt.X11AWTGraphicsConfigurationFactory'
|
|
|
|
|
|
|
|
|
|
|
| |
AbstractGraphicsConfiguration, if delegation is used.
This change restricts the usage of AbstractGraphicsConfiguration's getNativeGraphicsConfiguration()
to NativeSurface implementations and hence reduces complexity.
NativeSurface implementations are adapted and access to it's AbstractGraphicsConfiguration
is controlled via get/set method avoiding flawed usage (read/write), since read access shall
return the delegated AbstractGraphicsConfiguration, if used.
|