| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
NWReflection.isClassAvailable() if possible. NWReflection.getClass() takes boolean init.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1956 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
| |
eager initialization of the AWT, in particular on Mac OS X, where
doing so was causing crashes during Newt initialization
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1953 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Changed GLProfile method names to conform to Java naming convention
(first letter is lowercase). Removed redundant "Profile" from
method names.
- Moved bulk of Threading class into ThreadingImpl to avoid exposing
concepts like the mode (AWT vs. WORKER), and whether X11 is in use,
in the public API
- Changed GLAutoDrawable.ScreenChangeActionEnabled to
SCREEN_CHANGE_ACTION_ENABLED
- Changed AWTGraphicsConfiguration.SetupCapabilitiesPixelformat to
setupCapabilitiesRGBABits
Reformatted touched classes to 4 spaces per indentation level, which
JOGL should have used from the start -- should reformat all classes.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1949 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
boolean system property 'jogl.screenchange.action',
wheather to enable or disable (default) the drawable configuration
in case the screen changed ..
- X11Util Changes:
Clarified the documentation a bit.
Renaming for clarification:
getDefaultDisplay() -> getStaticDefaultDisplay()
isXineramaEnabled() -> isXineramaEnabledOnStaticDefaultDisplay()
Removing for clarification:
getDisplayConnection()
Introducing thread current default display,
which returns/creates one display connection for the running thread in TLS.
getThreadLocalDefaultDisplay()
This shall be used with care, to not risc memory leakage.
Currently used for long term objects, ie Pbuffer ..
- Validated the ToolkitLock lock/unlock
in relation with the NativeWindow surface lock/unlock.
Both locking mechanism may be related, e.g. in case of AWT/JAWT.
Here, a JAWT surface lock would implicitly lock the global JAWT.
The latter is actually intended to be done by the JAWT ToolkitLock
implementation we offer. Not calling it would steal it's lock
and we won't benefit from it's recursive behavior.
A followup ToolkitLock lock would deadlock,
since we already have locked it implicitly with the surface lock.
Hence the NativeWindow surface lock needs to be the owner of
the JAWT ToolkitLock 'lock' incl. issuing it's optional native locking.
Massive multithreading tests on multi core machines (X11, Windows, MacOSX)
AWT and NEWT (AWT/Native) .. no deadlocks under
java demos.es[12].RedSquare -GL2 -GL2 -GL2 -GL2
java demos.es[12].RedSquare -awt -GL2 -GL2 -GL2 -GL2
java demos.es[12].RedSquare -GL2 -GL2 -awt -GL2 -GL2
- NEWT Windows:
- Adding fullscreen
- Cleaning up the UserData attachment, adding JNIEnv,
and removing the global reference at window destruction.
The later removes a StackOverflow .. alright,
but still a lack of true multiple top level window.
- NEWT AWTCanvas: Apply Ken's fix for using disableBackgroundEraseMethod
- FIX X11AWTGLXGraphicsConfigurationFactory:
Wow .. I must have been blind, now using the right method
X11SunJDKReflection.graphicsDeviceGetDisplay() :)
However, in case we couldn't determine the display handle,
we will use a thread local display handle.
-
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1943 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
| |
X11AWTNativeWindowFactory and the toolkit locks are needed.
Uncommented their instantiation; issues with them will need to be
solved in some other way than removing them completely.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1936 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which is more reliable ..
- NEWT X11Window remove XSetWindowFocus, since it causes BadMatch,
let the desktop manager do this .. not our job
- NEWT AWTWindow
- Adding fullscreen mode.
Note: AWT only allow undecoration if the window wasn't visible yet.
- Fixing some runOnEDT ..
- Query correct screen size
- AWTCanvas .. adding the disableBackgroundErase() hack ..
- NativeWindowFactory .. disabling
com.sun.nativewindow.impl.x11.awt.X11AWTNativeWindowFactory, (JAWT lock)
com.sun.nativewindow.impl.x11.X11NativeWindowFactory, (monitor lock)
since it causes more troubles than benefit.
GLCanvas is serialized anyways .. and NEWT AWT would freeze,
since that JAWT lock is even taken in the input loop.
FIXME: Has to be discussed.
-
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1935 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
use a unix style capable viewer/editor for the debug methods ..
- Multihead code is working now for
- GLCanvas, GLJPanel
- Newt: GLWindow, AWTWindow and WindowsWindow
WindowsWindow is using the MonitorFromWindow(HWND) win32 method
to detect a monitor change, same as AWT's implementation.
AWT does the detection within getGraphicsConfiguration().
Added documention in GLAutoDrawable inkl. the fixed protocol
for such a case (regeneration cycle).
The interesting thing here is, that in my test environment,
the windows NV driver keeps up the previous HDC pixelformat
even within a new HDC (all same HWND), if the HWND is dragged
from a 32bpp-screen to a 16bpp-screen and vice versa.
But for the sake of other driver behaviors, this implementation
shall fix the multihead support on windows and other non Xinerama
driven arrangements.
Another good thing of the in deep investigation was to
fix the documentation and other bus, as follows:
- FIX GLDrawableHelper.dispose(): Don't remove the event listeners,
since dispose() does not mean EOL.
- FIX remove all actions of NativeWindow.LOCK_SURFACE_CHANGED,
due to the unreliable (never worked here for me) behavior.
Also .. acting on a surface change from within a GLDrawable
is already to low level, and misses all the appropriate actions.
See GLAutoDrawable for the spec.
- FIX all GLDrawable implementations update the graphics configuration
on setVisible(true), except MacOSX, which does it on create context.
The latter is ok with the spec ..
- FIX removed the windows NO_FREE hack, since it could introduce
a non released context .. which is not good.
The context state shall be completely handled by GLContext
- FIX GLDrawableImpl.setVisible(false): removed nativewindow invalidate()
call - this is wrong, due to the spec. A window may survive many cycles of setVisible().
- FIX GLCOntextImpl lock the lock as soon as possible in destroy()
- Add native method WindowsWindow.MonitorFromWindow(..)
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1932 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1930 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lot's of javadoc changes/fixes.
- Fixing transparency values RGB[A] in GLX and EGL, adding those in GLCapabilities.
- Adding EGLPbuffer (untested yet)
Added EGLOnscreenContext, EGLOnscreenDrawable and EGLPbufferContext, EGLPbufferDrawable,
which completes the now abstract EGLContext and EGLDrawable.
- Decoupling EGLDrawableFactory and DynamicLookupHelper:
Since OpenGL ES has 2 libraries and hence 2 DynamicLookupHelper, one for each,
these are decoupled in EGLES1DynamicLookupHelper and EGLES2DynamicLookupHelper,
where each uses the base class EGLDynamicLookupHelper.
EGLDynamicLookupHelper act's also as the owner of these singleton instances.
EGLDrawableFactory is now pure singleton,
and has no more relation to the ES[12] libraries.
Still, GLDrawableFactory.getFactory(GLProfile) stays, due to the selection
of the right factory, ie EGLDrawableFactory or a native one (X11GLX, WindowsWGL or MacOSXCGL).
Added GLDrawableImpl.getDynamicLookupHelper().
DynamicLookupHelper implementation is pushed down to the specialisation of GLDrawableImpl,
hence removed GLDrawableImpl implements DynamicLookupHelper.
- Fixing Locking
- Always throw an Exception if unlock is called without being locked.
- Removed NativeWindow.LOCK_NOT_SUPPORTED, since it made the locking state ambiguos.
- Using a generated Exception at locking to mark the object locked,
and to let it throw in case of double locking.
- Removed redundant lockToolkit() calls, where lockSurface() calls are made
- Fixing GLWindow wrapped toolkit (e.g. AWTWindow) usage
- In case the passed NativeWindow only contains a wrapper window,
we use the NativeWindowFactory.getNativeWindow() pipeline to produce a valid
NativeWindow. This object is only referenced within the drawable, hence we have
to use it for actual NativeWindow related operations.
- Add setVisible(): lockSurface()/unlockSurface() to allow getting the windowHandle
- Overwriting all drawable related Window method's, using the drawable's NativeWindow if exists.
- getNativeWindow()
- lockSurface()/unlockSurface()/..
- getWindowHandle()/getSurfaceHandle()
- Fix NativeWindowFactory.getNativeWindowType(),
so the custom and pure values are set once (static init) - not overwritten (prev. bug).
- NEWT: Added WindowEvent.EVENT_WINDOW_DESTROY_NOTIFY support in AWTWindow.
Now the proper dispose() calls are made to all GLEventListeners if the AWT window
is being closed - before it is actually destroyed.
- Threading now uses the AWTThreadingPlugin,
a ThreadingPlugin interface AWT implementation, containing the refactored
Threading code.
- Reintroduced getChosen*Capabilities and getRequested*Capabilites,
where get*Capabilities is renamed back to getRequested*Capabilities.
The semantics are necessary to allow the drawables (and NativeWindow)
to be regenerated in case of a device change in a multihead environment.
Otherwise there is a risk that recursive choosing of the Capabilities
will degenerate the result.
- Multihead logic ..
Exception: Xinerama, where all monitors share the same static configuration,
and the window handle 'survive'
X11, MacOSX and Win32 with a Xinerama behavior
1) Recognition of a display/screen/surface change
- It is prooven that the JAWT model (JAWT_LOCK_SURFACE_CHANGED)
while locking the surface is not reliably propagated, ie doesn't work here,
if the display change happens.
- AWT's Canvas.getGraphicsConfiguration() can reliably being used
to detect this case, ie compare the old GraphicsConfiguration with the new one.
- A solution for other native windowing toolkits must be found,
ie query the current underlying pixel-configuration, if it changed - act.
In which case the the following shall be done:
2.0) - notify all GLEventListener via the dispose(GLAutoDrawable)
2.1) - destroy the OpenGL context
2.2) - call GLDrawable's setRealized(false)
2.3) - call GLDrawable's setRealized(true)
2.4) - create a new OpenGL context
2.5) - notify all GLEventListener via the init(GLAutoDrawable)
Steps 2.0 - 2.5 are executed with GLAutoDrawable's dispose(true) call.
Step 2.3, setRealized(true) on GLDrawable shall:
2.3.1) - Choose the GLCapabilities again, based on the requested ones,
and update the choosen ones in the AbstractGraphicsConfiguration.
2.3.2) - Update AbstractScreen within the new AbstractGraphicsConfiguration to
reflect the possible screen change.
DONE: Xinerama mode: X11 + Xinerama, MacOSX
DONE: Introducing GLAutoDrawable.dispose(boolean regenerate)
DONE: 2.3.1 on setRealized(true): Windows, MacOSX (implicit on createContext)
TODO: Windows setRealized(true) on AWT Canvas getGraphicsConfiguration(),
can't lock the JAWT surface sometimes - exception, code disabled, see GLCanvas.java
TODO: 2.3.1 on setRealized(true): X11 and EGL
TODO: Find a test case, without Xinerama behavior
TODO: Code for Newt/NativeWindow to detect (1) and propagate GLAutoDrawable's dispose(true).
TESTS:
- MacOSX (Xinerama) OK
- X11
-TwinView (NV) OK
-Xinerama (NV) OK
- Win32 (Xinerama) OK
- GLAutoDrawable's dispose(true)
-
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1929 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1923 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Linux / X11 / GL3 / GL2 / ES1 / ES2
- Using etc/profile.jogl JOGL_ALL
. ./setenv-jogl.x86.sh JOGL_ALL
- Java2D/GLJPanel: demos.jrefract.JRefract
- GLCanvas: demos.gears.Gears
- Newt/Nativewindow (demos.GLInfo, demos.es2.RedSquare, demos.es2.RedSquare)
- with multiple instances of different GL profiles, ie
java demos.es1.RedSquare -GLES2 -GLES1
java demos.GLInfo -GLES2 -GL2
- GL 3.1 test with demos.GLInfo
java demos.GLInfo -GL3
java demos.GLInfo -GL3 -GL2
with NVIDIA 180.37.05
JOGL
Enable parallel GLProfiles:
- GL holds it's GLProfile
- GL / GLBase added:
hasGLSL()
getGLProfile()
- Removed all hardcoded GLProfile checks
- Make GLProfile an instance of GLCapabilities
- GLCapabilities needs GLProfile in constructor,
or null for the default GLProfile
- All GLProfiles are singelton mapped objects,
setup and verified at static init.
- All GLDrawableFactories in GLDrawableFactory are singelton objects,
setup at static init.
- GLDrawableFactories.getFactory() needs an argument,
which leads to GLProfile, ie
NativeWindow, AbstractGraphicsConfiguration, GLCapabilities or GLProfile.
- EGLDrawableFactory takes GLProfile as an argument,
being able to take the singleton role as ES1 or ES2
- EGLDrawableFactory loads ES & EGL libraries _local_,
otherwise the symbols produce a collision (Unix/PC-Emulation).
TODO: Check on Windows/WinCE !
- Fixing etc/profile.jogl JOGL_ALL
EGLGraphicsConfigurationFactory
- Added eglGetConfigs -> GLCapabilities -> eglChooseConfig,
in case the simple eglChooseConfig fails.
- Using given chooser, is null, use DefaultGLCapabilitiesChooser
Moved FixedFuncUtil.class -> jogl.util.jar,
otherwise the FixedFuncUtil pipeline cannot be used without emulation.
GLDrawable
Rename getChosenGLCapabilities() -> getGLCapabilities(),
since all GLCapabilities access functions return the current state.
Add getGLProfile()
NativeLibLoader[Base]
Added 'addLoaded' and 'isLoaded', so all LoadAction implementation
can use it and circumvent double library loading.
GlueGen
Split openLibrary -> openLibraryLocal / Global,
utilizing as an optional flag (global), which is true per default.
TODO: How to do this on Windows ?
TODO: Verify Windows and MacOSX !!
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1922 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
| |
Stricten unlock(), throw an exception if not locked to make cheap coding more visible ; Removed double lock of surface and JAWT ; Adding missing try/finally block for some locks
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1921 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added OpenGL 3.0 and 3.1 support
3.0 as part of GL2 (extensions only)
3.1 forward compatible as GL3,
ie doesn't contain the GL2 fixed function stuff etc
Added code to retrieve a 3.0/3.1 context: X11/GLX and Windows/WGL
TODO: MacOSX !!
Updated GL and GLX extensions
Fixing auto GLProfile selection, determine if GL2ES[1] uses GL2 or ES
Usage of the unified GraphicsConfiguration of NativeWindow
for all platforms. Sure, the broken OS (Win32/MacOSX) have
a update mechanism for theit queried Capabilities after drawable creation.
Adding X11/GLX GLXFBConfig usage and fixing it's attribute mapping
Fixing GLX/X11 FBConfig/XVisual query function's memory leak,
using a manual implementation, which copies the data and calls XFree.
Added WGL extension WGL_ARB_create_context
Tested: Linux x86 and x86_64 GL2, ES2 and ES1
Note: Nvidia driver couldn't make the succesfully created 3.1
context current.
TODO: Verify Windows and MacOSX !!
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1919 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into NativeWindowFactory introduced an undesirable dependence between
the windowing toolkit, which can be replaced via NativeWindowFactory,
and the library which implements the selection algorithm, for example
OpenGL. This would prevent, for example, an easy SWT port of JOGL.
To fix this, refactored chooseCapabilities into new
GraphicsConfigurationFactory, the default implementation of which is
currently a no-op on X11 platforms, and which is provided by JOGL in a
toolkit-agnostic manner via GLX. Refactored OpenGL portions of
Capabilities class back into GLCapabilities. Reintroduced
GLCapabilitiesChooser interface for compatibility and to avoid having
to import javax.media.nativewindow classes in most user code.
Fixed problem in GLProfile where failures to load native libraries
were being squelched. Reorganized build to have all outputs under
build/ directory.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1884 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
|
|
|
| |
Capabilities class; deleted redundant NWException
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1883 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1881 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
|
|
| |
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1880 232f8b59-042b-4e1e-8c03-345bb8c30851
|
|
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/branches/JOGL_2_SANDBOX@1879 232f8b59-042b-4e1e-8c03-345bb8c30851
|