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