Thanks for the feedback,

Running it on jdk1.7.0_21-32bit I don't see that error any more (though I
am still having camera capture issues when integrating LTI CIVIL into JFX -
still trying to narrow down where the fault lies).

I do get this error however, but it seems to recover from it.

java.lang.NullPointerException
at
com.sun.prism.impl.BaseResourceFactory.clearTextureCache(BaseResourceFactory.java:47)
at
com.sun.prism.impl.BaseResourceFactory.getCachedTexture(BaseResourceFactory.java:102)
at com.sun.javafx.sg.prism.NGImageView.renderContent(NGImageView.java:115)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGImageView.doRender(NGImageView.java:97)
at com.sun.javafx.sg.prism.NGImageView.doRender(NGImageView.java:20)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at
com.sun.javafx.sg.prism.NodeEffectInput.getImageDataForBoundedNode(NodeEffectInput.java:192)
at com.sun.javafx.sg.prism.NodeEffectInput.filter(NodeEffectInput.java:85)
at com.sun.scenario.effect.FilterEffect.filter(FilterEffect.java:167)
at com.sun.scenario.effect.Offset.filter(Offset.java:161)
at com.sun.scenario.effect.Merge.filter(Merge.java:147)
at com.sun.scenario.effect.DelegateEffect.filter(DelegateEffect.java:68)
at
com.sun.scenario.effect.impl.prism.PrEffectHelper.render(PrEffectHelper.java:156)
at com.sun.javafx.sg.prism.NGNode$EffectFilter.render(NGNode.java:748)
at com.sun.javafx.sg.prism.NGNode.renderEffect(NGNode.java:494)
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:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.sg.prism.NGGroup.renderContent(NGGroup.java:204)
at com.sun.javafx.sg.prism.NGRegion.renderContent(NGRegion.java:420)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:187)
at com.sun.javafx.sg.prism.NGNode.doRender(NGNode.java:39)
at com.sun.javafx.sg.BaseNode.render(BaseNode.java:1145)
at com.sun.javafx.tk.quantum.ViewPainter.doPaint(ViewPainter.java:117)
at
com.sun.javafx.tk.quantum.AbstractPainter.paintImpl(AbstractPainter.java:181)
at
com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:73)
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:37)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at
com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:98)
at java.lang.Thread.run(Thread.java:722)


On Wed, Jun 12, 2013 at 12:55 AM, Kevin Rushforth <
kevin.rushfo...@oracle.com> wrote:

> **
>
> 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> 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
>>> .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