Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can not play vorbis audio on Android API 31+ #1955

Closed
Ali-RS opened this issue Feb 17, 2023 · 16 comments · Fixed by #1956
Closed

Can not play vorbis audio on Android API 31+ #1955

Ali-RS opened this issue Feb 17, 2023 · 16 comments · Fixed by #1956
Labels
Android bug Something that is supposed to work, but doesn't. More severe than a "defect".
Milestone

Comments

@Ali-RS
Copy link
Member

Ali-RS commented Feb 17, 2023

Apparently, JME Vorbis (Ogg) audio plugin is broken on the Android API 31+.

Here is the crash log:

02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852): INFO Audio Renderer Information
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * Device: OpenAL Soft
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * Vendor: OpenAL Community
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * Renderer: OpenAL Soft
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * Version: 1.1 ALSOFT 1.21.1
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * Supported channels: 64
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * ALC extensions: ALC_ENUMERATE_ALL_EXT ALC_ENUMERATION_EXT ALC_EXT_CAPTURE ALC_EXT_DEDICATED ALC_EXT_disconnect ALC_EXT_EFX ALC_EXT_thread_local_context ALC_SOFT_device_clock ALC_SOFT_HRTF ALC_SOFT_loopback ALC_SOFT_loopback_bformat ALC_SOFT_output_limiter ALC_SOFT_pause_device
02-17 11:49:41.417 I/com.jme3.audio.openal.ALAudioRenderer(3852):  * AL extensions: AL_EXT_ALAW AL_EXT_BFORMAT AL_EXT_DOUBLE AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_MULAW AL_EXT_MULAW_BFORMAT AL_EXT_MULAW_MCFORMATS AL_EXT_OFFSET AL_EXT_source_distance_model AL_EXT_SOURCE_RADIUS AL_EXT_STEREO_ANGLES AL_LOKI_quadriphonic AL_SOFT_bformat_ex AL_SOFTX_bformat_hoa AL_SOFT_block_alignment AL_SOFTX_callback_buffer AL_SOFTX_convolution_reverb AL_SOFT_deferred_updates AL_SOFT_direct_channels AL_SOFT_direct_channels_remix AL_SOFT_effect_target AL_SOFT_events AL_SOFTX_filter_gain_ex AL_SOFT_gain_clamp_ex AL_SOFT_loop_points AL_SOFTX_map_buffer AL_SOFT_MSADPCM AL_SOFT_source_latency AL_SOFT_source_length AL_SOFT_source_resampler AL_SOFT_source_spatialize
02-17 11:49:41.428 I/com.jme3.audio.openal.ALAudioRenderer(3852): INFO Audio effect extension version: 1.0
02-17 11:49:41.430 I/com.jme3.audio.openal.ALAudioRenderer(3852): INFO Audio max auxiliary sends: 2
--------- beginning of crash
02-17 11:49:42.133 F/libc    (3852): fdsan: attempted to close file descriptor 96, expected to be unowned, actually owned by ParcelFileDescriptor 0xdfa250a
02-17 11:49:42.137 F/libc    (3852): Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 3873 (GLThread 56), pid 3852 (ycompany.mygame)
02-17 11:49:42.262 I/crash_dump64(3884): obtaining output fd from tombstoned, type: kDebuggerdTombstoneProto
02-17 11:49:42.274 I/tombstoned(238): received crash request for pid 3873
02-17 11:49:42.277 I/crash_dump64(3884): performing dump of process 3852 (target tid = 3873)
02-17 11:50:24.206 I/logd    (0): logdr: UID=10159 GID=10159 PID=3884 n tail=0 logMask=8 pid=3852 start=0ns deadline=0ns
02-17 11:50:24.213 I/logd    (0): logdr: UID=10159 GID=10159 PID=3884 n tail=0 logMask=1 pid=3852 start=0ns deadline=0ns
02-17 11:49:43.884 F/DEBUG   (3884): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
02-17 11:49:43.884 F/DEBUG   (3884): Build fingerprint: 'google/sdk_gphone64_x86_64/emu64x:13/TE1A.220922.012/9302419:userdebug/dev-keys'
02-17 11:49:43.884 F/DEBUG   (3884): Revision: '0'
02-17 11:49:43.884 F/DEBUG   (3884): ABI: 'x86_64'
02-17 11:49:43.885 F/DEBUG   (3884): Timestamp: 2023-02-17 11:49:42.297738142+0330
02-17 11:49:43.885 F/DEBUG   (3884): Process uptime: 4s
02-17 11:49:43.885 F/DEBUG   (3884): Cmdline: com.mycompany.mygame
02-17 11:49:43.885 F/DEBUG   (3884): pid: 3852, tid: 3873, name: GLThread 56  >>> com.mycompany.mygame <<<
02-17 11:49:43.885 F/DEBUG   (3884): uid: 10159
02-17 11:49:43.885 F/DEBUG   (3884): signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
02-17 11:49:43.885 F/DEBUG   (3884): Abort message: 'fdsan: attempted to close file descriptor 96, expected to be unowned, actually owned by ParcelFileDescriptor 0xdfa250a'
02-17 11:49:43.885 F/DEBUG   (3884):     rax 0000000000000000  rbx 0000000000000f0c  rcx 00007e5efa3d39a4  rdx 0000000000000006
02-17 11:49:43.885 F/DEBUG   (3884):     r8  0000000000000000  r9  0000000000000000  r10 00007e5bec6a8dd0  r11 0000000000000203
02-17 11:49:43.885 F/DEBUG   (3884):     r12 00007e5becd1df96  r13 00007e5bec6a8e90  r14 0000000000000f21  r15 00007e5f08ad8bd8
02-17 11:49:43.885 F/DEBUG   (3884):     rdi 0000000000000f0c  rsi 0000000000000f21
02-17 11:49:43.885 F/DEBUG   (3884):     rbp 0000000000000003  rsp 00007e5bec6a8b00  rip 00007e5efa3d39a4
02-17 11:49:43.885 F/DEBUG   (3884): backtrace:
02-17 11:49:43.885 F/DEBUG   (3884):       #00 pc 00000000000639a4  /apex/com.android.runtime/lib64/bionic/libc.so (fdsan_error(char const*, ...)+740) (BuildId: 007cb2313464df63debf8020e631c990)
02-17 11:49:43.885 F/DEBUG   (3884):       #01 pc 00000000000635ef  /apex/com.android.runtime/lib64/bionic/libc.so (android_fdsan_close_with_tag+671) (BuildId: 007cb2313464df63debf8020e631c990)
02-17 11:49:43.885 F/DEBUG   (3884):       #02 pc 0000000000063d5b  /apex/com.android.runtime/lib64/bionic/libc.so (close+11) (BuildId: 007cb2313464df63debf8020e631c990)
02-17 11:49:43.885 F/DEBUG   (3884):       #03 pc 0000000000022f0f  /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/lib/x86_64/libdecodejme.so (BuildId: acaf1ecb244bdebc5e5173b258b3fc2be97ed696)
02-17 11:49:43.885 F/DEBUG   (3884):       #04 pc 000000000001deb8  /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/lib/x86_64/libdecodejme.so (ov_clear+280) (BuildId: acaf1ecb244bdebc5e5173b258b3fc2be97ed696)
02-17 11:49:43.885 F/DEBUG   (3884):       #05 pc 0000000000022c4d  /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/lib/x86_64/libdecodejme.so (Java_com_jme3_audio_plugins_NativeVorbisFile_close+109) (BuildId: acaf1ecb244bdebc5e5173b258b3fc2be97ed696)
02-17 11:49:43.885 F/DEBUG   (3884):       #06 pc 000000000037d70b  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+219) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #07 pc 0000000000369aed  /apex/com.android.art/lib64/libart.so (nterp_helper+3837) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #08 pc 0000000000194f96  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.audio.plugins.NativeVorbisLoader.loadBuffer+122)
02-17 11:49:43.885 F/DEBUG   (3884):       #09 pc 0000000000368c28  /apex/com.android.art/lib64/libart.so (nterp_helper+56) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #10 pc 00000000001950ce  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.audio.plugins.NativeVorbisLoader.load+42)
02-17 11:49:43.885 F/DEBUG   (3884):       #11 pc 000000000036a7e5  /apex/com.android.art/lib64/libart.so (nterp_helper+7157) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #12 pc 000000000018c3be  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.asset.DesktopAssetManager.loadLocatedAsset+22)
02-17 11:49:43.885 F/DEBUG   (3884):       #13 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #14 pc 000000000018c2cc  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.asset.DesktopAssetManager.loadAsset+216)
02-17 11:49:43.885 F/DEBUG   (3884):       #15 pc 000000000036a7e5  /apex/com.android.art/lib64/libart.so (nterp_helper+7157) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #16 pc 0000000000190632  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.audio.AudioNode.<init>+154)
02-17 11:49:43.885 F/DEBUG   (3884):       #17 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #18 pc 0000000000190664  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.audio.AudioNode.<init>+16)
02-17 11:49:43.885 F/DEBUG   (3884):       #19 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #20 pc 000000000000059c  [anon:dalvik-classes2.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk!classes2.dex] (mygame.Main.initAudio+16)
02-17 11:49:43.885 F/DEBUG   (3884):       #21 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.885 F/DEBUG   (3884):       #22 pc 000000000000067c  [anon:dalvik-classes2.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk!classes2.dex] (mygame.Main.simpleInitApp+88)
02-17 11:49:43.885 F/DEBUG   (3884):       #23 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #24 pc 0000000000187042  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.app.SimpleApplication.initialize+398)
02-17 11:49:43.886 F/DEBUG   (3884):       #25 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #26 pc 0000000000180888  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.app.AndroidHarnessFragment.initialize+4)
02-17 11:49:43.886 F/DEBUG   (3884):       #27 pc 000000000036a7e5  /apex/com.android.art/lib64/libart.so (nterp_helper+7157) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #28 pc 00000000002310be  [anon:dalvik-classes.dex extracted in memory from /data/app/~~XddJDkVqxYJIpdtJnuwGSw==/com.mycompany.mygame-2y8ean9Pk2rnWrn85Jl4uQ==/base.apk] (com.jme3.system.android.OGLESContext.onDrawFrame+74)
02-17 11:49:43.886 F/DEBUG   (3884):       #29 pc 000000000036a8a1  /apex/com.android.art/lib64/libart.so (nterp_helper+7345) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #30 pc 000000000044aef8  /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.guardedRun+1096)
02-17 11:49:43.886 F/DEBUG   (3884):       #31 pc 0000000000369a88  /apex/com.android.art/lib64/libart.so (nterp_helper+3736) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #32 pc 000000000044b4fc  /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+52)
02-17 11:49:43.886 F/DEBUG   (3884):       #33 pc 00000000003725c4  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+756) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #34 pc 00000000003f21a6  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+214) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #35 pc 00000000007e617e  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+478) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #36 pc 000000000083a91c  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1404) (BuildId: 44bc52550248fc712a381bef164b75c7)
02-17 11:49:43.886 F/DEBUG   (3884):       #37 pc 00000000000ccd2a  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+58) (BuildId: 007cb2313464df63debf8020e631c990)
02-17 11:49:43.886 F/DEBUG   (3884):       #38 pc 0000000000060d37  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+55) (BuildId: 007cb2313464df63debf8020e631c990)

