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

JavaFX D3D12: Crash when entering fullscreen via ALT+ENTER

XMLWordPrintable

    • generic
    • windows

      Since D3D12, you can enter fullscreen mode via ALT+ENTER.

      Note: This behavior can be disabled in DXGI. Godot did that for example, can be seen here: https://github.com/godotengine/godot/blob/master/drivers/d3d12/rendering_device_driver_d3d12.cpp#L2852

      The exception, that will also lead to a crash:

      java.lang.NullPointerException: D3D12 swapchain is NULL
          at javafx.graphics@25-direct3d12/com.sun.prism.d3d12.D3D12SwapChain.<init>(D3D12SwapChain.java:66)
          at javafx.graphics@25-direct3d12/com.sun.prism.d3d12.D3D12SwapChain.create(D3D12SwapChain.java:78)
          at javafx.graphics@25-direct3d12/com.sun.prism.d3d12.D3D12ResourceFactory.createPresentable(D3D12ResourceFactory.java:338)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.PresentingPainter.run(PresentingPainter.java:81)
          at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:545)
          at java.base/java.util.concurrent.FutureTask.runAndReset$$$capture(FutureTask.java:369)
          at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java)
          at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger)
          at java.base/java.util.concurrent.FutureTask.<init>(FutureTask.java:153)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.RenderJob.<init>(RenderJob.java:45)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.PaintCollector.lambda$liveRepaintRenderJob$2(PaintCollector.java:330)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.PaintCollector.liveRepaintRenderJob(PaintCollector.java:329)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.GlassViewEventHandler$ViewEventNotification.get(GlassViewEventHandler.java:810)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.GlassViewEventHandler$ViewEventNotification.get(GlassViewEventHandler.java:770)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:424)
          at javafx.graphics@25-direct3d12/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleViewEvent(GlassViewEventHandler.java:850)
          at javafx.graphics@25-direct3d12/com.sun.glass.ui.View.handleViewEvent(View.java:543)
          at javafx.graphics@25-direct3d12/com.sun.glass.ui.View.notifyResize(View.java:884)
          at javafx.graphics@25-direct3d12/com.sun.glass.ui.win.WinView.notifyResize(WinView.java:91)
          at javafx.graphics@25-direct3d12/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
          at javafx.graphics@25-direct3d12/com.sun.glass.ui.win.WinApplication.lambda$runLoop$0(WinApplication.java:168)
          at java.base/java.lang.Thread.run(Thread.java:1474)

      > Process finished with exit code -1073740771 (0xC000041D)

      Simple reproducer, just press ALT+ENTER:

      import javafx.application.Application;
      import javafx.scene.Scene;
      import javafx.scene.layout.BorderPane;
      import javafx.stage.Stage;

      public class FullScreenBug {

          public static void main(String[] args) {
              Application.launch(FxApp.class, args);
          }

          public static class FxApp extends Application {

              @Override
              public void start(Stage primaryStage) {
                  BorderPane root = new BorderPane();

                  Scene scene = new Scene(root, 1280, 540);
                  primaryStage.setScene(scene);
                  primaryStage.show();
              }
          }

      }

            lkostyra Lukasz Kostyra
            mhanl Marius Hanl
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: