aboutsummaryrefslogtreecommitdiffstats
path: root/doc/Implementation
diff options
context:
space:
mode:
Diffstat (limited to 'doc/Implementation')
-rw-r--r--doc/Implementation/MultiThreading.txt94
-rw-r--r--doc/Implementation/runtime-properties.txt102
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
+
+