Thank you a lot, this is completely on topic!

The file in the archive unfortunately can't be built easily. The Java files do 
not match each other, and even after trying to fix this, I still get build 
error with several NS* objects. These class exist in the jnimacnative.jar but 
they do not provide the constructors used by MainOneShot.java (and source code 
of NS* does not appear in the archive).

That would be easier to get information from the Oracle team about when [the 
bug](https://bugs.openjdk.org/browse/JDK-8289573) can be fixed in the JVM :)

Regards,

Martin

Envoyé avec la messagerie sécurisée [Proton Mail](https://proton.me/).

------- Original Message -------
Le mercredi 15 mars 2023 à 13:07, Michael Hall <[email protected]> a écrit :

>> On Mar 15, 2023, at 4:34 AM, Martin Pernollet 
>> <[email protected]> wrote:
>>
>> My answer is not published because I sent a too big image. Please find it 
>> below without image :
>>
>> We access OpenGL through native bindings generated by JExtract, from project 
>> Panama. These bindings are packaged as a library visible here 
>> (https://gitlab.com/jzy3d/panama-gl).
>>
>> The -XstartOnFirstThread option is needed by OpenGL on macOS as OpenGL 
>> invocation MUST be performed from macOS main thread.
>>
>> Not using this option on macOS lead to an error
>>
>> java[92246:2751169] GLUT Fatal Error: internal error: 
>> NSInternalInconsistencyException, reason: NSWindow drag regions should only 
>> be invalidated on the Main Thread!
>>
>> Using this option on macOS lead to a freeze in LockSupport.park() (see the 
>> attached image for the complete call stack)
>>
>> JOGL has a smart way of solving this with a class allowing to push Runnables 
>> to macOS main thread 
>> (https://github.com/jzy3d/jogl/blob/ecf6e499d3b582d651a28693c871ca14d6e8c991/src/nativewindow/classes/jogamp/nativewindow/macosx/OSXUtil.java#L305)
>>  based on ObjectiveC code from Apple's AppKit framework 
>> (https://github.com/jzy3d/jogl/blob/ecf6e499d3b582d651a28693c871ca14d6e8c991/src/nativewindow/native/macosx/OSXmisc.m#L1167).
>> This allows running on Swing without having to use the -XstartOnFirstThread.
>>
>> However JOGL has several issues, one of these being that it freezes JVM>=19 
>> as soon as it appears in the classpath (for other reasons than the one 
>> discussed above).
>>
>> This issue is a real pain for anyone publishing applications involving 
>> OpenGL in Swing - whatever the OpenGL binding framework. Not solving the 
>> issue would make project Panama unusable for computer graphics.
>>
>> Regards,
>>
>> Martin
>
> Apologies if not of interest but it seems somewhat on-topic. I have some very 
> old code that might be of use?
>
> http://mikehall.pairserver.com/javasrc.html#onmain
>
> OnMain: not a bad place to have your Cocoa Java served up - 10/14/06
>
> NSAppleScript execution and possibly other Cocoa Java classes should be run 
> on the AppKit 'main' thread. OnMain.dmg provides a small JNI stub to do a 
> callback to java on the main thread that should provide this.
>
> 10/28/2006 - More new functionality. Added Some JNI, generated of course, 
> execution of the AppleScript related
>
> 10/22/2006 - Added some additional AppleScript testing and a couple execution 
> option switches. More or less documented in the README file.
>
> http://mikehall.pairserver.com/OnMain.dmg

Reply via email to