Skip to content
Snippets Groups Projects
Commit b01a8797 authored by Fatih Uzunoğlu's avatar Fatih Uzunoğlu Committed by Steve Lhomme
Browse files

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.
parent 7c9fef82
No related branches found
No related tags found
1 merge request!6368qt: terminate the application on scene graph error in CompositorDirectComposition
Pipeline #537398 passed with stage
in 14 minutes and 26 seconds
......@@ -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;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment