> This PR fixes NPE thrown when trying to update D3D texture in some rare > scenarios. > > On more stressful cases (like the one using Canvas attached to this issue) it > is possible that a D3DTexture.update() call will go through after the > Resource Pool already pruned the underlying Texture's resource. This in turn > caused an NPE, which propagated to higher levels and disrupted the rendering > loop, causing the Canvas to not be drawn anymore. The update() call seems not > to be called more than once on an already freed resource, suggesting this is > some sort of rare race between the pool and the drawing code. > > This change prevents the NPE from being thrown. I noticed no visual problems > with the test even when the update() call is rejected by the newly added > check. Best way to verify it is to add a log call inside added `if > (!resource.isValid())` blocks when running the test, it will occasionally get > printed but the test itself won't change its behavior like it does without > this change.
Lukasz Kostyra has updated the pull request incrementally with one additional commit since the last revision: D3DTextureResource: Set resource to null after disposing ------------- Changes: - all: https://git.openjdk.org/jfx/pull/1951/files - new: https://git.openjdk.org/jfx/pull/1951/files/662f03dd..f7c452e0 Webrevs: - full: https://webrevs.openjdk.org/?repo=jfx&pr=1951&range=01 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1951&range=00-01 Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jfx/pull/1951.diff Fetch: git fetch https://git.openjdk.org/jfx.git pull/1951/head:pull/1951 PR: https://git.openjdk.org/jfx/pull/1951