Forum thread:
https://hub.jmonkeyengine.org/t/jmesurfaceview-for-android-api-31-not-working-properly/46465

@Ali-RS Ali-RS added bug Something that is supposed to work, but doesn't. More severe than a "defect". Android labels Feb 17, 2023
@Ali-RS Ali-RS added this to the v3.6.0 milestone Feb 17, 2023
@stephengold
Copy link
Member

Perhaps not relevant, but I wonder why Android doesn't use jme3-jogg, as desktops do.

Also, assuming this is a regression, I wonder which release it first occurred in.

@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 17, 2023

but I wonder why Android doesn't use jme3-jogg, as desktops do.

Hmm, I have no idea, is jme3-jogg a pure java implementation or does it contain natives?

Also, assuming this is a regression, I wonder which release it first occurred in.

No regression on our side afaik, but it is more like a hidden bug that showed up after the below change on the android side.

Also the reason why only higher android api triggers this error is because android changed fdsan warning level to error Quoting official docs- “Android 11. fdsan now aborts upon detecting an error; the previous behavior was to log a warning and continue.” (Source: Behavior changes: all apps | Android Developers 2)

see https://hub.jmonkeyengine.org/t/jmesurfaceview-for-android-api-31-not-working-properly/46465/24?u=ali_rs

