Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-140833

[REG 6.8->6.9] Destroying QRhiSwapChain blocks window update events

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P1: Critical P1: Critical
    • None
    • 6.9.0, 6.10.0 RC
    • QPA: Windows, Qt RHI
    • None
    • Windows

      The following call sequence causes QWindow to no longer deliver QEvent::UpdateRequest:

      1. QRhiSwapChain::setWindow(window)
      2. QRhiSwapChain::createOrResize()
        1. QD3D11SwapChain::createOrResize()
          1. QDxgiVSyncService::registerWindow(window)
      3. QWindow::requestUpdate()
        1. QWindowsWindow::requestUpdate()
          1. QDxgiVSyncService::registerCallback()
        2. QWindowPrivate::updateRequestPending = true;
      4. QRhiSwapChain::destroy()
        1. QD3D11SwapChain::destroy()
          1. QDxgiVSyncService::unregisterWindow(window)
      5. (Since the window has been removed from the QDxgiVSyncService's window list, QPlatformWindow::deliverUpdateRequest() for that window will not be called.)
      6. Further QWindow::requestUpdate() calls...
        1. Update request is pending, so do nothing.

      This issue only occurs when QRhi is using the D3D11 or D3D12 backend.

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            owolff Oliver Wolff
            gpbeta Joshua GPBeta
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes