aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* NEWT Soft-PixelScale (p3): WindowImpl.createNativeImpl(..): Add boolean ↵Sven Gothel2023-01-3112-18/+23
| | | | | | positionModified[] return value, allowing to not wait for the previous custom position This is required if createNativeImpl(..) modifies the target position, i.e. due to soft-pixel-scale.
* NEWT Soft-PixelScale (p2): MonitorDevice: Add getOrientationTo(..) to ↵Sven Gothel2023-01-311-0/+54
| | | | | | | | | | | | determine the orientation of this monitor to the other incl. the 'move_diff' move_diff int[2] to store the move delta for each axis from this-monitor to the other This will be utilized when a NEWT window moved across monitors to signal the move_diff, which helps to properly adjust the new position. Tested: All 4 monitor crossings right_of, left_of, above and below. TODO: Test and support a 'diagonal' move, i.e. move_diff on both axis.
* NEWT Soft-PixelScale (p1): WindowImpl: Separate window and pixel units for ↵Sven Gothel2023-01-3123-252/+435
| | | | | | | | | | | | | | | size and position via atomic-replacable int arrays NEWT's Soft-PixelScale supports software pixel-scale by multiplying the underlying surface pixel-size with the scale-factor and dividing the window position and size by same scale-factor. Hence the window position and size space is kept virtually steady at virtually assumed DPI 96 at higher actual screen DPI and the surface size is adjusted. +++ This window- and pixel-unit separation also includes all callbacks for the native driver implementations, hence the changes native code - allowing to determine whether window- or pixel-units were given.
* Fix NewtFactoryAWT: screen.getMonitor(..) -> screen.getMonitorById(..); Misc ↵Sven Gothel2023-01-316-10/+20
| | | | | | | | | | left-over changes .. GDIUtil: Remove uncommented GetMonitorPixelScale(..) point variant JAWTUtil: Clarify Java version comment w/ spacing NEWT Display.getThreadName(): Return 'Thread[0x<hash-value>, <name>]' NEWT Screen: Add getFullyEnteredMonitor(..) NewtCanvasAWT: @SuppressWarnings for determineIfApplet() and use FQN within method
* NativeWindow: Add getBounds() (moved from NEWT Window) and getSurfaceBounds()Sven Gothel2023-01-3111-62/+140
|
* Nativewindow Rectangle*: Add contains, scale*(float..) and make ↵Sven Gothel2023-01-312-17/+71
| | | | union(List<Rectangle*>) public; Fix union/intersection 'off-by-1' for pos2.
* GDIUtil: Add GetMonitor*() variants incl. PixelScale (Part-2, adding missing ↵Sven Gothel2023-01-312-0/+106
| | | | | | native header and code files) Part-1 in commit e96aeb6e9acd2b1435f5fad244a1488e74a3a6d6
* GDIUtil: Add GetMonitor*() variants incl. PixelScale; NEWT MonitorDevice: ↵Sven Gothel2023-01-2919-59/+184
| | | | Add 64-bit nativeHandle (Windows HMONITOR), add PixelScale for Windows
* WindowImpl: Reorder protected methods, groupd callbacks used for native ↵Sven Gothel2023-01-271-175/+202
| | | | callbacks ..
* TestDisplayLifecycle01NEWT: Invisible window might have been moved away ↵Sven Gothel2023-01-232-5/+21
| | | | (Windows 10)
* Execute AWT's Frame.setTitle() on AWT-EDT if already visible (avoid rare ↵Sven Gothel2023-01-224-14/+41
| | | | deadlock)
* TestSharedContextVBOES2SWT3: Remove unused importSven Gothel2023-01-221-1/+0
|
* SWTAccessor.invokeOnOSTKThread(): Fix comment ..Sven Gothel2023-01-221-2/+1
|
* MacOSXCGLContext: Fix typo in DEBUG outputSven Gothel2023-01-221-10/+10
|
* MacOSXCGLContext: Enable DEBUG1398 explicitly w/o debugAll()Sven Gothel2023-01-221-1/+1
|
* jogl's Debug.class: Add explicit debugNotAll(..) variant to skip debugAll()Sven Gothel2023-01-221-1/+5
|
* Workaround MacOS + SWT 4.26: java.lang.NullPointerException: Cannot invoke ↵Sven Gothel2023-01-224-67/+143
| | | | | | | | | | | | | | | | | | | | | | | | | "org.eclipse.swt.internal.cocoa.NSGraphicsContext.saveGraphicsState()" because "context" is null On MacOS 12+ and SWT 4.26 while not using AWT (-Djava.awt.headless=true, -XstartOnFirstThread), we recently get the following Exception from SWT (suppressed): java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.internal.cocoa.NSGraphicsContext.saveGraphicsState()" because "context" is null at org.eclipse.swt.widgets.Widget.drawRect(Widget.java:764) at org.eclipse.swt.widgets.Canvas.drawRect(Canvas.java:170) at org.eclipse.swt.widgets.Display.windowProc(Display.java:6287) at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method) at org.eclipse.swt.widgets.Display.applicationNextEventMatchingMask(Display.java:5565) at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5965) at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method) at org.eclipse.swt.internal.cocoa.NSApplication.nextEventMatchingMask(NSApplication.java:92) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3983) at com.jogamp.opengl.test.junit.util.SWTTestUtil$WaitAction$1.run(SWTTestUtil.java:52) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:183) at org.eclipse.swt.widgets.Display.syncExec(Display.java:5250) at com.jogamp.opengl.test.junit.util.SWTTestUtil$WaitAction.run(SWTTestUtil.java:63) at com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2SWT3.test02AsyncEachAnimator(TestSharedContextVBOES2SWT3.java:376) This is not observed if running using AWT (-Djava.awt.headless=false).
* AWTRobot.getClickTimeout(): NEWT Case: Return maximum(AWT, NEWT), otherwise ↵Sven Gothel2023-01-222-18/+43
| | | | we see click-count 2 on MacOS 12
* Test MouseAdapter: Use volatile qualifier to avoid reading too old valuesSven Gothel2023-01-222-6/+6
|
* Minor auto formatting: @Override, ..Sven Gothel2023-01-224-5/+38
|
* MacOS: JAWTWindow: Complete MacOS 12+ SIGSEGV JAW Crash Fix; This: Destroy ↵Sven Gothel2023-01-221-5/+12
| | | | | | | | | | | | | | | NSWindow on MacOS main-thread Destroy NSWindow on MacOS main-thread, avoiding spurious more rare SIGSEGV on MacOS 13/aarch64 This closes the MacOS 12+ SIGSEGV JAWT (CALayer) crash fix, see commits: - 4009198e34b50bba9582be24f33eaf83b94a2cb8 - 3c4cf1f37dc27d8d527804d195361a2287575147 - d969f473fdc72c6ca95f1796ff5af3f0c8bd51b6 - 81f395975c06a66183ad36cc43e8dc9bc7f4545b - b8977465b2fb8452c2560a5d2561b2561472edf0 - 470a0ff3a2efbe43404d5f80a403efb38005598a - 9829550f5bcb586f94f98f6d3c39f4d78fd78f3b
* MacOS: JAWTWindow.invalidateNative(): Use copied references in off-thread ↵Sven Gothel2023-01-221-10/+12
| | | | | | operations and zero source references upfront. Have user being aware of disposal then triggered and not later when performed on MacOS main-thread
* MacOS: JAWTWindow's OffscreeLayer: Show semantics in argument names and ↵Sven Gothel2023-01-222-17/+19
| | | | complete null checks in detachSurfaceLayerImpl(), setSurfaceScale()
* MacOS: JAWTWindow.layoutSurfaceLayerImpl(): Perform ↵Sven Gothel2023-01-222-6/+14
| | | | OSXUtil.FixCALayerLayout() on main thread and hence fetch and validate getAttachedSurfaceLayer() when needed
* OSXMisc.m: Show semantics: caLayer -> rootCALayerSven Gothel2023-01-221-15/+14
|
* MacOSXCGLContext.AttachGLLayerCmd: Allow DetachGLLayerCmd to revoke the ↵Sven Gothel2023-01-211-5/+11
| | | | | | | | attach command, essential if attach hasn't been done yet @ detach Otherwise a pending attach would still pass through after DetachGLLayerCmd releases the sync-lock from AttachGLCmd. DetachGLCmd also tests 0 != nsOpenGLLayer
* JAWTWindow.ctor: Initialize offscreenSurfaceLayer before useSven Gothel2023-01-211-1/+1
|
* JAWTWindow.invalidateNative() and .detachSurfaceLayerImpl(): Pass copy of ↵Sven Gothel2023-01-214-15/+17
| | | | offscreenSurfaceLayer for pending off-thread operation and immediately zero reference marking its future destruction.
* TestSharedContextVBOES2NEWT5: Try harder having the objects destroyed and ↵Sven Gothel2023-01-211-1/+7
| | | | | | taken from the GLContextShareSet map The objects were more sticky on my MacOS 12 x86_64 machine, this double GC w/ sleep 100ms resolved it.
* Don't import conditional platform specific 'static' code but fully qualify ↵Sven Gothel2023-01-202-43/+23
| | | | names when in use, make Android d8 (Dex'ing) happy
* Test: Linux: Disable automatic tests (TBD, WIP)Sven Gothel2023-01-181-17/+31
|
* Test: MacOS: Disable automatic tests (TBD, WIP)Sven Gothel2023-01-183-0/+47
|
* MacOSXCGLDrawableFactory.canCreateGLPbuffer(): Disabled for MacOS >= 12, ↵Sven Gothel2023-01-181-2/+5
| | | | here > 10.14.0 (Mojave)
* MacOSXCGLContext: Avoid data race on lastSetNSViewCmd, use local copy like ↵Sven Gothel2023-01-181-3/+4
| | | | in madeCurrent
* JAWTWindow: Constrain AppContextInfo creation where offscreen layer is ↵Sven Gothel2023-01-182-2/+13
| | | | supported (MacOS only)
* JAWTWindow: Remove java.applet.Applet detection .. it's gone :-(Sven Gothel2023-01-181-8/+12
|
* NewtCanvasSWT: Drop all newtChild.getDelegatedWindow() debug output due to: ↵Sven Gothel2023-01-171-10/+10
| | | | null com.jogamp.newt.swt.NewtCanvasSWT.access$200(com.jogamp.newt.swt.NewtCanvasSWT)
* Test*NewtEventModifiers*: Ensure SWT is initialized before AWTSven Gothel2023-01-175-25/+66
|
* SWTTestUtil: Add WaitAction2, using the EDTUtil to dispatch the ↵Sven Gothel2023-01-162-6/+43
| | | | display.readAndDispatch() wait action (experimental)
* SWT+AWT: Ensure SWTAccessor gets called before AWT initialization on GTK/X11 ↵Sven Gothel2023-01-162-8/+63
| | | | to avoid "cannot register existing type 'GdkDisplayManager'" and subsequent SIGSEGV
* TestNewtCanvasSWTGLn: Only dispose canvas1 at end of test, if not yet ↵Sven Gothel2023-01-161-16/+29
| | | | disposed (manual test case)
* NewtCanvasSWT: Remove certain DEBUG output causing an exceptionSven Gothel2023-01-161-2/+4
| | | | Cannot invoke "com.jogamp.newt.Window.getDelegatedWindow()" because the return value of "com.jogamp.newt.swt.NewtCanvasSWT.access$200(com.jogamp.newt.swt.NewtCanvasSWT)" is null
* SWTAccessor: Adopt to SWT 4.26Sven Gothel2023-01-161-32/+27
|
* Merge pull request #108 from PeterC-DLS/swt-420-fixSven Gothel2023-01-161-1/+9
|\ | | | | Add new class location of SWT's gtk_widget_get_window
| * Add new class location of SWT's gtk_widget_get_windowPeter Chang2022-04-141-1/+9
| | | | | | | | | | | | | | In SWT version 4.20, some gtk methods moved to a new gtk3 subpackage so add check and find it in there. Note, this new package was not exported until SWT 4.23 (aka 3.119.0 or v4950) so intervening versions will not work when using OSGi class loading.
* | X11GLXContext.getPlatformExtensionsStringImpl(): Add comment from pull ↵Sven Gothel2023-01-161-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | request regarding GLX extensions https://github.com/sgothel/jogl/pull/107 Return either glXQueryClientString or glXQueryExtensionsString when getting the GLX extensions ndjojo: glXQueryExtensionsString will make a request for glXQueryServerString if needed and will append the necessary client-side extensions. This doc, under the section "Using GLS Extensions", also suggests checking the glXQueryExtensionsString before using GLX extensions. +++ aschleck: For some more context this came up with the release of Mesa 20.3.0, which has client support for GLX_EXT_swap_control but no server support. The current JOGL behavior of appending the client extensions to the server extensions is incorrect. They should instead be intersected (with client-only extensions then appended) as the doc Nicole linked above says, which is precisely what glXQueryExtensionsString does. With the current extension querying behavior JOGL thinks glXSwapIntervalEXT is available under Mesa/llvmpipe even though it is not, causing a segfault at JOGL initialization time. I originally filed this as a Mesa bug (https://gitlab.freedesktop.org/mesa/mesa/-/issues/4128) along with some code that repro'd JOGL's checking behavior but it became apparent that Mesa is fine and the checking behavior is incorrect.
* | Merge pull request #107 from ndjojo/platform-extensionsSven Gothel2023-01-161-10/+2
|\ \ | | | | | | Return either glXQueryClientString or glXQueryExtensionsString when getting the GLX extensions
| * | Update X11GLXContext.javandjojo2021-01-201-10/+2
| |/
* | Fix GLProfile GL2 Mapping: Only use GL3bc is available, add additional ↵Sven Gothel2023-01-151-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | GLContext.isGL3bcAvailable() check Julien Gouesse resolved this odd issue, where a requested GL2 profile was mapped to GL3bc but is not implemented, see <https://forum.jogamp.org/InternalError-XXX0-profile-2-GL2-gt-profileImpl-GL3bc-not-mapped-td4041754i20.html#a4042018>. I exploded his patch a little to reuse the GLContext.getAvailableGLProfileName() result and simplify the conditional statement. This might need more testing perhaps, plus analyis why GLContext.getAvailableGLProfileName() offers GL3bc but is not available via GLContext.isGL3bcAvailable() check.
* | JAWTUtil: Cleanup MacOS JVM and OS version flags: Private and store ↵Sven Gothel2023-01-151-14/+16
| | | | | | | | comparison result