@pavly-gerges
Copy link
Contributor

Hmm, good point, is jme3-jogg a pure java implementation or does it contain native binaries?
Maybe @Scrappers-glitch has an idea.

When hardware is involved, nothing is pure java, correct me if i am wrong, afaik the jogg library relies on the javax.media from Java Media Framework API, i don't think it provides a build for android....

No regression on our side afaik, but it is more like a change on the android side.

In fact, this is an actual bug, the double resource closure is a bug, and fortunately the new android fdsan (file descriptor sanitizer) has discovered this bug and we should provide the fix for this...

Notice, on the GNU C side, the double closure doesn't crash the program with a not owned state as android do, instead, it just throws [-1] as a return for the int close(int) function, however if you tried to use any previously allocated copies from a previously closed files, the system will throw a memory Segmentation fault with a program crash; because the close function from GNU libc doesnot only close the file stream, but it also deallocates the associated file descriptor and any unread data or queued read/write operations will be discarded....

Consider this case:

#include <stdio.h>
#include <unistd.h>

int main() {
    int res0 = fclose(stdin);
    int res1 = fclose(stdin);
    /* returns [0] for success */
    printf("Return of the first call: %d\n", res0); 
    /* returns [-1] for failure */
    printf("Return of the second call: %d\n", res1); 
    return 0;
}

And in this case (which is similar to the jme's, but protected by the android fdsan):

#include <stdio.h>
#include <unistd.h>

static inline FILE* copy() {
    return dup(stdin);
}

int main() {
    FILE* file = copy();
    
    int res0 = fclose(stdin);
    /* returns [0] for success */
    printf("Return of the first call: %d\n", res0); 
    
    int res1 = fclose(file);
    /* returns a Segmentation fault associated with a crash */
    printf("Return of the second call: %d\n", res1); 

    return 0;
}

The double closure has also other problems like the premature closure of resources, interruption of the buffer read/write operations and etcetera, though those errors will never manifest in this case, because we aren't exposing this API to the user, however, logical code errors should be fixed properly...

@stephengold
Copy link
Member

the jogg library relies on the javax.media from Java Media Framework API

Thanks for the API link.

I unpacked the javax.media "jmf" JAR. It consists entirely of Java classes and GIF images. There's no native code. So if it's unavailable on Android, there must be a different explanation.

In fact, this is an actual bug

True, but not all bugs are regressions.

@pavly-gerges
Copy link
Contributor

pavly-gerges commented Feb 17, 2023

I unpacked the javax.media "jmf" JAR. It consists entirely of Java classes and GIF images. There's no native code. So if it's unavailable on Android, there must be a different explanation.

I found the native dependencies here, the performance packs should provide the native sound APIs:
https://www.oracle.com/java/technologies/javase/jmf-setup-211.html

EDIT:
Idk, if the performance pack is an essential or is just an addition.

EDIT2:
I downloaded the jar file now too, it seems they rewrote the codecs completely in java, well we need to discuss this later and test it on android...

EDIT3:
Btw, the jmf was originally built as a plugin to the java SE, they use classes from java.awt, which is not supported by android, for example the java.awt.Image....

@stephengold
Copy link
Member

Idk, if the performance pack is an essential or is just an addition.

JMonkeyEngine doesn't use any performance packs, just the "jmf" library itself. So I'd say not essential.

they use classes from java.awt, which is not supported by android

Perhaps that's the reason Android doesn't use jme3-jogg. Thanks!

@pavly-gerges
Copy link
Contributor

pavly-gerges commented Feb 18, 2023

In fact, this is an actual bug

True, but not all bugs are regressions.

Btw, if you care, this was added in those 2 commits (since 2014), probably was jme-3.1:
891ffa1 and ba91da8.

@stephengold
Copy link
Member

2014 ... wow!

@Ali-RS Ali-RS linked a pull request Feb 18, 2023 that will close this issue
7 tasks
@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 20, 2023

Perhaps not relevant, but I wonder why Android doesn't use jme3-jogg, as desktops do.

I just tested jme3-jogg and it works fine on Android.

@pavly-gerges
Copy link
Contributor

pavly-gerges commented Feb 20, 2023

Are you sure it was j-ogg and the run is not delegated to android-native ?
To be fully assured that this is actually j-ogg, you need to remove jme3-android-native from your dependencies and test a plain jme3-jogg with no game application.

@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 20, 2023

Are you sure it was j-ogg and the run is not delegated to android-native ?

Yes

I replaced this

LOADER com.jme3.audio.plugins.NativeVorbisLoader : ogg

with

LOADER com.jme3.audio.plugins.OGGLoader : ogg 

Also noticed when I removed the dependency to jme3-jogg it throws a class not found exception for com.jme3.audio.plugins.OGGLoader at runtime.

@pavly-gerges
Copy link
Contributor

Well, this may be explained by the original source code of jmf that decode vorbis isn't calling a java awt package classes....and so the NoClassDefFoundException is not thrown on the android dalvik...thanks for testing that.

@pavly-gerges
Copy link
Contributor

It is your choice then, to accept my PR to fix this issue, or create another PR to drop the whole native decode library and replace it with the jogg...i think we should do both 😁, replacing with jogg will not fix the current issue, it just a workaround for a better maintenance.

@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 20, 2023

I do not see how awt package may be useful in loading audio but for video loading yes it could be.

@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 20, 2023

I will merge your PR, I think, we should keep both.

@Ali-RS
Copy link
Member Author

Ali-RS commented Feb 20, 2023

By the way, I excluded the jmf library coming with j-ogg-all and I can still play the ogg sound. Looks like jmf is not used for decoding ogg files so we may safely exclude it in jme3-jogg. (the jmf jar size is 1.8 MB!)

Edit:
see #1958

Ali-RS pushed a commit that referenced this issue Feb 21, 2023
…1956)

