On Wed, 2 Jul 2025 21:47:05 GMT, Johan Vos <[email protected]> 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