RFR: 8239589: JavaFX UI will not repaint after reconnecting via Remote Desktop

Oliver Schmidtmer github.com+10960818+schmidor at openjdk.java.net
Tue Oct 13 16:25:11 UTC 2020


On Fri, 9 Oct 2020 23:17:27 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

>> The full recreation of the pipeline is only done when D3DERR_DEVICEREMOVED is occurring. On other causes of why the
>> device is not ready, only the factory reference in the painter is cleared.
>
>> The full recreation of the pipeline is only done when D3DERR_DEVICEREMOVED is occurring
> 
> I see that now. That part is fine then.
> 
> Another concern is that this would be the first time we have recreated a GraphicsPipeline -- they are effectively
> singletons today. This could have unexpected side effects and would need to be very carefully reviewed and tested.
> Have you considered an alternative where you retain the GraphicsPipeline, but recreate the native device?

I hope I understood your intend. I've tried to replace the recreation of the GraphicsPipeline-Instance by only calling
the native parts. Unfortunately that doesn't seem to work at all. Probably I'm missing some updates.
    public boolean reinit() {
        if (d3dEnabled) {
            if (creator != Thread.currentThread()) {
                throw new IllegalStateException(
                        "This operation is not permitted on the current thread ["
                                + Thread.currentThread().getName() + "]");
            }
            notifyAllResourcesReleased();
            nDispose();
            for (int i = 0; i != factories.length; ++i) {
                factories[i] = null;
            }
            nInit(PrismSettings.class);
            factories = new D3DResourceFactory[nGetAdapterCount()];
        }
        return d3dEnabled;
    }

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

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


More information about the openjfx-dev mailing list