* android-native-vorbis: fix double asset file descriptor closure

* NativeVorbis: better names and javadocs

* NativeVorbisFile#readIntoBuffer: specifies the start and the end of the read

* NativeVorbisFile: better explanation for the output buffer on read functions

* com_jme3_audio_plugins_NativeVorbisFile.c: refactored logs

* NativeVorbisFile: some docs enhances

* NativeVorbisLoader: added updated jme3-copyright
Ali-RS pushed a commit that referenced this issue Feb 21, 2023
…1956)

* android-native-vorbis: fix double asset file descriptor closure

* NativeVorbis: better names and javadocs

* NativeVorbisFile#readIntoBuffer: specifies the start and the end of the read

* NativeVorbisFile: better explanation for the output buffer on read functions

* com_jme3_audio_plugins_NativeVorbisFile.c: refactored logs

* NativeVorbisFile: some docs enhances

* NativeVorbisLoader: added updated jme3-copyright
bob0bob added a commit to bob0bob/jmonkeyengine that referenced this issue May 31, 2023
* Android: Implemented AndroidNativeBufferAllocator - Deprecated AndroidBufferAllocator (jMonkeyEngine#1821)

* [skip ci] update natives snapshot

* Add GL debug capabilities (jMonkeyEngine#1790)

* Add GL debug capabilities

* Fix: check for null names

* Add java types to VarType and type checks to MatParam (jMonkeyEngine#1797)

* SettingsDialog: Fixed LAF

* SettingsDialog: Updated jme3 copyright

* README.md:  add a link to Chatter Games website

* Update README.md to include Exotic Matter (jMonkeyEngine#1838)

Would be great to have our game Exotic Matter also mentioned as its engine is based on jME. Thanks!

* jme3-examples:  update the fallback URLs for "TerrainGridTestData.zip"

* Improved code readability: ParticlePointMesh and ParticleTriMesh (jMonkeyEngine#1831)

* jme3-core:  add tests for Transform.toString()

* Fix issue  jMonkeyEngine#1839 (Memory Leak in DefaultLightFilter)

Co-authored-by: Lukas Habring <lukas@Lukas-PC>

* Added getter & setter for FilterPostProcessor.depthFormat (jMonkeyEngine#1841)

* Added setter for FilterPostProcessor.depthFormat

* Added getter for FilterPostProcessor.depthFormat

* update the Gradle wrapper to v7.5.1

* main.yml:  GitHub Action's ubuntu-18.04 environment is deprecated

* bugfix:  mergedJavadoc task is incompatible with Gradle v7

* main.yml:  udate "actions/setup-java" to v3

* main.yml:  add JDK 17 tests

* build.gradle: update gradleVersion in case user runs the "wrapper" task

* Fix jMonkeyEngine#1843 (java.util.zip.ZipException in HttpZipLocator) (jMonkeyEngine#1842)

* HttpZipLocator:fix invalid code lengths set & invalid distance too far back ZipExceptions.

* Get file name length and extra field length from local file header to calculate file data offset.

* Make fields `byteBuf`, `charBuf`, `utf8Decoder` non-static because they are not thread-safe.

* Surround streams with try-with-resources block.

* Clean up the display modes parsing

* No need to separately test for the contains

* README.md:  SDK v3.4 has been released

* Some enhancement to new animation system (jMonkeyEngine#1845)

* Some enhancement to new animation system, including:
* Option to enable/disable animation mask propagation to child actions.
* Option to control max transition weight. For example useful for controlling smooth animation transition when an animation is removed from an upper layer.
* Added animation loop support in AnimLayer.
* AnimLayer can now also keep action name, so one can easily lookup currently playing action name in an specific layer.

* Minor Javadoc fix.

* AnimLayer: clear `currentActionName` inside `cloneFields` method.

* Added a Loop tween to Tweens factory class (jMonkeyEngine#1846)

* Added a Loop tween to Tweens factory class. Supports looping by count or duration.

* Redesigned the Loop tween to work similar to Sequence tween. Now fast forwarding the loop will also try to catch up the loops left behind making sure they always see their 'length'.

* Added the missing Override annotation.

* Added Tweens.cycle() and Tweens.invert() methods (jMonkeyEngine#1849)

Cycle is used for running delegate tween back and force and Invert is used to run delegate tween backward.

* BlendAction: resolve slow-motion side effect caused by stretching actions (jMonkeyEngine#1848)

* BlendAction: resolve slow motion side effect caused by stretching any action that doesn't have the same length. It generates speed factor for each child animation that are dynamically interpolated and applied to base speed based on the blend weight taken from blend space.

* Add missing javadoc.

* Add Copyright.

* Renamed calculateSpeedFactors() to applyDefaultSpeedFactors() and made it non static.

* Fix issue jMonkeyEngine#1850 (JmeSystem.writeImageFile() throw java.nio.BufferUnderflowException) (jMonkeyEngine#1851)

* jme3-jogg:  upgrade the j-ogg-all library to v1.0.2

* jMonkeyEngine#1569 Fix license file to be better detected by GitHub (jMonkeyEngine#1855)

* jme3-plugins:  update the "gson" library to v2.9.1

* workflows/main.yml:  update the "checkout" action to v3

* fix: broken link in README.md (jMonkeyEngine#1858)

Signed-off-by: Kasper Aaquist Johansen <kasperaaquist@gmail.com>

Signed-off-by: Kasper Aaquist Johansen <kasperaaquist@gmail.com>

* workflows/main.yml:  update wrapper-validation-action to v1.0.5

* update wrapper-validation-action to v1.0.5 (one more place)

* README.md:  SDK v3.5.2 has now been published

* Quaternion:  javadoc

* Add instance culling function in InstancedGeometry (jMonkeyEngine#1865)

* Added a workaround to prevent shadow disappearing on instanced geometries away from camera by introducing an instance culling function on InstancedGeometry. There also is a default implementation provided.

* Removed the bound-scale hack for shadow disappearing issue from DefaultInstanceCullingFunction. The “right” solution is to have it pay attention to the frustums of whatever shadow-casting lights are around… but anyway developers now can implement their own frustum culling however they like or even "unset" it to disable instance culling which should also resolve the shadow issue.

* Remove unused imports.

* Fix: make the stencil test functions usable. (jMonkeyEngine#1866)

* Fix: make the stencil test functions usable.

* Fix: formatting

* Fix: formatting

* Fix: formatting

* Fix: copyright year

* upgrade to Gradle v7.6 (for its Java 19 support)

* Read shorts properly

* More efficient logging

* Read unsigned byte properly

* Remove unnecessary byte and call the variable c as in the formulas

* move SettingsDialog and ErrorDialog to new jme3-awt-dialogs module (jMonkeyEngine#1876)

* Refactory Settings/Error dialogs in JmeDialogsFactory and jme3-awt-dialogs

* add build.gradle

* Add copyright headers

* Fix formatting and documentation

Co-authored-by: riccardobl <riccardo0blb@gmail.com>

* JmeSurfaceView: Package migration (jMonkeyEngine#1819)

* JmeSurfaceView: migration to new package (com.jme3.view.surfaceview)

* JmeSurfaceView: migration to new package (com.jme3.view.surfaceview)

* upgrade the groovy-test library to v3.0.13

* jme3-core:  correct/clarify javadoc

* Implementation of a glTF extension loader for KHR_texture_transform (jMonkeyEngine#1869)

* Implementation of a glTF extension loader for KHR_texture_transform

* Thread-safe version of the glTF extension loader for KHR_texture_transform

* Updated thread-safe version of the glTF extension loader for KHR_texture_transform

* Fix (switched indices of the translation matrix): thread-safe version of the glTF extension loader for KHR_texture_transform

* Added support for texCoord, fixed matrix comparison

* Simplified matrix comparison, removed trailing whitespaces

* Update to differentiate transformations applied to different UV sets

* Improved memory usage for transformMap

* Specified Map generic types & removed unnecessary cast

Co-authored-by: Manuel <Manuel@DESKTOP-6RJH3UF>

* jme3-core:  test the com.jme3.math.Triangle class

* bugfix:  Mesh.getTriangle() may yield an incorrect centroid

* Fix jMonkeyEngine#1867 (LightFilter gets applied even if not needed) (jMonkeyEngine#1872)

* Add NullLightFilter.java

* Add usage of null light filter when rendering shadowmaps

* Fix formatting

* Make static NullLightFilter final

* Fix formatting and author

* BlendableAction: Fix JavaDoc for setMaxTransitionWeight & replace assert with IllegalArgumentException (jMonkeyEngine#1881)

* Fix jMonkeyEngine#1412 (GltfLoader does not support AO packed in MetallicRoughnessMap) (jMonkeyEngine#1880)

* Fix jMonkeyEngine#1882 (J3MLoader always generates mips ignoring MinFilter) (jMonkeyEngine#1884)

* Get texture mips generation flag from MinFilter specified in j3m file.

* Update copyright date.

* Fix J3MLoaderTest failing.

* Fix TestMaterialWrite failing.

* Update copyright date.

* Use Trilinear if no min filter is specified in j3m file.

* Add copyright note in J3MOutputCapsule.

* Fix J3MLoaderTest failing.

* Made extension loaders non-static to avoid concurrency issues (jMonkeyEngine#1886)

Now each GltfLoader instantiated via ThreadLocal will have its own instances of extension loaders.

* Fix jMonkeyEngine#1883 (Image class wrongly setting GL mips flags inside the constructor) (jMonkeyEngine#1885)

* AreaUtils: Migrated package to `com.jme3.util` (jMonkeyEngine#1826)

* AreaUtils: Migrated package to `com.jme3.util`

* com.jme3.uitl.AreaUtils: removed code duplicates - added `final` class specifier

* com.jme3.util.AreaUtils: fixed duplication build error

* utils/AreaUtils.java: full migration to the utility package

* scene/control/AreaUtils.java: removed utility methods - delegated functionality to `jme3.utils.AreaUtils`

* scene/AreaUtils: fixed `jme3.util` package linking typo

* Renderer:  javadoc correction

* update the groovy-test library to v3.0.14

* LICENSE.md:  add 2023 to copyright years

* Fix jMonkeyEngine#1892 (TestChooser does not show classes list when run with java 8) (jMonkeyEngine#1893)

* TestChooser:fix class list not showing when run with java 8.

* Update copyright date.

* main.yml: use "temurin" openjdk. Fix jMonkeyEngine#1896 (jMonkeyEngine#1897)

* README.md:  add Demon Lord to the list of published games

* Fix jMonkeyEngine#1773 (Wrong particle position when `worldSpace` flag equals to true) (jMonkeyEngine#1889)

* Add test case for issue jMonkeyEngine#1773.

* Fix wrong particle position when using 'EmitterMeshVertexShape' or 'EmitterMeshFaceShape' and worldSpace flag equal to true. The old code was interpolating particles position toward emitter world position and this was only working fine for EmitterPointShape and in the other shapes this was causing particles not keep the shape because they were being dragged toward emitter position. The new code calculates the distance vector from emitter last location to the current emitter location and subtracts it from particles position to generate a hypothetical position that is used for interpolation.

* Add javadoc to TestIssue1773.

* Minor javadoc fix.

* jme3-niftygui: solve issue jMonkeyEngine#1891 (incorrect fullscreen layout)  (jMonkeyEngine#1895)

* jme3-lwjgl:updated to lwjgl v2.9.4 hosted by org.jmonkeyengine. Fix jMonkeyEngine#1247, jMonkeyEngine#1215, jMonkeyEngine#947 (jMonkeyEngine#1902)

* Fix jMonkeyEngine#1890 (crashes attempting to run example apps in fullscreen with LWJGL v2) (jMonkeyEngine#1898)

* jme3-lwjgl:fallback to standard 60Hz fullscreen display mode if the specified frequency in the AppSettings is not available and log a warning.

* Fallback to whatever bps or frequency is available. Added a wild-card value to let selecting any bps or frequency available by passing -1.

* Support AWT display frequency model. Looks like AWT uses mathematics round to convert float frequency values to int while lwjgl 2 uses mathematics floor. For example if frequency is 59.83, AWT will return 60 but lwjgl 2 will return 59.

* Remove redundant check.

* Added documentation for getFullscreenDisplayMode method.

* When in VR attach the debug scene to the two eye's scenes. Fix#1795  (jMonkeyEngine#1888)

* jMonkeyEngine#1795 When in VR attach the debug scene to the two eye's scenes

This ensures they show up correctly

* jMonkeyEngine#1795 Whitespace corrections

* jMonkeyEngine#1795 Further whitespace corrections

* jMonkeyEngine#1795 Yet more whitespace corrections

* jMonkeyEngine#1795 Add explanatory comment as to why VR and non-VR have totally different approaches

* Refactored PBR Terrain to use new for-loops. Fix jMonkeyEngine#1785 (jMonkeyEngine#1901)

Drastically reduced code by utilizing JME's new potential for define-compatible for-loops in shaders. Also cleaned up some other little things like indentations, comments, and code placement so that the code is much more organized and easier to understand.

* add the Spatial.addControlAt() method (jMonkeyEngine#1899)

* JmeContext:  add a getSystemListener() method (jMonkeyEngine#1894)

* jme3-examples:  add tests for issue jMonkeyEngine#1903

* Refactored Advanced PBR Terrain to use new for-loops (jMonkeyEngine#1904)

* Refactored Advanced PBR Terrain to use new for-loops

Similar to my recent pull request doing the same for the base PbrTerrain shader (jMonkeyEngine#1901) this PR also adds for-loop support to the advanced version of the pbr shader that uses texture arrays

* Update PBRTerrain.frag

* Update AdvancedPBRTerrain.frag

* Update AfflictionLib.glsllib (jMonkeyEngine#1905)

This PR goes along with my last PR cleaning up the AdvancedPBRTerrain.j3md shader. The method getTriPlanarBlendFromTexArray() was put into this glsllib that contains all of the other commonly used functions for the pbr terrain shaders.

* common.gradle: set class files compatible with Java 8 using "release" option (jMonkeyEngine#1907)

* common.gradle: set class files compatible with Java 8. This will keep java 8 compatibility when it is compiled with newer java versions.

* Merge with existing block.

* Reformat code.

* common.gradle: add "Created-By" jar manifest to show Java version and vendor name (jMonkeyEngine#1913)

* common.gradle: add Created-By in jar manifest to show java version used to create the jar.

* Also add vendor name.

* ParticleEmitter: improve code readability. Apply the DRY principle (jMonkeyEngine#1912)

* add 4 getters to JmeContext for screen position and frame-buffer size (jMonkeyEngine#1911)

* test and fix for jMonkeyEngine#1909 (NPE while generating tangents) (jMonkeyEngine#1910)

* add a JUnit test for issue 1909 (NPE while generating tangents)

* solve issue jMonkeyEngine#1909 (NPE while generating tangents)

* jme3-lwjgl: bump to lwjgl 2.9.5 (jMonkeyEngine#1914)

* Fix jMonkeyEngine#1917 (RendererException in ScreenshotAppState: Attempting to upload empty buffer) (jMonkeyEngine#1918)

* PBRLighting: fix comment describing packed MetallicRoughnessMap (jMonkeyEngine#1921)

Updated a comment about the MetallicRoughness map that previously said the Red channel is unused - changed to instead say that the red channel of MR map stores the AO value if AoPackedInMRMap is true.

* solve issue jMonkeyEngine#1919 (underflow while generating tangents) (jMonkeyEngine#1920)

* jme-core:  add a test for issue jMonkeyEngine#1919 (underflow generating tangents)

* MikktspaceTangentGenerator: solve jMonkeyEngine#1919 (underflow generating tangents)

* main.yml: deploy with jdk17 (jMonkeyEngine#1922)

* Fix jMonkeyEngine#1923 (OSSRH artifacts are build with different java version) (jMonkeyEngine#1924)

* main.yml: build on pushes to the new v3.6 branch

* gradle.properties: next release from "master" branch should be v3.7.0

* resolve issue jMonkeyEngine#1926 (unnecessary dependencies) (jMonkeyEngine#1927)

* buildscript: move def of "niftyVersion" to "common.gradle" (shared between projects)

* jme3-testdata:  rm dependency on "nifty-style-black" (redundant with "jme3-niftygui")

* buildscript: mv "nifty-examples" dependency from "jme3-testdata" to "jme3-examples"

* solve issue jMonkeyEngine#1928 (OutOfMemoryError in FBX importer) (jMonkeyEngine#1929)

* solve issue jMonkeyEngine#1928 (OutOfMemoryError in FBX importer)

* tweak the new javadoc

* solve issue jMonkeyEngine#1930 (NPE in FbxLayerElement) (jMonkeyEngine#1931)

* solve issue jMonkeyEngine#1932 (class cast exceptions in FBX importer) (jMonkeyEngine#1934)

* solve issue jMonkeyEngine#1933 (unsupported operation in FbxNode) (jMonkeyEngine#1936)

* solve issue jMonkeyEngine#1937 (NPE in FbxObject) (jMonkeyEngine#1938)

* solve issue jMonkeyEngine#1939 [NPE in FbxMesh.applyCluster()] (jMonkeyEngine#1940)

* FBXCluster:  create empty arrays if the cluster contains no keyframes

* FbxLoader:  don't construct an animation if there are no keyframes

* update Groovy to v3.0.15

* Update Application.start javadoc. (jMonkeyEngine#1947)

* Update RenderState.setLineWidth javadoc. (jMonkeyEngine#1948)

* Fix jMonkeyEngine#1945 (IllegalStateException when running TestAWTPanels with LWJGL 3) (jMonkeyEngine#1949)

* solve issue jMonkeyEngine#1879 (compile-time error in Skinning.glsllib) (jMonkeyEngine#1942)

* Fix issue jMonkeyEngine#1558 (TestAWTPanels crashes with LWJGL v3 on Linux) (jMonkeyEngine#1944)

* TestAwtPanels: apply swing system LAF. This is needed to prevent JVM crash on Linux and LWJGL 3. (See issue jMonkeyEngine#1558)

* Use single class imports.

* solve issue jMonkeyEngine#1806 (global FrameInterpolator violates threading model) (jMonkeyEngine#1943)

* solve issue jMonkeyEngine#1806 (global FrameInterpolator violates threading model)

* FrameInterpolator:  deprecate the global instance

* Fix a typo in LwjglWindow (jMonkeyEngine#1953)

* Add WaterFilter.getReflectionView method (jMonkeyEngine#1951)

* Added WaterFilter.getReflectionView method.

* Update javadoc.

* README.md:  delete a dead link (Maker's Tale)

* README.md:  add a link to Wild Magic

* resolve issue jMonkeyEngine#1955 (Can not play vorbis audio on Android API 31+) (jMonkeyEngine#1956)

* android-native-vorbis: fix double asset file descriptor closure

* NativeVorbis: better names and javadocs

* NativeVorbisFile#readIntoBuffer: specifies the start and the end of the read

* NativeVorbisFile: better explanation for the output buffer on read functions

* com_jme3_audio_plugins_NativeVorbisFile.c: refactored logs

* NativeVorbisFile: some docs enhances

* NativeVorbisLoader: added updated jme3-copyright

* [skip ci] update natives snapshot

* jme3-jogg: remove dependency on Java Media Framework (jMonkeyEngine#1962)

* solve issue jMonkeyEngine#1960 (use jme3-jogg for loading ogg files on android) (jMonkeyEngine#1961)

* solve issue jMonkeyEngine#1963 (TestMusicPlayer fails to load AL library on lwjgl2) (jMonkeyEngine#1964)

* TestMusicPlayer: fix UnsatisfiedLinkError when using lwjgl2. Solves issue jMonkeyEngine#1963

* Add missing load function for "openal" natives.

* Removed the unnecessary check for lwjgl 2 in classpath.

* Fix comment

* Replace Exception with warning in TerrainPatch (jMonkeyEngine#1966)

* Replace Excpetion with warning in TerrainPatch

PR following up on the discussion in this thread: 
https://hub.jmonkeyengine.org/t/terrain-collision-exception/46491/6

* Update TerrainPatch.java

* Update TerrainPatch.java

* Update TerrainPatch.java

* Update TerrainPatch.java

* Update TerrainPatch.java

* Update TerrainPatch.java

* Update TerrainPatch.java

* Cleanup NativeLibraryLoader & fix wrong library path  (jMonkeyEngine#1967)

* Cleanup NativeLibraryLoader

* Fix wrong library path

* solve issue jMonkeyEngine#1969:  missing check in GLRenderer.clearVertexAttribs() (jMonkeyEngine#1970)

* solve issue jMonkeyEngine#1975:  TestAttachDriver doesn't reset properly (jMonkeyEngine#1976)

* Improve NativeLibraryLoader (jMonkeyEngine#1973)

* Improve NativeLibraryLoader.

* Add javadoc.

* Moved library extraction requirement check into a separate method.

* Fix javadoc.

* Refactor library extraction check method.

* Extract natives to system temp directory retrieved by System.getProperty("java.io.tmpdir") instead of working directory.

* Renamed enum "Openal" to "OpenAL" and added javadoc on NativeLibraries.

* Update comments.

* Deploy master branch commits as snapshot (jMonkeyEngine#1983)

* Deploy main branch commits as snapshot

* Snapshot builds don't have a Release artifact

* restrict snapshot to actual commits on master branch

* Deploy steps don't actually use test-run maven artifacts

* Partial Revert. We need that artifact

* Fix sonatype snapshots repo url

as mentioned in https://central.sonatype.org/publish/publish-guide/

* Allow use of Emissive color as a multiplier with EmissiveMap in PBRLighting (jMonkeyEngine#1979)

* Add support for NormalScale in PBRLighting & GltfLoader (jMonkeyEngine#1980)

* Added NormalScale factor in PBRLighting. The scalar parameter applied to each normal vector of the normal map. This value scales the normal vector in X and Y directions using the formula: `scaledNormal =  normalize((<sampled normal texture value> * 2.0 - 1.0) * vec3(<normal scale>, <normal scale>, 1.0))`.

* Add support for reading NormalScale in GltfLoader.

* Add support for AoStrength in PBRLighting & GltfLoader (jMonkeyEngine#1981)

* Added AoStrength factor in PBRLighting. A scalar multiplier controlling the amount of occlusion applied.

* Add support for reading AoStrength in GltfLoader.

* Fix ao calculation to follow gltf specs.

* Update comment on AoStrength mentioning the min and max values.

* Clamp ao to 0 for negative values that might cause by applying AoStrength > 1.

* Use glsl clamp instead of max.

* update Groovy to v3.0.16

* Some javadoc cleanup (jMonkeyEngine#1986)

* Fix some invalid HTML tags

* Correct deprecation annotations

* Doc-comments cleanup

- Corrected some typos, grammar, etc.
- reflowed egregiously long comment lines to comply with column limits

* README.md: latest stable version of Engine

* LwjglContext: re-initialize renderer on context restart (lwjgl 2) (jMonkeyEngine#1988)

* LwjglContext: initialize renderer on context restart (lwjgl 2).

* Reset GL objects in renderer when context restart.

* README.md:  add Mravelous Marbles to the list of JME-powered games

* update the LWJGL3 libraries from v3.3.1 to v3.3.2

* update Groovy to v3.0.17

* correctly handle negative IDs in getUniqueId() methods (jMonkeyEngine#1991)

* NativeLibraryLoader:  more detailed exception in computeNativesHash() (jMonkeyEngine#2001)

* README.md:  add "Boxer" to the project list

* solve issue jMonkeyEngine#2003 (ParticleDepositionHeightMap.load return value) (jMonkeyEngine#2005)

* solve issue jMonkeyEngine#2002 (TerrainGridTileLoaderTest fails to load tiles) (jMonkeyEngine#2006)

* solve issue jMonkeyEngine#2002 (TerrainGridTileLoaderTest fails to load tiles)

* TerrainGridTileLoaderTest:  add a clarifying comment

* solve issue jMonkeyEngine#2011 (app crashes when using OpenGL version 3.0 and 3.1 with LWJGL 3) (jMonkeyEngine#2009)

* fix system crush issue when set desktop AppSetting.setRenderer below 3.2

* Revert "fix system crush issue when set desktop AppSetting.setRenderer below 3.2"

This reverts commit 11b7c9e.

* fix system crush issue when set desktop AppSetting.setRenderer below 3.2. This fix is reedited by instruction of ali_rs

---------

Co-authored-by: ray <raymond.yang@cottonwoodanalytics.com>

* solve issue jMonkeyEngine#2007 (instanced objects are culled when using WaterFilter) (jMonkeyEngine#2008)

* Fix issue with InstancedGeometry that uses the wrong camera for "instance culling" check.

* Minor javadoc update.

* Variables should start with lower-case. (jMonkeyEngine#2013)

New PullRequest as suggested in jMonkeyEngine#2012

Co-authored-by: Starcommander <starcommander@gmx.at>

* solve issue jMonkeyEngine#1992: better messages in spatial assertions (jMonkeyEngine#1993)

* jMonkeyEngine#1992 Improve the messages being reported from spatial assertions

* jMonkeyEngine#1992 Make clear what name is in the assertion messages

* jMonkeyEngine#1992 Whitespace correction

* solve issue jMonkeyEngine#2015 (Picture class lacks 2 getters)

* CloneableSmartAsset:  clarify the setKey() javadoc (jMonkeyEngine#2018)

* update Gradle to v7.6.1

---------

Signed-off-by: Kasper Aaquist Johansen <kasperaaquist@gmail.com>
Co-authored-by: Scrappers Team <60224159+Scrappers-glitch@users.noreply.github.com>
Co-authored-by: Github Actions <actions@users.noreply.github.com>
Co-authored-by: Riccardo Balbo <riccardo0blb@gmail.com>
Co-authored-by: Scrappers <scrappers.tm@gmail.com>
Co-authored-by: Stephen Gold <sgold@sonic.net>
Co-authored-by: Florian Frankenberger <f.frankenberger@mobiuscode.de>
Co-authored-by: Wyatt Gillette <jefferydeaver2010@gmail.com>
Co-authored-by: Lukas-Habring <102620478+Lukas-Habring@users.noreply.github.com>
Co-authored-by: Lukas Habring <lukas@Lukas-PC>
Co-authored-by: JosiahGoeman <31492985+JosiahGoeman@users.noreply.github.com>
Co-authored-by: Paul Speed <pspeed42@users.noreply.github.com>
Co-authored-by: Ali-RS <ali_codmw@yahoo.com>
Co-authored-by: Toni Helenius <helenius.toni@gmail.com>
Co-authored-by: Jan Schäfer <j@nschaefer.net>
Co-authored-by: Kasper Aaquist Johansen <kasperaaquist@gmail.com>
Co-authored-by: Michael Zuegg <zzuegg@users.noreply.github.com>
Co-authored-by: manuelrmo <118840772+manuelrmo@users.noreply.github.com>
Co-authored-by: Manuel <Manuel@DESKTOP-6RJH3UF>
Co-authored-by: Noeri Huisman <8823461+mrxz@users.noreply.github.com>
Co-authored-by: richardTingle <6330028+richardTingle@users.noreply.github.com>
Co-authored-by: Ryan McDonough <peanut64646@gmail.com>
Co-authored-by: Sailsman63 <lukejsails@gmail.com>
Co-authored-by: Raymond Young <gongxi83@163.com>
Co-authored-by: ray <raymond.yang@cottonwoodanalytics.com>
Co-authored-by: Paul Kashofer <soundmodul@gmx.at>
Co-authored-by: Starcommander <starcommander@gmx.at>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Android bug Something that is supposed to work, but doesn't. More severe than a "defect".
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants