> 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:

  Review comments - MTLTexture: add isValid() check to update(MediaFrame)

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/1951/files
  - new: https://git.openjdk.org/jfx/pull/1951/files/683b6591..10cc7fd7

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=1951&range=04
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=1951&range=03-04

  Stats: 4 lines in 1 file changed: 4 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

Reply via email to