summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* MacOS: Add more debug log detailsSven Gothel2019-11-212-16/+49
|
* Bug 1393: MacOS: Implement AppKit EDTUtil operating solely on main-threadSven Gothel2019-09-162-1/+362
| | | | | | Introducing boolean property 'newt.macos.useAppKitEDTUtil', which defaults to 'false'. If enabled, the new AppKitEDTUtil is being used, operating on the AppKit main thread. This is used to ease debugging Bug 1393, minimizing thread context switches.
* Bug 1393: Adding test cases setting visibility before enabling exclusive ↵Sven Gothel2019-09-161-18/+78
| | | | | | | | | context thread animator MacOS Java11 freezes occur on 3rd NEWT window creation (orderFront) after enabling exclusive context thread animator. Here we add set visibility upfront which does not trigger the freeze on the AppKit main thread. Note: OpenJDK8 works flawlessly. For some reason, the exclusive context thread enabled animator interferes when 'orderFront' is issued.
* Bug 1394 - NEWT X11Window didn't gather inset at window creation (properly)Sven Gothel2019-09-111-16/+46
| | | | | | | | | | | | | | X11Window.c's 'NewtWindows_getFrameExtends(..)' retrieves the insets via XGetWindowProperty on _NET_FRAME_EXTENTS. Right after window creation this method fails as the WM did not yet provide the information as the window has not yet been mapped. Implementation needs to retry for a certain amount of time (250ms) and maximum number of attempts (96 XEvent). This issue surfaced while validating fix for Bug 1393, testing TestDisplayLifecycle02NEWT also on X11.
* Bug 1393: Add window position validation in TestDisplayLifecycle*NEWTSven Gothel2019-09-112-15/+45
| | | | | | | | The OSX fixes for bug 1393 spun off certain tasks like position/size gathering async to AppKit, hence we should validate whether both are valid. Further the TestDisplayLifecycle02NEWT had one bug, it retrieved 'screen.getViewportInWindowUnits()' while it was not yet initialized.
* NEWT Cleanup: WindowImpl: Drop unused 'defer' argument (state change only): ↵Sven Gothel2019-09-109-26/+21
| | | | insetsChanged + insetsVisibleChanged
* NEWT Cleanup: WindowImpl::visibleChanged(ZZ): Remove unused 'defer' ↵Sven Gothel2019-09-1019-60/+59
| | | | argument. Method only changes state.
* Bug 1393: OSXUtil: Optionally inject Apple's 'Main Thread Checker'java11iosSven Gothel2019-09-093-4/+34
| | | | | | | | To allow proper testing of whether all AppKit calls are performed on its Main-Thread where required, we inject the libMainThreadChecker.dylib when property 'nativewindow.debug.OSXUtil.MainThreadChecker' is set. See <https://developer.apple.com/documentation/code_diagnostics/main_thread_checker?language=objc> Lib-Name: /Applications/Xcode.app/Contents/Developer/usr/lib/libMainThreadChecker.dylib
* Bug 1393: MacOS/iOS: Issue updateSizePosInsets0 async to AppKit Main-ThreadSven Gothel2019-09-092-5/+22
| | | | | | Additionally, setPointerIcon0 must also be made async on AppKit (instead of wait), we have to assume/hope the user won't pull the PointerIconImpl instance in-between ;-) Hence removing the comment regarding the lifecycle.
* Bug 1393: Run orderFront0(=setVisible) async off-thread on AppKit after sync ↵Sven Gothel2019-09-096-161/+162
| | | | | | | | | | | | | | | | | AppKit NSWindow creation MacOS 10.14.6 + OpenJDK11U produces occasional freezes on AppKit Main Thread Latest manual tests after resolving Bug 1389 disclosed a few occasional freezes using NEWT + Java11. These are related to probable AWT changes since Java8, as these do not occur with Java8. Fix: Spun off orderFront0(=setVisible) async off-thread on AppKit after sync AppKit NSWindow creation. This fix also aligns the macos createWindow code with the new simplified ios implementation, see commit 004c67c73a0309158c30929cd0d6513e23f34803
* OSXUtil::IsMainThread() Utilize ThreadLocal storage flag avoiding ↵Sven Gothel2019-09-081-24/+19
| | | | unnecessary JNI calls
* Buig 1389: Fix SIGSEGV on OpenJDK11 on [NSApplicationAWT sendEvent:]Sven Gothel2019-09-0810-18/+44
| | | | | | | | | | | | | | | | | | | | | | Culprit of the crash and the non propagated action on NSApp main-thread was _simply_ our OSXUtil_KickNSApp() 'kick alive' NSApplicationDefined NSEvent sent to the NSApp. Java11's NSApp code overrides sendEvent and handles NSApplicationDefined + subtype=ExecuteBlockEvent using the given data1 as a function pointer. 8-O ExecuteBlockEvent defined as 0, which we have sent. Simply passing subtype=8888 avoids this side-effect. Whether it is still required to KickNSApp() is another question. +++ Further, make code a bit more robuts regarding the offscreenSurfaceLayer at JAWTWindow invalidate. I.e. if still not detached, do the late cleanup there. This just in case the OSX Context callback to disassociate the drawable has been missed.
* Bug 1392: Simplify CapabilitiesFilter: Criteria -> Test, remove ↵Sven Gothel2019-09-073-31/+28
| | | | RemovalCriteria as all Test definitions may be used for anything.
* Bug 1392: X11PixmapGLXDrawable::createPixmap() requires ↵Sven Gothel2019-09-071-2/+2
| | | | | | | X11GLXGraphicsConfiguration having a valid XVisualInfo Therefor X11GLXGraphicsConfiguration::GLXFBConfig2GLCapabilities(..) also needs to clean the GLGraphicsConfigurationUtil.BITMAP_BIT from drawableTypeBits and if all removed, drop the FBConfig.
* Bug 1391 Bug 1392: Implement GLRendererQuirks DontChooseFBConfigBestMatch ↵Sven Gothel2019-09-0711-107/+272
| | | | | | | | | and No10BitColorCompOffscreen Further enhance unit tests TestGLProfile03NEWTOffscreen, i.e. test all meta profile types on all offscreen drawable types (fbo, pbuffer and bitmap). Align unit test name numbers of TestGLProfile01NEWT to TestGLProfile03NEWTOffscreen.
* Bug 1392: Add CapabilitiesFilter and GLCapabilitiesFilter supporting diverse ↵Sven Gothel2019-09-072-0/+237
| | | | | | | | reusable [GL]CapabilitiesImmutable list filter To implement fix for Bug 1392, we have to remove certain GLCapabilitiesImmutable from the availability list. These filter provide a a clean reusable utility for the fix.
* Bug 1391: Cleanup to submit fix: Update known Quirk range; ↵Sven Gothel2019-09-073-11/+25
| | | | BuggyColorRenderbuffer enables NoFullFBOSupport
* Bug 1390: Fix GLPixelBuffer.GLPixelAttributes::convert(GL, int, boolean) ↵Sven Gothel2019-09-054-12/+31
| | | | | | | | | | | | | | | | | | | | | | | | | failure on unsupported GL data format/type GLPixelBuffer.GLPixelAttributes::convert(GL, int, boolean) failed on unsupported GL data format/type On Mesa/AMD for GLPBuffer chosen GLCaps used rgba 10/10/10/2 and the GLContext set default values: GL_IMPLEMENTATION_COLOR_READ_FORMAT: 0x1908 GL_RGBA GL_IMPLEMENTATION_COLOR_READ_TYPE: 0x8368 GL_UNSIGNED_INT_2_10_10_10_REV GLPixelBuffer.GLPixelAttributes::getPixelFormat(int format, int type) currently does not handle the type GL_UNSIGNED_INT_2_10_10_10_REV and hence returned a null PixelFormat. Therefor the ctor GLPixelAttributes failed and threw the exception: "Caught GLException: Could not find PixelFormat for format and/or type: PixelAttributes[fmt 0x1908, type 0x8368, null]" This fix has the GLContext default values pre-validated in the convert(..) method and to use default GL_RGBA and GL_UNSIGNED_BYTE fallback values if not supported. This is most important to be future proof. Later we may shall add these 32bit coding 2+10+10+10 and its reverse.
* Bug 1363: Java 11: Utilize UnsafeUtil.doWithoutIllegalAccessLogger(..) ↵Sven Gothel2019-09-043-53/+84
| | | | | | | | | | avoiding further unnecessary warnings Access to said internal non-exported methods is essential. See commit c5431f46b7bf64f109315ec78461859dd88f202a. Further added verbose DEBUG output where applicable.
* Bug 1363: Java 11: JAWTUtil: Use sun.awt.SunToolkit.awtLock/Unlock and ↵Sven Gothel2019-09-044-238/+131
| | | | | | | | | | | | | | | disableBackgroundErase (impl. semantics) Commit 13c6bbbde5ea476d60e0a2f04a5172d3302d0edd simply removed the AWT commonly used SunToolkit lock/unlock methods, which was incorrect. It lead to certain resources access collisions as access has to be synchronized using the same reentry lock across AWT and NativeWindow/JOGL. We utilize the new com.jogamp.common.util.UnsafeUtil of GlueGen commit 07c1885e9a3d1f3a3853414648c06fb3864bc69f to disable the IllegalAccessLogger while fetching the methods/fields and making them accessible. JAWUtil also hosts access to SunToolkit's disableBackgroundAccess(Component) aligning the code for GLCanvas, NewtCanvasAWT and AWTCanvas.
* check-junit: enhance output (make it a brief list of classes)Sven Gothel2019-09-041-2/+2
|
* Bug 1363: Java 11: Use new Android SDK 24 for Eclipse Android .classpathSven Gothel2019-09-041-1/+1
|
* Bug 1384: Move remaining 'lose' property quirks into GLRendererQuirks.OverrideSven Gothel2019-08-233-42/+27
|
* Bug 1385: Limit Quirk GL3CompatNonCompliant to Mesa < 18.2.0Sven Gothel2019-08-231-3/+4
|
* Bug 1383: Tighten version/profile qualification: fail if: requested compat ↵Sven Gothel2019-08-231-2/+10
| | | | | | | | | | | | | | profile && has core profile On Mesa, if requesting a 3.1 compat profile, we receive a 4.5 core profile. This is natural due to constraints within glXCreateContextAttribsARB, i.e. GLX_CONTEXT_PROFILE_MASK_ARB is only a available for versions >= 3.2 and these are not available on Mesa. Tested with Mesa 18.3.6 of Debian 10 Buster, which also confirms Bug 1385 fix of limitating GL3CompatNonCompliant to Mesa < 18.2.0
* Bug 1383: Final fix: Always test GL3CompatNonCompliant and test on requested ↵Sven Gothel2019-08-223-4/+22
| | | | | | | | | | | | | | version/profile, also .. also, if requested version is within GL3CompatNonCompliant valid range, i.e. < 3.1, the detected actual version will be clipped for valid mapping to the requested data. Here it might be essential to know, that all versions are being 'scanned' via mapGLVersions from high to low. Therefor Version 3.0 would be tried before 2.0 and both will be mapped to the clipped actual version 3.0. The true actual version could be the maximum, however, using the very same would lead to trying an invalid unavailable GLProfile.
* Bug 1383: GLContextImpl.setGLFunctionAvailbility(..): Ensure only one ↵Sven Gothel2019-08-221-2/+33
| | | | | | | requested profile bit is set; Query GL_CONTEXT_PROFILE_MASK for hasCtxProfileBits and finally guess the GL profile bit if none could be determined: 'isESReq ? GLContext.CTX_PROFILE_ES : GLContext.CTX_PROFILE_COMPAT'
* Bug 1283: GLContextImpl.setGLFunctionAvailbility(..) calls: When leaving ↵Sven Gothel2019-08-225-6/+6
| | | | | | OpenGL version open, don't assume the profile The profile should be queried at runtime like the version in these situations.
* Bug 1383: GLContext.isValidGLVersion() ensure only one profile bit is set ↵Sven Gothel2019-08-221-1/+14
| | | | max; Add OpenGL version 4.6
* Bug 1383: Cleanup GLContextImpl.setGLFunctionAvailability(..): Parameter, ↵Sven Gothel2019-08-221-119/+151
| | | | | | | | | variables and clip at 180 line width This cleanup became necessary to re-analyse the code after quite some time. Using clear immutable input input parameters for the requested OpenGL version+profile and mutable current state 'has'.
* GLRendererQuirks: Fix typoSven Gothel2019-08-211-1/+1
|
* JoglVersion.getGLInfo: Increase robustness of debug outputSven Gothel2019-08-212-8/+20
|
* Bug 1384: Allow GLRendererQuirks to be overridden by user propertiesSven Gothel2019-08-212-69/+131
| | | | | | | | | | | | | | | | | | | | | Allow GLRendererQuirks to be overridden by user properties, allowing to either force (inject) a quirk by a user property or to ignore a quirk by a user property. This helps: - debugging certain quirk behavior (See Bug 1383) - allowing a user to customize the quirk setting +++ This patch also refines the quirk: GLNonCompliant -> GL3CompatNonCompliant, i.e. constraints its semantics to GL3 compatible context. +++ This patch also removed useless code of GLRendererQuirk, i.e. the 'int[] quirk' array arguments which are nonsense or wasteful, as we operate with bitmasks.
* Bug 1101: Add missing disposal of Pipelined_QuadRenderer's VBOsSven Gothel2019-08-201-3/+15
| | | | Original author is 'Tof'
* Reverting erroneous junit-test task condition (ant build)Sven Gothel2019-08-201-3/+3
| | | | | | | | | | | | | as introduced while hacking on iOS. - Builds on MacOS, Windows and GNU/Linux now. - All but 2 tests passed on Windows - GNU/Linux AMD GPU regression -- 1) No compat profiles on X11 device -- 2) Remaining core only profiles disclose buggy GLProfile selection -- This needs to be fixed pre-release
* Bug 1363: Java 11: Resolve unsupported JAWTUtil.getMonitorDisplayID(..)Sven Gothel2019-08-192-8/+14
| | | | | | | | | | | | | | | | | Previous commits removed access to OSX's GraphicsDevice.getCGDisplayID() on Java9+, avoiding illegal reflective access. Here we JAWTUtil.getMonitorDisplayID(..) simply returns null if Java9 or !OSX, so the sole NewtFactory caller falls back to the alternative working solution. Orig patch Wade Walker: This was used on Mac OS only to create a MonitorDevice in NewtFactoryAWT. But there was a fallback method for creating MonitorDevice, and testing with TestGearsES2GLJPanelAWT shows that the fallback method seems to give identical results on Mac, so changed to just use the fallback method (which is now the only method) everywhere. This gets rid of an illegal reflective access.
* Bug 1363: Java 11: Use getPixelScale standard method even on Mac under Java9+Sven Gothel2019-08-191-50/+50
| | | | | | | | | | Changed getPixelScale to use standard method, even on Mac Previously it used a Mac-specific method, but the new standard method of device.getDefaultConfiguration().getDefaultTransform() seems to work on Mac, so use it instead to avoid illegal reflective access warnings. Orig patch by Wade Walker.
* Bug 1363: Java 11: Don't use GraphicsDevice.getScaleFactor() on Java9+ ↵Sven Gothel2019-08-191-3/+16
| | | | | | | | | | | | [illegal reflective access] Use non-reflective method to get the pixel scale on Java9+ It's now possible to use GraphicsConfiguration.getDefaultTransform() instead of using reflection to get the pixel scale, which eliminates an illegal reflective access warning. Orig patch by Wade Walker
* Bug 1363: Java 11: Don't use sun.awt.SunToolkit.awtLock/Unlock on Java9+ ↵Sven Gothel2019-08-192-13/+18
| | | | | | | | | | | | | | | | [illegal reflective access] Avoid illegal reflective access to sun.awt.SunToolkit.awtLock/Unlock on Java9+ Apparently these give a performance benefit on X11 by avoiding taking the AWT global lock, and instead only taking a Java lock defined in sun.awt.SunToolkit. But this has thrown a warning since Java 9, and will soon be illegal. If a performance problem remains on X11, we'll need to find another solution. Orig patch by Wade Walker. This patch only skips utilizing said API on Java9+ while maintaining orig code path for Java8.
* Removed illegal reflective access to sun.java2d.opengl.OGLUtilitiesWade Walker2019-08-191-31/+8
| | | | | | | | We were reading a variety of surface type definitions from sun.java2d.opengl.OGLUtilities using reflection, which has thrown warnings since Java 9 and which soon will become illegal. For now, just hard-coded these types to remove the warnings that happen during static initialization. Eventually the entire Java2D class will have to be revamped if we want to be able to actually use it.
* Bug 1363: Java 11: (Hack) Inject OpenJFX [basic, graphics] into CLASSPATHSven Gothel2019-08-195-0/+191
| | | | | | | | | | | The OpenJDK JAR files within this folder only conveniently serve to compile JOGL on all platforms. They were extracted from Debian 10's 'libopenjfx-java' package version 11.0.2+1-1 See copyright (also extracted from package above) for (c) details. Note: This is similar to our SWT injection etc.
* Fixed clean target so it doesn't fail if GlueGenTask is not presentSven Gothel2019-08-194-7/+9
| | | | | | | | | | | | | If gluegen was cleaned, the GlueGenTask would be absent, which would cause a failure in jogl clean (even though GlueGenTask isn't needed in the clean target). So, modified the jogl build so it doesn't load GlueGenTask in the clean target. Orig commit by Wade Walker. This alternative patch uses the ant target common.gluegen.init to define the 'gluegen' task post gluegen compile check and pre 'gluegen' call, avoiding the if-then-else ant-task state query: <equals arg1="${ant.project.invoked-targets}" arg2="clean" />
* Bug 1363: Java 11: Adapt scripts for java11 (cont)Sven Gothel2019-08-1924-171/+35
|
* Bug 1363: Java 11: Aligned HowToBuild.html w/ GlueGen's updated versionSven Gothel2019-08-191-75/+108
|
* Bug 1363: Java 11: Complement javah replacement: Add new iOSSven Gothel2019-08-191-21/+20
| | | | Complements patch 63e31d05ad9f1df99663997c2f04ad086f29c8fc
* Bug 1363: Java 11: bring back bootclasspath for java 8 target accuracySven Gothel2019-08-196-2/+30
| | | | | | | | | | | | | | | Was removed mostly via commit 63e31d05ad9f1df99663997c2f04ad086f29c8fc We have 2 choices building for java8 under java11: 1) use source, target and bootclasspath options 2) use release option It is said that (2) is not yet accurate enough and (1) shall be favored as it guarantees no java>8 class leak from the build JDK. This patch is isolated to allow removal of said bootclasspath if desired by anybody
* Removed remaining bootclasspath and javah; build now works on Windows 10Wade Walker2019-08-196-33/+201
| | | | | | (sgothel: This cherry picked merge will be refined) Also removed a couple of duplicate "source" tags in javac tasks.
* Bug 1363: Java 11: Adapt build scripts for java11Sven Gothel2019-08-1917-87/+79
|
* Bug 1363: Java 11: javah replacement: Use conditional ant targets instead of ↵Sven Gothel2019-08-191-64/+74
| | | | | | branches, also re-add bootclasspath Refines commit df7c0ad3b98d3520f023e026b6163bcba2c7ee7e
* Removed import that caused GLUgl2/GLUgl2ProcAddressTable not to compileWade Walker2019-08-191-1/+0
|