[vlc-commits] [Git][videolan/vlc][master] qt: terminate the application on scene graph error in CompositorDirectComposition

Steve Lhomme (@robUx4) gitlab at videolan.org
Sat Nov 23 14:11:17 UTC 2024



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
b01a8797 by Fatih Uzunoglu at 2024-11-23T13:51:07+00:00
qt: terminate the application on scene graph error in CompositorDirectComposition

When scene graph encounters an error, we are already past the latest stage where
recovery is possible. The interface remains nonfunctional in this case, thus the
application must be terminated. This is already done by Qt itself when the signal
is not connected, but in this case we connect to the signal to let the waiting
video thread continue and to print the error.

Note that "If a signal is connected to several slots, the slots are activated in
the same order in which the connections were made". So, in this case exit is going
to be called after the error is printed, which is the intended behavior.

- - - - -


1 changed file:

- modules/gui/qt/maininterface/compositor_dcomp.cpp


Changes:

=====================================
modules/gui/qt/maininterface/compositor_dcomp.cpp
=====================================
@@ -274,8 +274,19 @@ bool CompositorDirectComposition::makeMainInterface(MainCtx* mainCtx)
                 m_setupStateCond.notify_all();
             }, static_cast<Qt::ConnectionType>(Qt::SingleShotConnection | Qt::DirectConnection));
 
-    m_quickView->show();
+    // Qt "terminates the application" by default if there is no connection made to the signal
+    // QQuickWindow::sceneGraphError(). We need to do the same, because by the time the error
+    // is reported, it will likely be too late (`makeMainInterface()` already returned true,
+    // which is the latest point recovery is still possible) to recover from that error and
+    // the interface will remain unfunctional. It was proposed to wait here until the scene
+    // graph is done, but that was not changed in order not to slow down the application
+    // start up.
+    connect(quickViewPtr,
+            &QQuickWindow::sceneGraphError,
+            m_mainCtx,
+            &MainCtx::askToQuit);
 
+    m_quickView->show();
     return true;
 }
 



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/b01a87977a62053928a8010eed1034e23fa4a357

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/b01a87977a62053928a8010eed1034e23fa4a357
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the vlc-commits mailing list