[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-openjfx-dev
Subject:    Re: RFR: 8239589: JavaFX UI will not repaint after reconnecting via Remote Desktop
From:       Kevin Rushforth <kcr () openjdk ! java ! net>
Date:       2021-02-16 15:45:45
Message-ID: 9wHn5ETuz3xCDDn8097ykOtE0g7jUon2d6FQi9eWwAc=.c384aa85-4026-4194-afc8-73e2cbaa20f7 () github ! com
[Download RAW message or body]

On Thu, 11 Feb 2021 00:17:10 GMT, Kevin Rushforth <kcr@openjdk.org> wrote:

> > I moved it to Draft before noticing that there were additional commits after your \
> > last comment that I had missed seeing earlier, so I moved it back to RFR.
> 
> This is a good starting point, but it will need additional work, possibly in the \
> native D3D code as well as on the Java side, to fully cleanup and recreate all of \
> the resources after the device is recreated. As discussed offline, I'll take a stab \
> at this using your PR as a starting point. 
> I ran some tests this afternoon. It does detect that the devide was removed, and \
> the disposes and recreates the device, but then it has problem drawing anything \
> with a texture; it throws an exception and there are rendering artifacts: 
> KCR: create resource factor for screen 0
> D3DContext::testCooperativeLevel
> D3DContext::testCooperativeLevel
> D3DContext::testCooperativeLevel
> D3DContext::testCooperativeLevel
> D3DContext::testCooperativeLevel
> KCR: D3DERR_DEVICEREMOVED
> KCR: dispose graphics pipeline
> KCR: instance is null: reinitialize D3DPipeline
> Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: \
> Cannot invoke "com.sun.prism.GraphicsPipeline.is3DSupported()" because the return \
> value of "com.sun.prism.GraphicsPipeline.getPipeline()" is null  at \
> javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.isSupported(QuantumToolkit.java:1209)
>   at javafx.graphics/com.sun.javafx.application.PlatformImpl.isSupportedImpl(PlatformImpl.java:979)
>   at javafx.graphics/com.sun.javafx.application.PlatformImpl.isSupported(PlatformImpl.java:646)
>   at javafx.graphics/javafx.application.Platform.isSupported(Platform.java:262)
> 	at javafx.graphics/com.sun.javafx.scene.input.PickResultChooser.processOffer(PickResultChooser.java:182)
>   at javafx.graphics/com.sun.javafx.scene.input.PickResultChooser.offer(PickResultChooser.java:143)
>   at javafx.graphics/javafx.scene.Node.intersects(Node.java:5229)
> 	at javafx.graphics/javafx.scene.Node$1.intersects(Node.java:553)
> 	at javafx.graphics/com.sun.javafx.scene.NodeHelper.intersects(NodeHelper.java:258)
> 	at javafx.graphics/javafx.scene.layout.Region.doPickNodeLocal(Region.java:3227)
> ...
> 	at javafx.graphics/javafx.scene.Scene.pick(Scene.java:2031)
> 	at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3810)
> 	at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1851)
> 	at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2584)
>   at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
>   at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
>   at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
>   at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
>   at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:413)
>   at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
>   at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
> 	at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
> 	at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
> 	at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
>   at java.base/java.lang.Thread.run(Thread.java:832)
> ...
> KCR: create resource factor for screen 0
> D3DContext::testCooperativeLevel
> D3DContext::testCooperativeLevel
> KCR: dispose graphics pipeline
> ![HelloFontSize](https://user-images.githubusercontent.com/34689748/107589656-568bf000-6bbb-11eb-9c0d-bea50b190d4d.png)
> 

I created PR #403 using this as a starting point, so I am moving this PR back to \
draft (and it probably can be closed).

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

PR: https://git.openjdk.java.net/jfx/pull/315


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic