diff options
Diffstat (limited to 'doc/Implementation')
-rw-r--r-- | doc/Implementation/MultiThreading.txt | 94 | ||||
-rw-r--r-- | doc/Implementation/runtime-properties.txt | 102 |
2 files changed, 196 insertions, 0 deletions
diff --git a/doc/Implementation/MultiThreading.txt b/doc/Implementation/MultiThreading.txt new file mode 100644 index 000000000..fb586e1ec --- /dev/null +++ b/doc/Implementation/MultiThreading.txt @@ -0,0 +1,94 @@ + +Locking +========= + +Interface AbstractGraphicsDevice: lock() / unlock() + + - Used to exclusively lock the device + - Current implementations: + - X11GraphicsDevice: XLockDisplay/XUnlockDisplay + + - Shall only be used, where race conditions may happen with + device toolkit calls in regards to windowing resources, + ie create/destroy .. etc + + - We call XInitThreads ASAP and a global X11 lock + is not necessary. + + - To ensure XInitThreads can be issued at first, + GLProfile.initSingleton() shall be called + in the static initializer block of the main class. + + TODO: + However, we have to investigate how to incooperate this + with Applet loading. + If such call ain't possible, a workaround could be to not + call XInitThreads() and utilize AWT locks. + +Interface NativeWindow: lockSurface() / unlockSurface() + + - Used to exclusively lock the surface + + - Implementations: + + - JAWTWindow: + - Recursive Lock + - JAWT SurfaceLock + + - NEWT Window: + - Recursive Lock + - May have platform specific surface lock, currently: None + + +GLContext/GLDrawable Locking: + + - MakeCurrent: NativeWindow:lockSurface() + - Release: NativeWindow:unlockSurface() + + - Create/Destroy/Realize/Swap: + - NativeWindow:lockSurface() + - CreateImpl/DestroyImpl/Realize/Swap + - NativeWindow:unlockSurface() + + - The Window impl. class shall lock the window recursive lock + for all modifying operations. + This should be the same lock as surfaceHandle! + + +Summary: + + Locking is implemented in the platform agnostic code layer. + + Locks and Order: + 1: - NativeWindow Surface/Window Lock + - Locked: + - [makeCurrent .. release] + - create/destroy + + GLContextImpl: + - makeCurrent + - Surface i - out only in error + + - release + - Surface o - makeCurrentImpl + + - create + - Surface i/o + + - destroy + - Surface i/o + + - copy + - Surface i/o + + - setSwapIntervalImpl + - Surface i/o + + + GLDrawableImpl + - setRealizedImpl + - Surface i/o + + - swapBuffersImpl + - [Surface i/o] - if not locked already + diff --git a/doc/Implementation/runtime-properties.txt b/doc/Implementation/runtime-properties.txt new file mode 100644 index 000000000..0d9b0b160 --- /dev/null +++ b/doc/Implementation/runtime-properties.txt @@ -0,0 +1,102 @@ +../doc/Implementation/runtime-properties-temp/gluegen-rt.debug.txt +---------------------------------------- + jogamp.debug.JNILibLoader + jogamp.debug.JVMUtil + jogamp.debug.Lock + jogamp.debug.ReflectionUtil + jogamp.debug.NativeLibrary + jogamp.debug.NativeLibrary.Lookup + jogamp.debug.ProcAddressHelper + jogamp.debug.ProcAddressHelper.prefix + + +../doc/Implementation/runtime-properties-temp/gluegen-rt.ipd.debug.txt +---------------------------------------- + jnlp.launcher.class + jogamp.common.utils.locks.Lock.timeout + jogamp.debug.Lock.TraceLock + sun.boot.library.path + sun.jnlp.applet.launcher + + +../doc/Implementation/runtime-properties-temp/jogl.debug.all.txt +---------------------------------------- + jogl.debug.Animator + jogl.debug.BuildMipmap + jogl.debug.CapabilitiesChooser + jogl.debug.EGL + jogl.debug.GLCanvas + jogl.debug.GLContext + jogl.debug.GLDrawable + jogl.debug.GLJPanel + jogl.debug.GLPipelineFactory + jogl.debug.GLProfile + jogl.debug.GLSLCode + jogl.debug.GLStateTracker + jogl.debug.GLStatusTracker + jogl.debug.GraphicsConfiguration + jogl.debug.Java2D + jogl.debug.MacOSXPbufferCGLDrawable + jogl.debug.Texture + jogl.debug.TextureIO + jogl.debug.Threading + + +../doc/Implementation/runtime-properties-temp/jogl.ipd.debug.txt +---------------------------------------- + jogl.1thread + jogl.debug.ExtensionAvailabilityCache + jogl.debug.GLDrawable.profiling + jogl.debug.GLSLCode + jogl.debug.GLSLState + jogl.debug.TextRenderer + jogl.glcontext.forcetracking + jogl.gldrawablefactory.class.name + jogl.gljpanel.nohw + jogl.gljpanel.noogl + jogl.gljpanel.nosw + jogl.screenchange.action + jogl.texture.nonpot + jogl.texture.notexrect + + +../doc/Implementation/runtime-properties-temp/nativewindow.debug.txt +---------------------------------------- + nativewindow.debug.DefaultCapabilitiesChooser + nativewindow.debug.GraphicsConfiguration + nativewindow.debug. if(Debug.debugAll()) { + nativewindow.debug.JAWT + nativewindow.debug.NativeWindow + nativewindow.debug.X11Util + + +../doc/Implementation/runtime-properties-temp/nativewindow.ipd.debug.txt +---------------------------------------- + java.awt.headless + nativewindow.debug.ToolkitLock.TraceLock + nativewindow.debug.X11Util.TraceDisplayLifecycle + nativewindow.ws.name + + +../doc/Implementation/runtime-properties-temp/newt.debug.txt +---------------------------------------- + newt.debug.Display + newt.debug.EDT + newt.debug.MainThread + newt.debug.Screen + newt.debug.Window + newt.debug.Window.KeyEvent + newt.debug.Window.MouseEvent + newt.debug.Window.WindowEvent + + +../doc/Implementation/runtime-properties-temp/newt.ipd.debug.txt +---------------------------------------- + newt.MainThread.force + newt.test.EDTMainThread + newt.test.Window.reparent.incompatible + newt.test.Screen.disableScreenMode + newt.ws.sheight + newt.ws.swidth + + |