> In some situations, a part of the SG is no longer rendered.
> I created a test program that showcases this problem.
> 
> Explanation:
> 
> This can happen, when a part of the SG, is covered by another Node.
> In this part, one node is totally covered, and the other node is visible.
> 
> When the totally covered Node is changed, then it is marked dirty and it's 
> parent, recursively until an already dirty node is found.
> Due to the Culling, this totally covered Node is not rendered - with the 
> effect that the tree is never marked as Clean.
> 
> In this state, a Node is Dirty but not It's parent. Based on my CodeReview, 
> this is an invalid state which should never happen.
> 
> In this invalid state, when the other Node is changed, which is visible, then 
> the dirty state is no longer propagated upwards - because the recursive 
> "NGNode.markTreeDirty" algorithm encounters a dirty node early.
> 
> This has the effect, that any SG changes in the visible Node are no longer 
> rendered. Sometimes the situation repairs itself.
> 
> Useful parameters for further investigations:
> -Djavafx.pulseLogger=true
> -Dprism.printrendergraph=true
> -Djavafx.pulseLogger.threshold=0
> 
> PR:
> This PR ensures the dirty flag is set to false of the tree when the culling 
> is used.
> It doesn't seem to break any existing tests - but I'm not sure whether this 
> is the right way to fix it.
> It would be great to have some feedback on this solution - maybe guiding me 
> to a better solution.
> 
> I could write a test, that just does the same thing as the test application, 
> but checks every frame that these nodes are not dirty - but maybe there is a 
> better way to test this.

Florian Kirmaier has updated the pull request incrementally with one additional 
commit since the last revision:

  JDK-8322619: Adjust test: remove Thread.sleep(), runAndWait()

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

Changes:
  - all: https://git.openjdk.org/jfx/pull/1310/files
  - new: https://git.openjdk.org/jfx/pull/1310/files/e3163f30..b23c0838

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

  Stats: 31 lines in 1 file changed: 6 ins; 4 del; 21 mod
  Patch: https://git.openjdk.org/jfx/pull/1310.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1310/head:pull/1310

PR: https://git.openjdk.org/jfx/pull/1310

Reply via email to