I take it there's no way to avoid the resources issue in the old JFX, it's just a plain and simple bug?

I don't know of a way to completely avoid it. As far as we know there aren't any actual leaks in the more recent FX 2.2.x texture code, but the resource disposal is not deterministic and if you hit the limit of texture memory it does not recover gracefully (or at all).

Jim might have more insight, since he implemented the new texture management system for FX 8.;

-- Kevin



Daniel Zwolenski wrote:
This is an older version, probably JFX from around jdk1.7.0_02. I'm running it now on jdk1.7.0_21 to see what happens (takes about an hour to get to the point of failure, which is why I didn't pick it up when I wrote the code originally).

Unfortunately chunks of the system are broken when it runs on this newer code. Lots of backwards compatibility breaks, especially visual ones with CSS that just make it screwy. This is an old project and I don't really want to be touching this code but they have this video capture bug which is killing everything. I take it there's no way to avoid the resources issue in the old JFX, it's just a plain and simple bug?



On Tue, Jun 11, 2013 at 11:10 PM, Kevin Rushforth <kevin.rushfo...@oracle.com <mailto:kevin.rushfo...@oracle.com>> wrote:

    Is this from FX 2.2.x or FX 8? The stack trace suggests an earlier
    version of FX. The only thing I can think of off hand is that the
    HW texture couldn't be created, probably because you ran out of
    resources. There are a few issues relating to this, which we
    believe are fixed in FX 8 with the implementation of RT-25323.

    -- Kevin



    Daniel Zwolenski wrote:

        Can anyone tell me what might cause the exception below in Prism?

        It's from an app that captures video via a native library
        (LTI-CIVIL) and
        then converts that image to JFX display via:

            BufferedImage buffImage =
        AWTImageConverter.toBufferedImage(image);
            jfxImage =
        javafx.scene.image.Image.impl_fromExternalImage(buffImage);
            previewView.setImage(jfxImage);


        java.lang.NullPointerException
        at
        com.sun.prism.impl.BaseGraphics.drawTextureVO(BaseGraphics.java:365)
        at
        com.sun.prism.impl.BaseGraphics.drawTexture(BaseGraphics.java:334)
        at
        com.sun.prism.impl.ps
        
<http://com.sun.prism.impl.ps>.BaseShaderGraphics.drawTexture(BaseShaderGraphics.java:103)
        at
        com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:315)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
        at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
        at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
        at
        com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
        at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
        at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
        at
        com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
        at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
        at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
        at
        com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
        at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
        at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:205)
        at
        com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:185)
        at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
        at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1139)
        at
        com.sun.javafx.tk.quantum.PaintRunnable.doPaint(PaintRunnable.java:214)
        at
        
com.sun.javafx.tk.quantum.PaintRunnable.paintImpl(PaintRunnable.java:145)
        at
        com.sun.javafx.tk.quantum.PaintRunnable.run(PaintRunnable.java:349)
        at
        java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at
        
java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
        at
        java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
        at com.sun.prism.render.RenderJob.run(RenderJob.java:29)
        at
        
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at
        
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at
        
com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:101)
        at java.lang.Thread.run(Thread.java:722)

Reply via email to