RFR: 8357714: AudioClip.play crash on macOS when loading resource from jar
Alexander Matveev
almatvee at openjdk.org
Thu Jul 3 21:30:45 UTC 2025
On Wed, 2 Jul 2025 21:47:05 GMT, Johan Vos <jvos at openjdk.org> wrote:
> After JDK-8287822 (https://bugs.openjdk.org/browse/JDK-8287822), mpeg file content is no longer played via GSTPlatform but via OSXPlatform.
> We need to correctly handle data in case the source is a file inside a jar, in which case CJavaInputStreamCallbacks is used.
>
> The 2 changes I made are:
> 1. Use ConnectionHolder instead of Locator for CJavaInputStreamCallbacks in case a jar resource is used.
> 2. In case of random access datasource, use readBlock instead of readNextBlock in AVMediaPlayer
modules/javafx.media/src/main/native/jfxmedia/platform/osx/OSXMediaPlayer.mm line 331:
> 329: CJavaInputStreamCallbacks *callbacks = new (nothrow) CJavaInputStreamCallbacks();
> 330: jobject jConnectionHolder = CLocator::CreateConnectionHolder(env, jLocator);
> 331: if (callbacks == NULL) {
Missing `NULL` check for `jConnectionHolder`. `if (callbacks == NULL || jConnectionHolder == NULL)`
If `callbacks` is not `NULL` it needs to be deleted.
modules/javafx.media/src/main/native/jfxmedia/platform/osx/avf/AVFMediaPlayer.mm line 806:
> 804:
> 805: NSMutableData* readData = nil;
> 806: bool isRandomAccess = locatorStream->GetCallbacks()->IsRandomAccess();
`URIConnectionHolder` always return `false` for "jar" or "jrt" protocol. Why it was added?
-------------
PR Review Comment: https://git.openjdk.org/jfx/pull/1839#discussion_r2183766995
PR Review Comment: https://git.openjdk.org/jfx/pull/1839#discussion_r2183772092
More information about the openjfx-dev
mailing list