aboutsummaryrefslogtreecommitdiffstats
path: root/make
Commit message (Collapse)AuthorAgeFilesLines
* Bug 948 - Autodetect GLRendererQuirks.SingletonEGLDisplayOnlySven Gothel2014-01-241-1/+1
| | | | | | | | | Refines commit fbe00e6f5dca8043b40dd96f096fecc9424e0cc3 Instead of querying driver artifacts (vendor, platform, version ..) we simply can autodetect this quirk by trying to get a second egl-display handle when initializing the EGLDrawablFactory's default device: EGL.eglGetDisplay(EGL.EGL_DEFAULT_DISPLAY)
* Add 'make/scripts/create-i386-libs-symlinks.sh' to setup missing 'a.so -> ↵Sven Gothel2014-01-241-0/+10
| | | | a.so.N' symlinks for debian i386 libs on x86_64
* Bug 948 - NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL ↵Sven Gothel2014-01-241-17/+18
| | | | | | | | | | | | | | | | | | | | | | | Display via eglGetDisplay(..) NVIDIA 331.38 (Linux X11) EGL impl. only supports _one_ EGL Display via eglGetDisplay. - Subsequent eglGetDisplay(..) calls fail. - Using the same 'global' egl-display does work though Remedy: Add 'GLRendererQuirks.SingletonEGLDisplayOnly' Detection of quirk is done as usual in GLContextImpl.setRendererQuirks(..), and EGLDrawableFactory passes the quirk, if detected, down to EGLDisplayUtil. The latter implements the singleton eglDisplay handle. EGLDisplayUtil: Cleaned up .. - EGLDisplayRef employs the reference handling incl. eglInitialize(..) and eglTerminate(), as well as the new singleton quirk. - Mark all internal methods 'private', to remove possible [untested] sideffects.
* Jar Manifest: Add empty line before EOF (otherwise last line is cut-off - ↵Sven Gothel2014-01-226-0/+8
| | | | duh), add 'Application-Library-Allowable-Codebase: *'
* Bug 945 - Add test script to launch unit test from samba share on windowsSven Gothel2014-01-221-0/+33
|
* Adding missing 'gl-if-CustomJavaCode-gl2.java' of commit ↵Sven Gothel2014-01-221-0/+40
| | | | 09fc7aa5539731bb0fba835caee61f6eb837ecff
* Adaption of Oracle's Deployment changes, i.e. >= 7u51Sven Gothel2014-01-224-1/+6
| | | | | | | | | | Sadly, due to Oracle's Java Applet Plugin update 7u51, unsigned applets are no more allowed and effectively lower the bar to create user applets with raised privileges.<br/> Hence JogAmp Community <b>signs</b> jogl-all.jar and gluegen-rt.jar, which contain the JOGL's supporting classes as well as jogl-test.jar, which contains the applet class.<br/> jogl-test.jar's manifest file uses <i>Permissions: sandbox</i> to <b>not raise privileges</b>.
* windows test scriptSven Gothel2014-01-211-2/+4
|
* Add 'Permissions: all-permissions' to jogl-test.jar for Oracle's 7u51 Java ↵Sven Gothel2014-01-211-0/+1
| | | | Plugin (duh)
* Bug 942: GLBufferObjectTracker: Tracking GLBufferStorage accurately, ↵Sven Gothel2014-01-2112-197/+640
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | synchronized and secure [1/2] GLBufferSizeTracker becomes GLBufferObjectTracker and tracks the buffer's data store, GLBufferStorage, accurately, synchronized and secure. Synchronization is required, since the GLBufferStorage can be shared across many GLContext on multiple threads. This requires all GLBufferStorage lifecycle affecting GL functions to utilize synchronized GLBufferObjectTracker methods while passing a native GL-func callback. These GL functions are: - glBufferData, glBufferStorage (GL 4.4), glNamedBufferDataEXT Creating the GLBufferStorage object - glMapBuffer, glMapBufferRange, and their *Named*EXT variants - glUnmapBuffer, glUnmapNamedBufferEXT 'glDeleteBuffers' can simply notify the GLBufferObjectTracker No more HashMap is required to associate the mapped buffer address to the mapped ByteBuffer. GLBufferObjectTracker simply utilizes a buffer-name (int) -> GLBufferStorage map. +++ The security aspect shall be implemented by validating all arguments whether they match the required GL constraints, as well as validating tracked states like 'size'. The following functions will throw an GLException accordingly: - glBufferData, glNamedBufferDataEXT * @throws GLException if size is less-than zero * @throws GLException if a native GL-Error occurs - glBufferStorage (GL 4.4) * @throws GLException if size is less-or-eqaul zero * @throws GLException if a native GL-Error occurs - glMapBuffer, and it's *Named*EXT variant * @throws GLException if buffer is not bound to target * @throws GLException if buffer is not tracked * @throws GLException if buffer is already mapped * @throws GLException if buffer has invalid store size, i.e. less-than zero - glMapBufferRange, and it's *Named*EXT variant * @throws GLException if buffer is not bound to target * @throws GLException if buffer is not tracked * @throws GLException if buffer is already mapped * @throws GLException if buffer has invalid store size, i.e. less-than zero * @throws GLException if buffer mapping range does not fit, incl. offset - glMapBufferRange, and it's *Named*EXT variant Only clear mapped buffer reference of GLBufferStorage if native unmap was successful. Further more special error handling shall be applied to: - glMapBuffer, and it's *Named*EXT variant, glMapBuffer, and it's *Named*EXT variant - A zero GLBufferStorage size will avoid a native call and returns null - A null native mapping result indicating an error will not cause a GLException but returns null This allows the user to handle this case.
* Bug 942 - Review GLBuffer[State|Size]Tracker: Add synchronized access to ↵Sven Gothel2014-01-153-31/+41
| | | | shared bufferSizeTracker
* Revert "Bug 942 - Share GLBufferStateTracker ; Unify GLBufferStateTracker ↵Sven Gothel2014-01-146-5/+14
| | | | | | and GLBufferSizeTracker (simplification)" This reverts commit 7c5483d5b20aed9c87c5ce3f6bc840b6546edcd1.
* JAWTWindow DEBUG: Dump all JAVA_VERSION* informationSven Gothel2014-01-141-2/+3
|
* Bug 942 - Share GLBufferStateTracker ; Unify GLBufferStateTracker and ↵Sven Gothel2014-01-146-14/+5
| | | | | | | | | | | | | | | | | GLBufferSizeTracker (simplification) Due to future mapped buffer tracking, the GLBufferStateTracker instance shall be shared across shared GLContextImpl instances similar to GLSizeStateTracker! This allows us to merge GLSizeStateTracker code into GLBufferStateTracker to simplify the implementation. +++ Clear the GLBufferStateTracker (@destruction) only if no more created shares are left! +++
* Bug 938 - MemoryObject.java has no more equals() methodSven Gothel2014-01-141-2/+2
| | | | | | Re-adding 'equals(..)' method erroneously removed with commit 8457bf35fee253d9af29ff1150a9671f6896fc17. 'equals(..)' is important to allow the HashMap<> for glMapBuffer(..) work properly!
* TestParenting01dAWT: Add waitForVisible after toggling NEWT child window ↵Sven Gothel2014-01-131-3/+3
| | | | visibility helping robostness of test case.
* Bug 937 - JAWTWindow: Unsatisfying Visibility ComputationSven Gothel2014-01-121-7/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | Simplify JAWTComponentListener's HierarchyListener: - Don't interfere w/ Component's visibility anymore! This shall reduce sideeffects. Utilize 'isShowing' in each Component specialization, i.e. GLCanvas. - On SHOWING_CHANGED if a parent caused a change of the tracked components showing state, propagate it to the offscreen-layer! - Remove all other complicated states! GLCanvas, GLJPanel: - Instead of 'isVisible()' use 'showing state', since only the 'showing state' reflects 'true' visibility throughout the hierarchy. - Add HierarchyListener and track volatile showing state to be used instead of 'isVisible'. Using a cached showing state is more efficient than quering 'isShowing()' all the time! NewtCanvasAWT: - Use 'isShowing()' instead of 'isVisible(), see above
* Fix PNGTstFiles: Typo of new PNG icons .. used AE's 'gray' instead of BE's ↵Sven Gothel2014-01-091-2/+2
| | | | 'grey', which is used for the filename
* NEWT Rasp.Pi: Add Support for multiple Windows, dynamic set size and positionSven Gothel2014-01-091-2/+2
| | | | | | | | Impl. manages up-to 32 windows (BCM layer elements) - dunno whether this is a proper value. Note: Layer 2000 is reserved for out PointerIcon. Removed 'dead code'.
* NEWT bcm_vc_iv.c: Disable VERBOSE_ONSven Gothel2014-01-091-1/+1
|
* Bug 676 - Add support for native Mouse Pointer rendering (Rasp.-Pi.)Sven Gothel2014-01-091-3/+3
| | | | | | | | | | | | | | - Utilizing layer element 2000 for PointerIcon - Using NEWT PointerIcon code - Using MouseListener to update PointerIcon position - FIXME: Check whether we shall intercept sendMouseEvent directly (lag) Misc: - Properly open, assign and close the BCM display handle - Properly destroy the window (BCM element) - Prepare for multiple windows, set position and size
* Bug 676: Use proper pointer icon images (artwork)Sven Gothel2014-01-094-0/+0
| | | | .. shameless inspired by KDE's Oxgen scheme .. (they are best)
* Bug 935: NEWT PointerIcon: Utilize Toolkit Agnostic PixelFormat and ↵Sven Gothel2014-01-083-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conversion Utilities (Allowing 'arbitrary' PointerIcon data input) Commit fe28bc125429b38cdcd016746081f4a6d521c6fd added the notion of toolkit agnostic PixelFormat and conversion utilities, utilized and further tested by this patch. +++ - PointerIcon is a PixelRectangle and hence holds the decoded data. This allows on-the-fly conversion if required as well as recreation w/o PNG re-decoding. - Using array-backed PointerIcon data where possible, allowing better performance when converting PixelFormat etc. - NEWT Display adds 'createPointerIcon(final IOUtil.ClassResources pngResource...' method to support agnostic PointerIcon creation. - NEWT Display adds methods to allow users to avoid PixelFormat and Buffer NIO type forced conversion: - PixelFormat getNativePointerIconPixelFormat() - boolean getNativePointerIconForceDirectNIO() +++ PNGImage -> PNGPixelRect Deleted: com.jogamp.opengl.util.texture.spi.PNGImage Added: com.jogamp.opengl.util.PNGPixelRect (We hope nobody was using PNGImage directly since it was a service-plugin for TextureIO) PNGPixelRect is a PixelRectangle PNGPixelRect actually is implemented OpenGL agnostic, however - since our PNGJ support lives under package 'jogamp.opengl.util.pngj' it cannot be moved up (yet). PNGPixelRect now handles all PixelFormat for the target format and also added support for grayscale+alpha (2 channels). The latter is force-converted to RGB* - similar to paletted. Further more, PNGPixelRect allows simply passing an OutputStream to write the PNG data. Used by: TextureIO and NEWT +++ - OffscreenSurfaceLayer's setCursor(..) uses the agnostic PixelRectangle instead of a PNG resource. - AWTMisc uses the PixelRectangle to produce the AWT Cursor and converts it to the required format. Hence same pixels are used for NEWT and AWT pointer/cursor icon. - TestGearsES2Newt and NewtAWTReparentingKeyAdapter 'tests' iterate over 3 custom PointerIcon when pressed 'c'. - JOGLNewtAppletBase uses the new custom PointerIcon 'newt/data/crosshair-lumina-trans-32x32.png', which is included in NEWT (213 bytes only). -
* Bug 935: NEWT PointerIcon: Refine Spec and Implementation / Fix OSX Crash ↵Sven Gothel2014-01-042-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and Issues - Refine Display.PointerIcon: Complete type allowing re-creation - Add associated Display reference - Add used IOUtil.ClassResources reference - Add isValid()/validate() methods for recreation - Refine API doc - Move Display.destroyPointerIcon(PointerIcon) -> PointerIcon.destroy() - Move DisplayImpl.PointerIconImpl -> PointerIconImpl (own source file) - Creation/Destruction and setting of PointerIcon happens on EDT - DisplayImpl.shutdownAll() and Display.destroy() calls destroyAllPointerIconFromList - WindowDriver.setPointerIconImpl: Validates PointerIconImpl (i.e. re-creates if required) - Fix 'initial' window.setPointerIcon(..) before createNative(..), tested w/ TestGearsES2NEWT - OSX Native Code: - Move mouse and pointer-state handling from NewtMacWindow -> NewtView class to retain states (pointer handle, pointer visibility, etc) when reparenting. Reparenting will move an exisiting NewtView into a new NewtMacWindow. - Enable all mouse move events: - NewtView::mouseEnter [nsWin makeFirstResponder: nsView]; - NewtView::mouseExited if( !mouseConfined ) { [nsView resignFirstResponder]; } - NewtView::mouseMoved issued [myCurser set] if required, fixing OSX issue not updating NSCursor properly. - MacWindow: - Test NewtMacWindow, NewtView and NSCursor handles before usage - Fix DBG_PRINT(..) warnings
* Bug 934, Bug 935: NEWT: Add support for custom Application/Window and ↵Sven Gothel2013-12-3110-7/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | Pointer Icons - Utilizing JOGL's PNG decoder for all icons, if available. - Application/window icons: - Providing default application/window icons in 16x16 and 32x32 size - NewtFactory.setWindowIcons(..) or property 'newt.window.icons' maybe used to override default icons. - Using icons at application/window instantiation - Display.PointerIcons: - NativeWindow Win32 WindowClass no more references a default cursor in favor of fine grained cursor control [in NEWT] - Display provides create/destroy methods, where display destruction also releases open PointerIcon references. - Window.setPointerIcon(..) sets custom PointerIcon - Implemented Platforms - X11 - Windows - OSX - Manual Test: TestGearsES2NEWT (Press 'c')
* OSX Test Scripts: Use dedicated location for libav/ffmpeg libraries for ↵Sven Gothel2013-12-303-3/+3
| | | | | | DYLD_LIBRARY_PATH '/usr/local/lib' may cause hacoc w/ other preinstalled libs, see: http://forum.jogamp.org/JTabbedPane-Canvas3D-bug-tp4030983p4031081.html
* JOGL Assets: Preserve 'original' 'test-ntsc01-160x90.png' (Removed from jar ↵Sven Gothel2013-12-281-0/+0
| | | | files by commit 80edd3f92f5afb3e1971d0b59fd91f8714a772db)
* JOGL Assets: Replace test-ntsc01-160x90.png w/ test-ntsc01-57x32.png (Save ↵Sven Gothel2013-12-282-0/+0
| | | | ~2 kB)
* Bug 929, Bug 852 - Reflect ES3 Compatibility with ES2 / Add CPU Sourced Data ↵Sven Gothel2013-12-221-1/+3
| | | | | | | | | API Func to ES3 Interface Since ES3 is compatible w/ ES2 and CPU sourced data is [still] allowed (but marked deprecated), re-adding them to the ES3 interface for completness. Note: CPU sourced data API functions will be removed in ES4, similar to GL core >= 3.0
* Bug 929 - Reflect ES3 Compatibility with ES2Sven Gothel2013-12-212-5/+4
| | | | | | | | | | | | | | | | | | | | | - Map ES2 -> ES3 GLProfile, if available - EGLDrawableFactory: Don't query ES2 if ES3 is available - Fix queries and get methods (GL, GLContext and GLProfile): - glES3.isGLES2()==true and glES3.getGLES2()!=null - ctxES3.isGLES2()==true, - glES3Profile.isGLES2()==true - Enhance Unit test: TestGLProfile01NEWT - Test all GLProfile availability combinations based on implementing GLProfile - Test all GLProfile's isGL*() based on highest GLProfile identity - Test all GL's isGL*() based on highest GL identity.
* Bug 925 - Accept an ES3 Context, if reported via GL-Version-String w/o ↵Sven Gothel2013-12-211-5/+5
| | | | | | | | | | | | | | | | | | | EGL_OPENGL_ES3_BIT_KHR Add Quirk 'GLES3ViaEGLES2Config': ES3 Context is used via EGL_OPENGL_ES2_BIT and 'version 2' for create context attributes. - GLContextImpl.setGLFunctionAvailability(..)'s ES version validation only fails if requested major version == 1 and doesn't match. Hence requesting major==2 and having version 3 is tolerated. - GLContextImpl.setGLFunctionAvailability(..)'s Quirks: requested-major < has-major -> Adding GLES3ViaEGLES2Config - EGLDrawableFactory.mapAvailableEGLESConfig(..): Reflects has-major version, i.e. GLES3ViaEGLES2Config situation where an ES2 request leads to an ES3 version. Note: All workarounds can be found via lookup of GLES3ViaEGLES2Config (as usual when using quirks).
* Bug 924: Make ALWAYS_ON_TOP Persistent when Reparenting (child -> top) (2nd ↵Sven Gothel2013-12-201-1/+1
| | | | | | | | | | | | attempt) Commit c8726ef04b94ad8e66e1191a06ff793b908d130c reinforced ALWAYS_ON_TOP in native reconfig code issued at reparenting call, which might be too early for the WM. Perform ALWAYS_ON_TOP reinforcement from java side when reparenting CHILD -> TOP was successful and visibility is reached. X11 only! NewtAWTReparentingKeyAdapter: Add 'a' alwaysOnTop toggle to test w/o applet code.
* Bug 924: More robost Fullscreen ExitSven Gothel2013-12-191-3/+4
| | | | | | | | | | | - 'tempInvisible' shall be also performed for top windows, solves Unity-WM background refresh issue - Rename local field 'fullscreen' -> '_fullscreen' to avoid confusion - Proper insets handling: Set 'WindowImpl.this.fullscreen = _fullscreen' only before reconfiguring, otherwise wrong position maybe used due to wrong insets value. Tested w/ WMs: KWin + Unity
* Bug 928 - JAWTWindow's JAWTComponentListener _not_ attached and original ↵Sven Gothel2013-12-181-4/+4
| | | | | | | | | | | | | | | | | | visibility state not restored @ detach Commit ebed9f0322e2a2279a525e04ee3875c9034a7f45 (fix for Bug 906) causes a regression to fix for Bug 816, Bug 849 and Bug 889 (OSX CALayer Positioning and JAWTWindow visibility). The commit adds the JAWTComponentListener instance 'jawtComponentListener' to the component before it's assignment (duh!). +++ Further more, detaching the JAWTComponentListener shall restore the component's original 'local visibility state', which might got overridden by it's 'hierarchyChanged' implementation. +++
* Bug 918 (2/2): Determine StreamWorker usage after stream-init ; Fix seek(..) ↵Sven Gothel2013-12-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ; Fallback for EOS Detection ; MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek Determine StreamWorker usage after init - To support audio only files, we need to determine to use StreamWorker after completion of stream-init. Fix seek(..) - FFMPeg: pos0 needs to use aPTS for audio-only - Clip target time [0..duration[ Fallback for EOS Detection In case the backend does not report proper EOS: - Utilize 'nullFramesCount >= MAX' -> EOS, where MAX is number of frames for 3s play duraction and where 'nullFramesCount' is increased if no valid packet is available and no decoded-video or -audio in the queue. - Utilize pts > duration -> EOS MovieSimple uses full GLEventListener for 'Audio Only' as well to test seek - Matroska seek for audio-only leads to EOS .. http://video.webmfiles.org/big-buck-bunny_trailer.webm - MP4 audio-only seek works http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4 MovieSimple/MovieCube: - Use audio-pts in audio-only to calc target time Tested: - A, V and A+V - Pause, Stop and Seek - GNU/Linux
* Bug 918 (1/2): Use StreamWorker in 'Audio Only' mode, since no ↵Sven Gothel2013-12-111-3/+3
| | | | | | | | 'getNextTexture(..)' is issued here! Thanks to Xerxes to analyze this issue thoroughly. TODO: Implement EOS for 'Audio Only' and test seek, pause, etc .. - Apply manual tests in MovieSimple
* Bug 922 (1/2): NEWT Window.reparentWindow(..): Provide ↵Sven Gothel2013-12-111-4/+2
| | | | | | | | | | | | REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints; Deprecate other reparentWindow(..) variants w/o hints. NEWT Window.reparentWindow(..): Provide REPARENT_HINT_BECOMES_VISIBLE hint via new method variant using hints: - Add REPARENT_HINT_FORCE_RECREATION, covering 'old' forceDestroyCreate boolean argument - Add REPARENT_HINT_BECOMES_VISIBLE, Claim window becomes visible after reparenting, which is important for e.g. preserving the GL-states in case window is invisible while reparenting. Deprecate other reparentWindow(..) variants w/o hints. Use only new variant using hints w/o semantical change.
* TestShutdownCompleteNEWT/AWT: Align both tests and account for GLInfo.Sven Gothel2013-12-102-4/+4
|
* TestShutdownCompleteNEWT: Enhance profiling via '-wait -initOnly' ; Use ↵Sven Gothel2013-12-101-2/+2
| | | | | | | | | | | | | Platform.currentTimeMicros() for accuracy ReflectionUtil usage: TestShutdownCompleteNEWT -wait -initOnly Hotspots: - MakeCurrent 5.3% - Called 52 times - ClassLoader.findClass(..) 3.1% - Called 486 times . - ReflectionUtil: 13 times ~ 0.3%
* Bug 904: 'User Vertical Flip' for GLJPanel w/o vertical flip must be ↵Sven Gothel2013-12-102-4/+4
| | | | considered in AWTTilePainter: 'Origin of GL image is still on Bottom'
* TestNewtKeyEventAutoRepeatAWT: Fix regression of commit ↵Sven Gothel2013-12-042-5/+5
| | | | 8512777873461ee33d8ed913ee26bafc00a08a02
* Bug 919 - TestNewtKeyCodesAWT w/ NewtCanvasAWT Fails on Windows Due to ↵Sven Gothel2013-12-043-6/+7
| | | | | | | | | | | | | | Clogged Key-Release Event by AWT Robot Impact: Only unit test code - TestNewtKeyCodesAWT: Fix Bug 919 - Move mouse bacl/forth while waiting for events .. - Use common wait for key timeout/polling using constants in NEWTKeyUtil - InputEventCountAdapter: 'getQueued()' -> 'copyQueue()' - ensuring queue is copied while instance is locked.
* Bug 914: Newt OSX: Don't use exclusive fullscreen mode (captured display) in ↵Sven Gothel2013-12-021-1/+1
| | | | favor of proper WM incl. ALT-TAB app-switching
* Bug 914 - Don't allow 'alwaysontop' in fullscreen mode, always allow ↵Sven Gothel2013-12-012-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | switching to other applications via ALT-TAB As described @ <http://forum.jogamp.org/Regression-of-alwaysOnTopBug-tp4030735p4030738.html>, we shall not steal the desktop in fullscreen mode via 'alwaysontop'. Latest tests on X11/GNU/Linux and Windows7 - before this patch: With default settings, i.e. alwaysontop (atop) disabled, it works as expected here, i.e.: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB can actually switch to other apps. However, with enabled atop: - ALT-TAB triggers WM dialog, switching between apps. - ALT-TAB does _not_ switch to other apps. (*) I consider this a serious issue, since we shall not steal the desktop in fullscreen mode. This patch disables atop in fullscreen mode, i.e. (*) will switch to other apps again!
* GLJPanel.initializeBackend(offthread=true): Enable on Windows, thanks to Bug ↵Sven Gothel2013-12-012-4/+4
| | | | | | | 907 impl. DummyDispatchThread (DDT) Bug 907 implemented DDT used to create and destroy offscreen surface's dummy drawable on Windows. This enables offscreen initialization on Windows running from a short lived arbitrary thread.
* Bug 907 - Refine DummyDispatchThread (DDT) Handling: Proper OO integration ↵Sven Gothel2013-11-293-17/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | in RegisteredClass; Safe DDT Post/WaitForReady handling and error cases ; ... Proper OO integration of DDT in RegisteredClass - DDT is optional to RegisteredClass[Factory], i.e. NEWT without DDT and DummyWindow with DDT. - Using native type DummyThreadContext per DDT passed as DDT handle to java referenced in RegisteredClass - Passing DDT handle to related native methods, if not null use DDT - otherwise work on current thread. The latter impacts CreateDummyWindow0 and DestroyWindow0. Safe DDT Post/WaitForReady handling and error cases ; ... - Wait until command it complete using a 3s timeout - Terminate thread if errors occur and throw an exception +++ Discussion: DDT Native Implementation Due to original code, the DDT is implemented in native code. Usually we should favor running the DDT from a java thread. However, since it's main purpose is _not_ to interact w/ java and the native implementation has less footprint (performance and memory) we shall be OK w/ it for now - as long the implementation IS SAFE.
* Fix Bug 902: FFMPEGMediaPlayer uses IOUtil.decodeURIIfFilePath(uri) to ↵Sven Gothel2013-11-283-8/+9
| | | | decode proper file-scheme if applicable - otherwise encoded ASCII URI.
* Bug 672 (NewtCanvasSWT): Reuse SWTAccessor.isOS_TYPE ; Impl ↵Sven Gothel2013-11-252-4/+8
| | | | | | | | | | | | | | | | | | | | | NW.getLocationOnScreen(..) for X11 and Windows ; Allow unit test to run on all platforms. - Reuse SWTAccessor.isOS_TYPE (public now) - Impl NW.getLocationOnScreen(..) for X11 and Windows reusing existing native code - Allow unit test to run on all platforms. Note: NewtCanvasSWT unit tests require a 'wait for realized' while SWT dispatching. Otherwise the 'sash unit test' will fail since realiziation happens later, at least on X11. Hence extended AWTRobotUtil.waitForRealized(..) to use a 'waitAction' which is used here w/ special SWT dispatch Runnable. AWTRobotUtil.waitForRealized(..) operates on time-delta instead of iteration-counter, allowing above 'waitAction' Runnable. AWTRobotUtil.waitForRealized(..) removed 2nd 'glad.isRealized()' loop ..
* Bug 909 - Reccreate GLJPanel's BufferedImage is no more sourced by singleton ↵Sven Gothel2013-11-211-2/+4
| | | | | | | | | | | | AWTGLPixelBuffer GLJPanel must validate whether it's local BufferedImage's DataBuffer is sourced by the current singleton AWTGLPixelBuffer. Case: GLJPanel-B has created a new singleton AWTGLPixelBuffer w/ increased size. Previous created GLJPanel-A's local BufferedImage's DataBuffer is no more sourced by the singleton AWTGLPixelBuffer and hence must be re-created.
* Fix Bug 893 - NewtCanvasAWT Lifecycle Race Condition (NPE on shutdown ↵Sven Gothel2013-11-181-4/+4
| | | | | | periodically) As suggested: Employ synchronization on lifecycle actions _and_ perform destroyImpl(..) always on AWT-EDT to avoid a deadlock.