On Wed, 2 Jul 2025 21:47:05 GMT, Johan Vos <j...@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

Reply via email to