Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8100964

WebView requests too many repaints

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • 7u6
    • fx2.0
    • javafx
    • None
    • web

      During investigation of instability of JFX_FPS counter for WebNode.GUIMark2-Text test I've found that sometimes
      WebNode marks itself as dirty too often. Here is a log which shows what we have.
      At one pulse StageTKPulseListener reqistered in WebView marks the WebView as dirty since page.isDirty() returns true,
      and FX render all dirty areas WebView has in this pulse. But on next pulse .WebPage.fwkRepain() mark the WebView
      as dirty again (though it looks like there is no dirty regions), and FX again (tries to) render WebView (and this time we have
      nothing to render, but this is counted as one more rendered fread by PerformanceTracker).

      It looks like there is some timing between pulse and .WebPage.fwkRepain() call, since not always it is called on different pulse.
      Anyway it is worth to investigate/fix this problem. Before this moment we will consider JFX_FPS useless for WebNode.GUIMark2-Text test.


           [java] pulse started
           [java] CF.addDirtyScene: 17691874 (1920,1170)
           [java] java.lang.Exception: Stack trace
           [java] at java.lang.Thread.dumpStack(Thread.java:1249)
           [java] at com.sun.javafx.tk.quantum.CollectedFuture.addDirtyScene(CollectedFuture.java:83)
           [java] at com.sun.javafx.tk.quantum.GlassScene.sceneChanged(GlassScene.java:266)
           [java] at com.sun.javafx.tk.quantum.ViewScene.sceneChanged(ViewScene.java:119)
           [java] at com.sun.javafx.tk.quantum.GlassScene.markDirty(GlassScene.java:133)
           [java] at javafx.scene.Scene.addToDirtyList(Scene.java:330)
           [java] at javafx.scene.Node.impl_markDirty(Node.java:300)
           [java] at javafx.scene.web.WebView.access$300(WebView.java:46)
           [java] at javafx.scene.web.WebView$3.pulse(WebView.java:190)
           [java] at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:249)
           [java] at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:361)
           [java] at com.sun.javafx.tk.quantum.QuantumToolkit$10.run(QuantumToolkit.java:296)
           [java] at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
           [java] at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
           [java] at com.sun.glass.ui.win.WinApplication$1$1.run(WinApplication.java:49)
           [java] at java.lang.Thread.run(Thread.java:662)
           [java] CF.repaintAll: #work: 1
           [java] clip: WCRectangle{x:0.0 y:0.0 w:1200.0 h:41.0}
           [java] clip: WCRectangle{x:0.0 y:30.0 w:903.0 h:602.0}
           [java] clip: WCRectangle{x:900.0 y:30.0 w:302.0 h:602.0}
           [java] CF.renderComplete: 17691874 (1920,1170)
           [java] calcFps()
           [java] pulse finished
           [java] pulse started
           [java] CF.addDirtyScene: 17691874 (1920,1170)
           [java] java.lang.Exception: Stack trace
           [java] at java.lang.Thread.dumpStack(Thread.java:1249)
           [java] at com.sun.javafx.tk.quantum.CollectedFuture.addDirtyScene(CollectedFuture.java:83)
           [java] at com.sun.javafx.tk.quantum.GlassScene.sceneChanged(GlassScene.java:266)
           [java] at com.sun.javafx.tk.quantum.ViewScene.sceneChanged(ViewScene.java:119)
           [java] at com.sun.javafx.tk.quantum.GlassScene.markDirty(GlassScene.java:133)
           [java] at javafx.scene.Scene.addToDirtyList(Scene.java:330)
           [java] at javafx.scene.Node.impl_markDirty(Node.java:300)
           [java] at javafx.scene.web.WebView.impl_repaint(WebView.java:630)
           [java] at com.sun.webpane.sg.WebPageClientImpl.repaint(WebPageClientImpl.java:33)
           [java] at com.sun.webpane.platform.WebPage.fwkRepaint(WebPage.java:1783)
           [java] at com.sun.webpane.webkit.Timer.twkFireTimerEvent(Native Method)
           [java] at com.sun.webpane.webkit.Timer.fireTimerEvent(Timer.java:62)
           [java] at com.sun.webpane.webkit.Timer.notifyTick(Timer.java:43)
           [java] at javafx.scene.web.WebEngine$PulseTimer$2.pulse(WebEngine.java:92)
           [java] at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:253)
           [java] at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:361)
           [java] at com.sun.javafx.tk.quantum.QuantumToolkit$10.run(QuantumToolkit.java:296)
           [java] at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
           [java] at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
           [java] at com.sun.glass.ui.win.WinApplication$1$1.run(WinApplication.java:49)
           [java] at java.lang.Thread.run(Thread.java:662)
           [java] CF.repaintAll: #work: 1
           [java] CF.renderComplete: 17691874 (1920,1170)
           [java] calcFps()
           [java] pulse finished

            ant Anton Tarasov (Inactive)
            son Oleg Sukhodolsky (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported: